Creating backups of running Vms in XenServer(XenServerで実行中の仮想マシンのバックアップを作成)


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を使用してスナップショットを偽に設定します.
    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)