ESXi上の仮想マシンのバックアップを考える


ESXiの制約

  • 動作中のVMのディスクにアクセス出来ない。
    • 故にスナップショットを使用して直前までのデータをバックアップとする。
  • scpくらいしか転送コマンドが使えない
    • ESXiホストにrsyncは入っていなかったし、ほかの圧縮・アーカイブ系のツールも含まれていない。
  • スナップショットの挙動が怪しい。操作が特殊なのかも
    • 試してみて解決です。詳細は後述します。

家環境での制約

  • スナップショットは複数使用している。
    • 故に、多くの環境でやられている snapshot.removeAll コマンドが使用できない。
  • バックアップをとる側はWindows上のVMwareマシン(CentOS)
  • 故に、マシン環境でルーティングを挟むため、通信帯域は少ない方がいい

バックアップ方針

  1. ESXiでvim-cmdを利用してスナップショットを作成
  2. scpにより別のPCへバックアップデータを書き込む
  3. 作ったスナップショットを削除する

スナップショットをとるものの、現在使用中のものはアクセス不能のためコピーできない。

scpの暗号化に -c オプションで指定をつける。
ローカル環境なのでそこまで強固な暗号化は不要ということで。

scp -c aes128-ctr

arcfourというものの方が軽いらしいのだが、手元の環境では使用できなかった。

メモ

VMのIDを取得する方法

VMの情報を取得
vim-cmd /vmsvc/getallvms
これで、vimIdを取得できる。

最新のスナップショットのみ削除する方法

vim-cmd /vmsvc/snapshot.remove 0 <削除スナップショット>

ここで、”削除スナップショット”の番号については下記のコマンドで求める。
vim-cmd vmsvc/snapshot.get | grep CHILD | wc -l

結果

コピーされた結果可変ディスク(シンディスク)であっても、全体のデータサイズで取れてしまう。
よって、使用領域数GBにも関わらずディスクサイズが 128Gとかになっている場合は 128GBの空き領域が必要。
だけどコピーそのものは出来た。

問題点

仮想ディスク全サイズ分占有問題は1つのVMだけで数時間におよぶ転送時間がかかることにつながるので、
ちょっと実用は難しいのかも。もっともこれが許容できるならばこれでバックアップとしても良いのかもしれない。

またスナップショットを作成してコピーしているが、
最新の動作状況に関する情報がコピーできないため、設定ファイル群とディスクとの不整合が起こっている可能性がありそう。

この方式を実用に向けて再チェックするときにこのあたりを仮にリストア処理させてみることで確認してみようと思う。

スポンサーリンク

シェアする

  • このエントリーをはてなブックマークに追加

フォローする


コメント

  1. JJM より:

    vim-cmd vmsvc/snapshot.get XX | grep CHILD | wc -l
    は過去に取ったスナップショット数の合計を求めているだけで、最新のsnapshot idではないです。
    snapshot idは削除後、このように歯抜けになります。 1, 2, 4, 8, 10