SEEDS Creator's Blog

vmware ESXi HDDデータのホットバックアップ

HDDデータのホットバックアップ

ESXiのハードディスクデータは

/vmfs/volumes/データストア名/サーバー名/サーバー名-flat.vmdk

というファイルが実体。

HDDデータさえバックアップすれば基本的には移行や障害時の復旧は可能な状態になるのだが ESXiではバックアップ対象のゲストOS起動中はこのHDDデータがロックされており コピーなどができない状態となっている。

ただデータ移行を行いたいだけであればゲストOSをシャットダウンして上記ファイルをコピーすればよいが サービス起動中のものを別ESXiサーバーに移動したい時とかに。

参考はこちらです。ありがとうございます。 http://www.masatom.in/pukiwiki/VMware/ESXi/%A5%D0%A5%C3%A5%AF%A5%A2%A5%C3%A5%D7%B1%BF%CD%D1/

方法

サーバーのスナップショットを作成すると、このHDDデータのロックが外れ、 スナップショット用のファイルがロックされる。 以降の更新はスナップショット用のファイルに書き込まれていく状態になる。

つまり以下の流れで停止なくHDDデータのコピーが可能

スナップショットをとる
↓
HDDデータをコピー
↓
スナップショットを削除(HDDデータとスナップショットがマージされる)

その為、スナップショットを運用として使用している場合はこの方法は利用できない。

方法1:vSphere Clientを使ったバックアップ

1,ログインして、該当仮想マシンを右クリックし、「スナップショットの作成」 2,ハイパーバイザーの 「構成」→「ストレージ」→「データストア」を右クリで参照 3,スナップショットをとった仮想マシンのvmdkやそこいらのファイルを選択し、  上メニューの「データストアからローカルにダウンロード」

もっとも手軽で簡単な方法。 しかしこちらの方法は不安定でHDDデータのコピー途中で接続が切れたりして正常に行う事はできませんでした。

方法2:CLIでバックアップ

前提としてハイパーバイザへSSH接続できる事 許可してない場合は、vSphere Clientから 「構成」→「セキュリティプロファイル」→「サービスのプロパティをクリック」 で SSHを選択し「オプション」。サービスコマンドで「開始」

ハイパーバイザへSSHログインし情報ファイルをバックアップ

ロックされている仮想マシンのHDDデータ以外のファイルを今の時点でコピーしておく。 スナップショット状態に転送するとそのファイルの情報はスナップショット中の状態が 書き込まれているのでいろいろ都合が悪い。

対象仮想マシンのVmidを確認する

以下のコマンドで確認可能

vim-cmd vmsvc/getallvms

以下のように全仮想マシンの情報が出てくる

Vmid  Name         File                 Guest OS        Version   Annotation
5     demoserver   [datastore..(略)     debian6_64Guest vmx-08

この場合demoserverのvmidは5

スナップショットの作成

以下のコマンドで作成可能

vim-cmd vmsvc/snapshot.create [Vmid] [スナップショットの名前]

上記コマンドを実行すると demoserver-000001-delta.vmdk demoserver-000001.vmdk みたいなファイルが作られる。これがスナップショットのファイルと思われる。 この時点で demoserver-flat.vmdk のロックが解除されコピーできる状態に。

データのコピー

scpとかでコピーしたり、別データストアにcpしたり。

スナップショットの削除

vim-cmd vmsvc/snapshot.remove 5 forData

最後に

今回は停止できない仮想マシンのデータを取得する必要があってこの方法をとったが cronなどで定期的に行えばバックアップをとっていく事ができそうです。 ただ、容量が大きくなるので負荷や1日でネットワーク越しの転送が終わるのか、 などいろいろなことを考慮する必要がある。

またスナップショット取得の際はデータストアの容量は要注意で、 スナップショットを作成するとHDDへ読み書きが発生するたびにスナップショットのサイズが増えていきます。 (最大で元HDDと同じ大きさまで増えます) その際、データストアの容量に限界がきてしまうと、そのサーバーはDISKFULLの状態となり停止してしまいます。 空き容量がない状態ですとスナップショットを削除するしかない状態になり非常に大きな問題となります。 スナップショット作成時はあらかじめデータストアの残り容量は常に気にかけておく必要があります。

また、スナップショットを作ったり消したりを繰り返していると なんらかのはずみでHDDデータが壊れそうで怖い・・・。 (実際に定期的にバックアップしている方がいればお話を聞いてみたいです)