【VMware】VMware vSphere Hypervisor(無償版ESXi) ~ バックアップ編 ~

■ はじめに

 有償ESXiならバックアップ機能(vMotion)が備わっているが、無償版はない。
定期敵に別筐体に仮想マシンのバックアップを取ることを考える。

■ バックアップ種類

【1】 コールドバックアップ
 => 一旦、仮想マシンを停止してから、バックアップ

【2】 ホットバックアップ
 => 起動したまま(無停止)でバックアップ

検討

 * 定期実行で自動的に行いたいので、なるべく【2】がいい

■ 用語整理

NFS (Network File System)

 * ネットワークを介してファイルを共有するファイルシステムおよびプロトコル

ghettoVCB

ゲットー・ヴィシービー?
 * 仮想マシンをホットバックアップできる無料ツール
 * MIT
公式サイト
https://github.com/lamw/ghettoVCB

■ バックアップ方針

【A】 別筐体にバックアップファイルを格納するために、NFSストレージにマウントする
【B】 定期実行するために、ESXi内でcronを行う(Linuxと全く同じではない)
【C】 ghettoVCBスクリプトを使って、ホットバックアップ

■ バックアップ設定手順

【1】 NFSストレージをマウントする
【2】 SSHを有効にする
【3】 ghettoVCB を ESXiに設定する
【4】 バックアップを定期実行する

【1】 NFSストレージをマウントする

 * 以下の関連記事を参照
VMware vSphere Hypervisor(無償版ESXi) ~ NFSマウント編 ~
https://blogs.yahoo.co.jp/dk521123/37696280.html

【2】 SSHを有効にする

 * 以下の関連記事を参照
VMware vSphere Hypervisor(無償版ESXi) ~ データ移行編 ~
https://blogs.yahoo.co.jp/dk521123/36757644.html

【3】ghettoVCB を ESXiに設定する

[1] 以下のサイトから、ghettoVCB をダウンロードしておく
https://github.com/lamw/ghettoVCB/archive/master.zip
[2] ESXiにsshでログインする

 ★ 注意 ★ (ここで若干ハマった)
  Tera Term を使用している場合、ユーザ名を入力後、
 「チャレンジレスポンス認証を使う(キーボードインタラクティブ)」を選択し
 ログインする
https://pig-log.com/esxi-ssh-login/
[3] ghettoVCB 「ghettoVCB-master.zip」を転送しておく
[4] バックアップ用のディレクトリを作成する(今回は「/vmfs/volumes/datastore1」配下に「backup」)
~~~~~~
cd /vmfs/volumes/datastore1
mkdir backup
cd backup
~~~~~~

[5] ghettoVCB-master.zipを設定する
# ghettoVCB-master.zipを移動
mv ~/ghettoVCB-master.zip /vmfs/volumes/datastore1/backup/.
unzip ghettoVCB-master.zip
cd ghettoVCB-master

[6] 設定ファイル「ghettoVCB.conf」を修正する
cp ghettoVCB.conf ghettoVCB.conf.orig
vi ghettoVCB.conf
~~~~~~~~~~
# バックアップ先のデータストア
VM_BACKUP_VOLUME=/vmfs/volumes/NFS01

# バックアップファイルのフォーマットを指定
DISK_BACKUP_FORMAT=thin

# バックアップの世代数を設定
VM_BACKUP_ROTATION_COUNT=3

ALLOW_VMS_WITH_SNAPSHOTS_TO_BE_BACKEDUP=0
~~~~~~~~~~

[7] バックアップ対象リスト「vmlist.txt」に新規作成(今回はバックアップ対象の仮想マシン名「vm01」「vm02」とする)

vi vmlist.txt
~~~~~~~~~~
vm01
vm02
~~~~~~~~~~

[8] まずは、 dryrunして確認し、問題なければ、外して実行
~~~~~~~~~~
# テスト
./ghettoVCB.sh -f vmlist.txt -g ghettoVCB.conf -d dryrun

# バックアップの実行
./ghettoVCB.sh -f vmlist.txt -g ghettoVCB.conf

# 「ls -al 【バックアップ先】」でバックアップ対象が保存されているか確認
# ★ここまででバックアップする仕組みはできた★
ls -al /vmfs/volumes/NFS01
~~~~~~~~~~

【4】 バックアップを定期実行する

前提知識 : ESXi上での cron について
 a) ESXiにはcrontabコマンドが存在しない
  => cronを利用する場合、「/var/spool/cron/crontabs/root」を直接編集する
 b) ESXi再起動した際には、上記の設定はクリアされてしまう
  => 再起動後にも設定を有効にする場合、再起動と同時に上記設定ファイルに設定を再度書き込むようにする
設定手順
[1] バックアップを定期実行するために、 /var/spool/cron/crontabs/root に、以下の設定を追記する

vi /var/spool/cron/crontabs/root
~~~~~~~
30 22 * * sta-sun /bin/sh /vmfs/volumes/datastore1/backup/ghettoVCB-master/ghettoVCB.sh -f /vmfs/volumes/datastore1/backup/ghettoVCB-master/vmlist.txt
~~~~~~~

[2] ESXi再起動しても設定を保持するために、/etc/rc.local.d/local.sh に、以下の設定を追記する

vi /etc/rc.local.d/local.sh
~~~~~~~
/bin/echo "30 22 * * sta-sun /bin/sh /vmfs/volumes/datastore1/backup/ghettoVCB-master/ghettoVCB.sh -f /vmfs/volumes/datastore1/backup/ghettoVCB-master/vmlist.txt" >> /var/spool/cron/crontabs/root
/bin/kill $(cat /var/run/crond.pid)
/bin/busybox crond
~~~~~~~

■ リストア

コマンド「./ghettoVCB-restore.sh -c restore.txt」でもできるみたいだが、
GUIからできるようなので、そっちでやる

手順

[1] VMware のWeb UI 上において、「ナビゲーター」欄内にある
    [ストレージ]-[データストア]-[データスト アブラウザ]-[【NFSのデータストア】]
    -[【仮想データの日付付きフォルダ】]-[【仮想データのフォルダ】]を選択し、
   「【仮想データ】.vmx」を右クリックし、「仮想マシンの登録」を選択し「閉じる」ボタン押下
 => 仮想マシン登録しリストア完了
[2] 確認のために、「ナビゲーター」欄内にある[仮想マシン]を選択し、移行した仮想マシンがあるか確認する


関連記事

VMware vSphere ~ 知識編 ~

https://blogs.yahoo.co.jp/dk521123/36324800.html

VMware vSphere Hypervisor(無償版ESXi) ~ 初期設定編 ~

https://blogs.yahoo.co.jp/dk521123/36333429.html

VMware Tools 改め Open VM Tools について

https://blogs.yahoo.co.jp/dk521123/36309282.html

VMware vSphere Hypervisor(無償版ESXi) ~ VM作成編 ~

https://blogs.yahoo.co.jp/dk521123/36333602.html

VMware vSphere Hypervisor(無償版ESXi) ~ データ移行編 ~

https://blogs.yahoo.co.jp/dk521123/36757644.html

VMware vSphere Hypervisor(無償版ESXi) ~ NFSマウント編 ~

https://blogs.yahoo.co.jp/dk521123/37696280.html

バックアップ / リストア に関するあれこれ

https://blogs.yahoo.co.jp/dk521123/37690582.html