スタンドアロンのESXiで仮想マシンのバックアップを取得する


スタンドアロンのESXi(vCenter Serverで管理されていないもの)上で稼働する仮想マシンをバックアップする方法をまとめてみる。

本記事における方式選定の観点は次の通り。

  • 無償であること
  • 仮想マシンを起動したままバックアップできること

検討

ネット上の情報、VMware Communityの情報から見つかった方式は次の通り。

  • バックアップソフトウェアを使う方式
    • VMcom
      →非商用環境でのみ無料
    • Veeam Backup Free Edition
      →vSphere Hypervisor(無償のESXi)はサポートされておらず、
      vSphere Essentials以上のライセンスが必要。
    • Unitrends Free
      →有償版および無償版のESXiをサポートしている。
      現時点においては、対応バージョンが5.0, 5.5, 6.0 となる。
  • 手動 or スクリプトを用いる方式
    • VMスナップショット取得 → cpコマンド
      →未使用のブロックもコピーされるので遅い
    • VMスナップショット取得 → vmkfstoolsコマンド
      →未使用のブロックはコピー対象外となるため、cpコマンドより早い
    • ghettoVCB
      →2008年からコミュニティベースで提供されているバックアップツール
      現在はGitHubで公開されており、vibパッケージも提供されている。
      自動でスナップショット取得→バックアップ→スナップショット削除を行う素敵なやつ

以降は、ghettoVCBの使用方法について記載する。

ghettoVCB

