6.10.1 スナップショット・ベースのバックアップを使用したKVMホストのバックアップ

この手順は、KVMホストのスナップショット・ベースのバックアップを作成する方法を示しています。

次のステップに示す値は例です。実際の状況に応じて、別の値に置き換えることが必要になる場合があります。

rootユーザーとして、すべてのステップを実行する必要があります。

  1. バックアップの保存先を準備します。

    バックアップ先は、書込み可能なNFSの場所など、ローカル・マシンの外部に存在するようにし、バックアップを保持できる十分な大きさにする必要があります。カスタマイズされていないパーティションの場合、バックアップを保持するのに必要な領域は約50GBです。

    次のコマンドを使用すると、NFSを使用してバックアップ先を準備できます。

    # mkdir -p /root/remote_FS
    # mount -t nfs -o rw,intr,soft,proto=tcp,nolock ip_address:/nfs_location/ /root/remote_FS

    mountコマンドで、ip_addressはNFSサーバーのIPアドレス、nfs_locationはバックアップを保持するNFSの場所です。

  2. LVDoNotRemoveOrUse論理ボリュームを削除します。

    論理ボリューム/dev/VGExaDb/LVDoNotRemoveOrUseは、スナップショットを作成できるだけの空き領域を常に確保するためのプレースホルダです。

    次のスクリプトを使用してLVDoNotRemoveOrUse論理ボリュームの有無をチェックし、存在する場合は削除します。

    lvm lvdisplay --ignorelockingfailure /dev/VGExaDb/LVDoNotRemoveOrUse
    if [ $? -eq 0 ]; then 
      # LVDoNotRemoveOrUse logical volume exists. 
      lvm lvremove -f /dev/VGExaDb/LVDoNotRemoveOrUse 
      if [ $? -ne 0 ]; then 
        echo "Unable to remove logical volume: LVDoNotRemoveOrUse. Do not proceed with backup." 
      fi
    fi

    LVDoNotRemoveOrUse論理ボリュームが存在しない場合は、残りのステップには進まずに、その理由を特定します。

  3. アクティブなシステム・ボリュームを特定します。
    imageinfoコマンドを使用して、アクティブなシステム・パーティションをホストしているデバイスを調べることができます。
    # imageinfo
    
    Kernel version: 4.14.35-1902.5.1.4.el7uek.x86_64 #2 SMP Wed Oct 9 19:29:16 PDT 2019 x86_64
    Image kernel version: 4.14.35-1902.5.1.4.el7uek
    Image version: 19.3.1.0.0.191018
    Image activated: 2019-11-04 19:18:32 -0800
    Image status: success
    Node type: KVMHOST
    System partition on device: /dev/mapper/VGExaDb-LVDbSys1

    imageinfoの出力では、システム・パーティション・デバイスは、アクティブなルート(/)ファイル・システムをサポートする論理ボリュームの名前で終わります。使用しているシステム・イメージに応じて、論理ボリューム名はLVDbSys1またはLVDbSys2です。同様に、/varファイル・システムの論理ボリュームは、LVDbVar1またはLVDbVar2です。

    また、df -hTコマンドを使用し、ルート(/)および/varファイル・システムに関連付けられている出力を調べることで、アクティブなデバイスを確認することもできます。次に例を示します:

    # df -hT
    Filesystem                          Type      Size  Used Avail Use% Mounted on
    devtmpfs                            devtmpfs  378G     0  378G   0% /dev
    tmpfs                               tmpfs     755G  1.0G  754G   1% /dev/shm
    tmpfs                               tmpfs     378G  4.8M  378G   1% /run
    tmpfs                               tmpfs     378G     0  378G   0% /sys/fs/cgroup
    /dev/mapper/VGExaDb-LVDbSys1        xfs        15G  7.7G  7.4G  52% /
    /dev/sda1                           xfs       510M  112M  398M  22% /boot
    /dev/sda2                           vfat      254M  8.5M  246M   4% /boot/efi
    /dev/mapper/VGExaDb-LVDbHome        xfs       4.0G   33M  4.0G   1% /home
    /dev/mapper/VGExaDb-LVDbVar1        xfs       2.0G  139M  1.9G   7% /var
    /dev/mapper/VGExaDb-LVDbVarLog      xfs        18G  403M   18G   3% /var/log
    /dev/mapper/VGExaDb-LVDbVarLogAudit xfs      1014M  143M  872M  15% /var/log/audit
    /dev/mapper/VGExaDb-LVDbTmp         xfs       3.0G  148M  2.9G   5% /tmp
    /dev/mapper/VGExaDb-LVDbOra1        xfs       100G   32G   69G  32% /u01
    tmpfs                               tmpfs      76G     0   76G   0% /run/user/0

    この手順の残りの例では、前述のimageinfoおよびdfの出力と一致するLVDbSys1LVDbVar1を使用します。ただし、アクティブなイメージでLVDbSys2が使用されている場合は、この後のステップの例を変更して、LVDbSys1のかわりにLVDbSys2を使用し、LVDbVar1のかわりにLVDbVar2を使用してください。

  4. サーバー上の論理ボリュームのスナップショットを取得します。

    前のステップで識別したアクティブなシステム・パーティションに応じて、必ず、LVDbSys1またはLVDbSys2を使用してルート(/)ファイル・システムの論理ボリュームを識別し、同様にLVDbVar1またはLVDbVar2を使用して/varファイル・システムの論理ボリュームを識別してください。

    # lvcreate -L1G -s -c 32K -n root_snap /dev/VGExaDb/LVDbSys1
    # lvcreate -L1G -s -c 32K -n home_snap /dev/VGExaDb/LVDbHome
    # lvcreate -L1G -s -c 32K -n var_snap /dev/VGExaDb/LVDbVar1
    # lvcreate -L1G -s -c 32K -n varlog_snap /dev/VGExaDb/LVDbVarLog
    # lvcreate -L1G -s -c 32K -n audit_snap /dev/VGExaDb/LVDbVarLogAudit
    # lvcreate -L1G -s -c 32K -n tmp_snap /dev/VGExaDb/LVDbTmp
  5. スナップショットにラベルを付けます。
    # xfs_admin -L DBSYS_SNAP /dev/VGExaDb/root_snap
    # xfs_admin -L HOME_SNAP /dev/VGExaDb/home_snap
    # xfs_admin -L VAR_SNAP /dev/VGExaDb/var_snap
    # xfs_admin -L VARLOG_SNAP /dev/VGExaDb/varlog_snap
    # xfs_admin -L AUDIT_SNAP /dev/VGExaDb/audit_snap
    # xfs_admin -L TMP_SNAP /dev/VGExaDb/tmp_snap
  6. スナップショットをマウントします。
    すべてのスナップショットを共通のディレクトリの場所(/root/mntなど)の下にマウントします。
    # mkdir -p /root/mnt
    # mount -t xfs -o nouuid /dev/VGExaDb/root_snap /root/mnt
    # mkdir -p /root/mnt/home
    # mount -t xfs -o nouuid /dev/VGExaDb/home_snap /root/mnt/home
    # mkdir -p /root/mnt/var
    # mount -t xfs -o nouuid /dev/VGExaDb/var_snap /root/mnt/var
    # mkdir -p /root/mnt/var/log
    # mount -t xfs -o nouuid /dev/VGExaDb/varlog_snap /root/mnt/var/log
    # mkdir -p /root/mnt/var/log/audit
    # mount -t xfs -o nouuid /dev/VGExaDb/audit_snap /root/mnt/var/log/audit
    # mkdir -p /root/mnt/tmp
    # mount -t xfs -o nouuid /dev/VGExaDb/tmp_snap /root/mnt/tmp
  7. スナップショットをバックアップします。
    次のコマンドを使用して、準備したNFSバックアップ先にバックアップを圧縮アーカイブ・ファイルとして書き込みます。
    # cd /root/mnt
    # tar --acls --xattrs --xattrs-include=* --format=pax -pjcvf /root/remote_FS/myKVMbackup.tar.bz2 * /boot > /tmp/backup_tar.stdout 2> /tmp/backup_tar.stderr
  8. /tmp/backup_tar.stderrファイルをチェックして、重大なエラーがないかを確認します。
    オープン・ソケットのアーカイブの失敗に関するエラーおよび他の同様のエラーは無視できます。
  9. すべてのスナップショットをアンマウントし、削除します。
    # cd /
    # umount /root/mnt/tmp
    # umount /root/mnt/var/log/audit
    # umount /root/mnt/var/log
    # umount /root/mnt/var
    # umount /root/mnt/home
    # umount /root/mnt
    # lvremove /dev/VGExaDb/tmp_snap
    # lvremove /dev/VGExaDb/audit_snap
    # lvremove /dev/VGExaDb/varlog_snap
    # lvremove /dev/VGExaDb/var_snap
    # lvremove /dev/VGExaDb/home_snap
    # lvremove /dev/VGExaDb/root_snap
  10. NFSバックアップ先をアンマウントします。
    # umount /root/remote_FS
  11. この手順中に作成したマウント・ポイント・ディレクトリを削除します。
    # rm -r /root/mnt
    # rmdir /root/remote_FS
  12. 論理ボリューム/dev/VGExaDb/LVDoNotRemoveOrUseを再作成します。
    # lvm lvcreate -n LVDoNotRemoveOrUse -L2G VGExaDb -y