6.10.2.2 方法2: 個々のゲストのバックアップ
/EXAVMIMAGES
の下にある特定のフォルダをバックアップすることで、個々のゲストをバックアップできます。
バックアップ先は、書込み可能なNFSの場所など、KVMホスト・サーバーとは別の場所で、バックアップを保持できる十分な大きさにする必要があります。個々のゲストのバックアップに必要な領域は、約200GBです。
- ゲスト・イメージを準備します。
次のスクリプトを使用して、
/EXAVMIMAGES/Backup
の下で、ゲスト・イメージのバックアップを準備します。#!/bin/bash ScriptStarttime=$(date +%s) printf "This script is going to remove the directory /EXAVMIMAGES/Backup if it exists. If that is not acceptable, exit the script by typing n, manually remove /EXAVMIMAGES/Backup and come back to rerun the script. Otherwise, press y to continue :" read proceed if [[ ${proceed} == "n" ]] || [[ ${proceed} == "N" ]] then exit 0 elif [[ ${proceed} != "n" ]] && [[ ${proceed} != "N" ]] && [[ ${proceed} != "y" ]] && [[ ${proceed} != "Y" ]] then echo "Invalid input" exit 1 fi rm -rf /EXAVMIMAGES/Backup printf "Enter the name of the KVM guest to be backed up :" read KVMGuestName ## Create the Backup Directory if [ ! -d /EXAVMIMAGES/GuestImages/${KVMGuestName} ] then echo "Guest ${KVMGuestName} does not exist" exit 1 fi mkdirStartTime=$(date +%s) find /EXAVMIMAGES/GuestImages/${KVMGuestName} -type d|grep -v 'lost+found'|awk '{print "mkdir -p /EXAVMIMAGES/Backup"$1}'|sh mkdir -p /EXAVMIMAGES/Backup/XML mkdirEndTime=$(date +%s) mkdirTime=$(expr ${mkdirEndTime} - ${mkdirStartTime}) echo "Backup Directory creation time :" ${mkdirTime}" seconds" cp /etc/libvirt/qemu/${KVMGuestName}.xml /EXAVMIMAGES/Backup/XML ## Pause the guest PauseStartTime=$(date +%s) virsh suspend ${KVMGuestName} PauseEndTime=$(date +%s) PauseTime=$(expr ${PauseEndTime} - ${PauseStartTime}) echo "PauseTime for guest - ${KVMGuestName} :" ${PauseTime}" seconds" ## Create reflinks for all the files in /EXAVMIMAGES/GuestImages/${KVMGuestName} relinkStartTime=$(date +%s) find /EXAVMIMAGES/GuestImages/${KVMGuestName} -type f|awk '{print "cp --reflink", $0,"/EXAVMIMAGES/Backup"$0}'|sh relinkEndTime=$(date +%s) reflinkTime=$(expr ${relinkEndTime} - ${relinkStartTime}) echo "Reflink creation time for guest - ${KVMGuestName} :" ${reflinkTime}" seconds" ## Unpause the guest unPauseStartTime=$(date +%s) virsh resume ${KVMGuestName} unPauseEndTime=$(date +%s) unPauseTime=$(expr ${unPauseEndTime} - ${unPauseStartTime}) echo "unPauseTime for guest - ${KVMGuestName} :" ${unPauseTime}" seconds" ScriptEndtime=$(date +%s) ScriptRunTime=$(expr ${ScriptEndtime} - ${ScriptStarttime}) echo ScriptRunTime ${ScriptRunTime}" seconds"
- ゲスト・イメージのバックアップを作成します。
/EXAVMIMAGES/Backup
の下のreflinkファイルをリモートの場所にバックアップします。KVMホストが恒久的に破損したり紛失した場合は、バックアップを使用して特定のゲストをリストアできます。次に例を示します:
# mkdir -p /remote_FS # mount -t nfs -o rw,intr,soft,proto=tcp,nolock ip_address:/nfs_location/ /remote_FS # cd /EXAVMIMAGES/Backup # tar --acls --xattrs --xattrs-include=* --format=pax -pjcvf /remote_FS/exavmimage.tar.bz2 * > /tmp/exavmimage_tar.stdout 2> /tmp/exavmimage_tar.stderr
mount
コマンドで、ip_addressはNFSサーバーのIPアドレス、nfs_locationはバックアップを保持するNFSの場所です。この例では、バックアップ・ファイルの名前は
exavmimage.tar.bz2
です。別の名前を選択して、バックアップするゲストを指定することもできます。バックアップの完了後に、
tar
コマンドから、重大なエラーがないかを確認します。前述の例では、tar
コマンドによって、/tmp/exavmimage_tar.stderr
のファイルにエラーが書き込まれます。 /EXAVMIMAGES/Backup
ディレクトリとその内容を削除します。次に例を示します:
# cd / # rm -rf /EXAVMIMAGES/Backup
- NFSバックアップの場所をアンマウントして、マウント・ポイント・ディレクトリを削除します。
次に例を示します:
# umount /remote_FS # rmdir /remote_FS
親トピック: Oracle Linux KVMゲストのバックアップ