Creating backups of running Vms in XenServer(XenServerで実行中の仮想マシンのバックアップを作成)
3946 ワード
With XenServer it is possible to create backups of VMs, even if they are running. The process is as follows:
#XenServerでは、実行中であってもバックアップ用の仮想マシンを作成できます.手順は次のとおりです. Search for the uuid of the Vms to backup#バックアップが必要なvmsを検索するuuid Createa snapshot of each(running)VM#実行するVMごとにスナップショット を作成する保存the snapshot to file#スナップショットをファイル に保存 Remove the created snapshot#作成したスナップショットを削除 First look for the
uuid of the VMs to backup. We don’t want to backup the control domain itself, so we add
is-control-domain=false to the
vm-list command and we also don’t want backups of snapshots so we add
is-a-snapshot=false:
#まず、バックアップが必要なVmsのuuidを表示します.制御ドメイン自体をバックアップしたくないので、vm-listリストでコマンドis-control-domain=falseを使用して制御ドメインを偽に設定し、スナップショットをバックアップしたくないので、コマンドis-a-snapshot=falseを使用してスナップショットを偽に設定します.
Now we create a snapshot of the VMs we want to backup, replacing the
uuid
one by one with the ones we found with the previous command. Also replace the name of the snapshot if desired
#次に、バックアップしたいVmsのスナップショットを作成します.各交換uuidは、コマンドで見つけたuuidと、必要に応じて同僚がスナップショットの名前を変更します.
This command has a return value: the
uuid of the created snapshot. Then we transform the snapshot into a VM to be able to save it to a file, replacing
uuid with the return value of the previous command:
#このコマンドには戻り値があります.スナップショットのuuidを作成し、仮想マシンのスナップショットを変換してファイルに保存し、uuidと前のコマンドの戻り値を交換します.
In the next step we save the snapshot to a file, replacing
uuid with the snapshot
uuid and providing a meaningful
filename:
#次に、スナップショットをファイルに保存し、uuidをスナップショットのuuidに置き換え、意味のあるファイル名を指定します.
In the final step we delete the snapshot:
最後のステップでは、このスナップショットを削除します.
Python is installed by default on XenServer hosts, so the following script will work out of the box. Download the script from this location to save it to your XenServer host, replacing the .txt extension with .py.
#pythonで作成したスクリプトを次に示します.
#XenServerでは、実行中であってもバックアップ用の仮想マシンを作成できます.手順は次のとおりです.
uuid of the VMs to backup. We don’t want to backup the control domain itself, so we add
is-control-domain=false to the
vm-list command and we also don’t want backups of snapshots so we add
is-a-snapshot=false:
#まず、バックアップが必要なVmsのuuidを表示します.制御ドメイン自体をバックアップしたくないので、vm-listリストでコマンドis-control-domain=falseを使用して制御ドメインを偽に設定し、スナップショットをバックアップしたくないので、コマンドis-a-snapshot=falseを使用してスナップショットを偽に設定します.
xe vm-list is-control-domain=false is-a-snapshot=false
Now we create a snapshot of the VMs we want to backup, replacing the
uuid
one by one with the ones we found with the previous command. Also replace the name of the snapshot if desired
#次に、バックアップしたいVmsのスナップショットを作成します.各交換uuidは、コマンドで見つけたuuidと、必要に応じて同僚がスナップショットの名前を変更します.
xe vm-snapshot uuid=d61bfc1a-33b2-5406-7ea5-76e4f7113220 new-name-label=snapshotname
This command has a return value: the
uuid of the created snapshot. Then we transform the snapshot into a VM to be able to save it to a file, replacing
uuid with the return value of the previous command:
#このコマンドには戻り値があります.スナップショットのuuidを作成し、仮想マシンのスナップショットを変換してファイルに保存し、uuidと前のコマンドの戻り値を交換します.
xe template-param-set is-a-template=false ha-always-run=false uuid=b759625c-eab5-4e0f-be5e-a05bcbad869a
In the next step we save the snapshot to a file, replacing
uuid with the snapshot
uuid and providing a meaningful
filename:
#次に、スナップショットをファイルに保存し、uuidをスナップショットのuuidに置き換え、意味のあるファイル名を指定します.
xe vm-export vm=b759625c-eab5-4e0f-be5e-a05bcbad869a filename=filename.xva
In the final step we delete the snapshot:
最後のステップでは、このスナップショットを削除します.
xe vm-uninstall uuid=b759625c-eab5-4e0f-be5e-a05bcbad869a force=true
Python is installed by default on XenServer hosts, so the following script will work out of the box. Download the script from this location to save it to your XenServer host, replacing the .txt extension with .py.
#pythonで作成したスクリプトを次に示します.
#!/usr/bin/python
import commands, time
def get_backup_vms():
result = []
cmd = "xe vm-list is-control-domain=false is-a-snapshot=false"
output = commands.getoutput(cmd)
for vm in output.split("
"):
lines = vm.splitlines()
uuid = lines[0].split(":")[1][1:]
name = lines[1].split(":")[1][1:]
result += [(uuid, name)]
return result
def backup_vm(uuid, filename, timestamp):
cmd = "xe vm-snapshot uuid=" + uuid + " new-name-label=" + timestamp
snapshot_uuid = commands.getoutput(cmd)
cmd = "xe template-param-set is-a-template=false ha-always-run=false uuid=" +
snapshot_uuid
commands.getoutput(cmd)
cmd = "xe vm-export vm=" + snapshot_uuid + " filename=" + filename
commands.getoutput(cmd)
cmd = "xe vm-uninstall uuid=" + snapshot_uuid + " force=true"
commands.getoutput(cmd)
for (uuid, name) in get_backup_vms():
timestamp = time.strftime("%Y%m%d-%H%M", time.gmtime())
print timestamp, uuid, name
filename = "\"" + timestamp + " " + name + ".xva\""
backup_vm(uuid, filename, timestamp)