バックアップ取得

  1. scpもしくはHost Client(https接続)経由で、ESXiへvibファイルをアップロードする
  2. ESXiへghettoVCBをインストールする
    # esxcli software vib install -v /vmfs/volumes/DS1/vghetto-ghettoVCB.vib -f
    Installation Result
    Message: Operation finished successfully.
    Reboot Required: false
    VIBs Installed: virtuallyGhetto_bootbank_ghettoVCB_1.0.0-0.0.0
    VIBs Removed:
    VIBs Skipped:
    
  3. バックアップスクリプトの内容を変更する
    コンフィグの書き方は本家が詳しいです。

    cp /opt/ghettovcb/bin/ghettoVCB.sh /vmfs/volumes/DS1/
    vi /vmfs/volumes/DS1/ghettoVCB.sh
    # 今回の手順ではバックアップ先を変えるために以下の設定を変更しました。
    VM_BACKUP_VOLUME=/vmfs/volumes/DS1/Backup
    
  4. バックアップを実行する(dryrun)
    ./ghettoVCB.sh -m VM1 -d dryrun
    Logging output to "/tmp/ghettoVCB-2018-01-03_18-09-29-69948.log" ...
    2018-01-03 18:09:29 -- info: ============================== ghettoVCB LOG START ==============================
    
    2018-01-03 18:09:29 -- info: CONFIG - VERSION = 2016_11_20_1
    2018-01-03 18:09:29 -- info: CONFIG - GHETTOVCB_PID = 69948
    2018-01-03 18:09:29 -- info: CONFIG - VM_BACKUP_VOLUME = /vmfs/volumes/DS1/Backup
    2018-01-03 18:09:29 -- info: CONFIG - VM_BACKUP_ROTATION_COUNT = 3
    2018-01-03 18:09:29 -- info: CONFIG - VM_BACKUP_DIR_NAMING_CONVENTION = 2018-01-03_18-09-29
    2018-01-03 18:09:29 -- info: CONFIG - DISK_BACKUP_FORMAT = thin
    2018-01-03 18:09:29 -- info: CONFIG - POWER_VM_DOWN_BEFORE_BACKUP = 0
    2018-01-03 18:09:29 -- info: CONFIG - ENABLE_HARD_POWER_OFF = 0
    2018-01-03 18:09:29 -- info: CONFIG - ITER_TO_WAIT_SHUTDOWN = 3
    2018-01-03 18:09:29 -- info: CONFIG - POWER_DOWN_TIMEOUT = 5
    2018-01-03 18:09:29 -- info: CONFIG - SNAPSHOT_TIMEOUT = 15
    2018-01-03 18:09:29 -- info: CONFIG - LOG_LEVEL = dryrun
    2018-01-03 18:09:29 -- info: CONFIG - BACKUP_LOG_OUTPUT = /tmp/ghettoVCB-2018-01-03_18-09-29-69948.log
    2018-01-03 18:09:29 -- info: CONFIG - ENABLE_COMPRESSION = 0
    2018-01-03 18:09:29 -- info: CONFIG - VM_SNAPSHOT_MEMORY = 0
    2018-01-03 18:09:29 -- info: CONFIG - VM_SNAPSHOT_QUIESCE = 0
    2018-01-03 18:09:29 -- info: CONFIG - ALLOW_VMS_WITH_SNAPSHOTS_TO_BE_BACKEDUP = 0
    2018-01-03 18:09:29 -- info: CONFIG - VMDK_FILES_TO_BACKUP = all
    2018-01-03 18:09:29 -- info: CONFIG - VM_SHUTDOWN_ORDER =
    2018-01-03 18:09:29 -- info: CONFIG - VM_STARTUP_ORDER =
    2018-01-03 18:09:29 -- info: CONFIG - RSYNC_LINK = 0
    2018-01-03 18:09:29 -- info: CONFIG - BACKUP_FILES_CHMOD =
    2018-01-03 18:09:29 -- info: CONFIG - EMAIL_LOG = 0
    2018-01-03 18:09:29 -- info:
    2018-01-03 18:09:30 -- dryrun: ###############################################
    2018-01-03 18:09:30 -- dryrun: Virtual Machine: VM1
    2018-01-03 18:09:30 -- dryrun: VM_ID: 1
    2018-01-03 18:09:30 -- dryrun: VMX_PATH: /vmfs/volumes/DS1/VM1/VM1.vmx
    2018-01-03 18:09:30 -- dryrun: VMX_DIR: /vmfs/volumes/DS1/VM1
    2018-01-03 18:09:30 -- dryrun: VMX_CONF: VM1/VM1.vmx
    2018-01-03 18:09:30 -- dryrun: VMFS_VOLUME: DS1
    2018-01-03 18:09:30 -- dryrun: VMDK(s):
    2018-01-03 18:09:30 -- dryrun: VM1_0.vmdk 16 GB
    2018-01-03 18:09:30 -- dryrun: INDEPENDENT VMDK(s):
    2018-01-03 18:09:30 -- dryrun: TOTAL_VM_SIZE_TO_BACKUP: 16 GB
    2018-01-03 18:09:30 -- dryrun: ###############################################
    
    2018-01-03 18:09:30 -- info: ###### Final status: OK, only a dryrun. ######
    
    2018-01-03 18:09:30 -- info: ============================== ghettoVCB LOG END ================================
    
    
  5. バックアップを実行する(本番)
    ./ghettoVCB.sh -m VM1
    Logging output to "/tmp/ghettoVCB-2018-01-03_18-11-01-70107.log" ...
    2018-01-03 18:11:02 -- info: ============================== ghettoVCB LOG START ==============================
    
    2018-01-03 18:11:02 -- info: CONFIG - VERSION = 2016_11_20_1
    2018-01-03 18:11:02 -- info: CONFIG - GHETTOVCB_PID = 70107
    2018-01-03 18:11:02 -- info: CONFIG - VM_BACKUP_VOLUME = /vmfs/volumes/DS1/Backup
    2018-01-03 18:11:02 -- info: CONFIG - VM_BACKUP_ROTATION_COUNT = 3
    2018-01-03 18:11:02 -- info: CONFIG - VM_BACKUP_DIR_NAMING_CONVENTION = 2018-01-03_18-11-01
    2018-01-03 18:11:02 -- info: CONFIG - DISK_BACKUP_FORMAT = thin
    2018-01-03 18:11:02 -- info: CONFIG - POWER_VM_DOWN_BEFORE_BACKUP = 0
    2018-01-03 18:11:02 -- info: CONFIG - ENABLE_HARD_POWER_OFF = 0
    2018-01-03 18:11:02 -- info: CONFIG - ITER_TO_WAIT_SHUTDOWN = 3
    2018-01-03 18:11:02 -- info: CONFIG - POWER_DOWN_TIMEOUT = 5
    2018-01-03 18:11:02 -- info: CONFIG - SNAPSHOT_TIMEOUT = 15
    2018-01-03 18:11:02 -- info: CONFIG - LOG_LEVEL = info
    2018-01-03 18:11:02 -- info: CONFIG - BACKUP_LOG_OUTPUT = /tmp/ghettoVCB-2018-01-03_18-11-01-70107.log
    2018-01-03 18:11:02 -- info: CONFIG - ENABLE_COMPRESSION = 0
    2018-01-03 18:11:02 -- info: CONFIG - VM_SNAPSHOT_MEMORY = 0
    2018-01-03 18:11:02 -- info: CONFIG - VM_SNAPSHOT_QUIESCE = 0
    2018-01-03 18:11:02 -- info: CONFIG - ALLOW_VMS_WITH_SNAPSHOTS_TO_BE_BACKEDUP = 0
    2018-01-03 18:11:02 -- info: CONFIG - VMDK_FILES_TO_BACKUP = all
    2018-01-03 18:11:02 -- info: CONFIG - VM_SHUTDOWN_ORDER =
    2018-01-03 18:11:02 -- info: CONFIG - VM_STARTUP_ORDER =
    2018-01-03 18:11:02 -- info: CONFIG - RSYNC_LINK = 0
    2018-01-03 18:11:02 -- info: CONFIG - BACKUP_FILES_CHMOD =
    2018-01-03 18:11:02 -- info: CONFIG - EMAIL_LOG = 0
    2018-01-03 18:11:02 -- info:
    2018-01-03 18:11:05 -- info: Initiate backup for VM1
    
    2018-01-03 18:11:05 -- info: Creating Snapshot "ghettoVCB-snapshot-2018-01-03" for VM1
    ption --adaptertype is deprecated and hence will be ignored
    Destination disk format: VMFS thin-provisioned
    Cloning disk '/vmfs/volumes/DS1/VM1/VM1_0.vmdk'...
    Clone: 100% done.
    2018-01-03 18:11:34 -- info: Removing snapshot from VM1 ...
    2018-01-03 18:11:34 -- info: Backup Duration: 29 Seconds
    2018-01-03 18:11:34 -- info: Successfully completed backup for VM1!
    
    2018-01-03 18:11:36 -- info: ###### Final status: All VMs backed up OK! ######
    
    2018-01-03 18:11:36 -- info: ============================== ghettoVCB LOG END ================================
    
    
  6. バックアップデータを確認する
    ls -lR /vmfs/volumes/DS1/Backup
    Backup/:
    total 8
    drwxr-xr-x 1 root root 420 Jan 3 18:11 VM1
    
    Backup/VM1:
    total 8
    drwxr-xr-x 1 root root 840 Jan 3 18:11 VM1-2018-01-03_18-11-01
    
    Backup/VM1/VM1-2018-01-03_18-11-01:
    total 1222664
    -rw-r--r-- 1 root root 30 Jan 3 18:11 STATUS.ok
    -rwxr-xr-x 1 root root 3131 Jan 3 18:11 VM1.vmx
    -rw------- 1 root root 17179869184 Jan 3 18:11 VM1_0-flat.vmdk
    -rw------- 1 root root 516 Jan 3 18:11 VM1_0.vmdk
    
    

リストア

  1. データストアブラウザを開き、vmxファイルからVMを登録すればOK
  2. 初回起動時には「コピーしました」を選択することでUUIDの重複を防げる
Digiprove sealCopyright secured by Digiprove © 2018
ブックマーク へのパーマリンク.

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください