[仮想]ESXi(VMware vSphere Hypervisor)でホットバックアップを試してみる

稼働中にバックアップをとる

ESXi(VMware vSphere Hypervisor)で稼働中の仮想ディスク(vmdk)は、ファイルをオープンする事ができないようになっているのでコピーする事ができません。
webやメールサーバーを運用していれば、停止する事もできません。
稼働中でもバックアップを行う為、今回はスナップショットを作成しバックアップをします。
大雑把な流れは以下の通りです。

1:スナップショット作成
(稼働中.vmdkが、スナップショット.vmdkと稼働中差分.vmdkに別れる)

2:バックアップ
(スナップショット.vmdk)

3:スナップショットの削除
(スナップショット.vmdkが削除され、稼働中差分.vmdkから稼働中.vmdkへ戻される)

スナップショット作成

スナップショットの作成は、vSphere Clientからでも作成可能です。
今回は将来的に自動バックアップも行っていく為、ESXiへSSH接続を行いコマンドで行う方法にします。
スナップショットを作成するには、該当のVmidを取得する必要があります。
vim-cmd vmsvc/getallvms
上記コマンドでバックアップしたいものに対するVmidでスナップショットを作成します。
vim-cmd vmsvc/snapshot.create [上記の取得したVmid] [適当なスナップショットの名前]

この作業をシェルで以下のように作成しておきます。
vmId=`vim-cmd vmsvc/getallvms| awk ‘/[Fileのディレクトリ名]/ {print $1;}’`
vim-cmd vmsvc/snapshot.create $vmId

スナップショットのバックアップ

作成したスナップショットのクローンを作成し、それをバックアップとします。
バックアップ後のディスクスペース節約の為monosparse形式で出力し、ファイル名はわかりやすく「ディレクトリ名+年月日_時分」としました。

vmkfstools -i [Fileのディレクトリ名].vmdk [Fileのディレクトリ名]`TZ=JST-9 date ‘+%Y%m%d_%H%M’`.vmdk -d monosparse
スナップショット作成のシェルに組み込んでもいいと思います。

スナップショットの削除

スナップショット作成後は、稼働中-000001.vmdkで動作しています。
スナップショット削除により、スナップショット.vmdkと稼働中-000001.vmdkから稼働中.vmdkへと戻されます。
削除については、Vmid以外にsnapIdが必要です。

以下のようにシェルを作成してみます。
vmId=`vim-cmd vmsvc/getallvms| awk ‘/[Fileのディレクトリ名]/ {print $1;}’`
snapId=`vim-cmd vmsvc/snapshot.get $vmId | grep Id|awk ‘{print $4;}’ | tail -1`
vim-cmd vmsvc/snapshot.remove $vmId $snapId

まとめ

以上で、スナップショットの作成と削除のシェルが完成したので、今後は自動化とリストアについてまとめていきたいと思います。

コメント