2008年12月26日

無償のVMware ESXiでホットバックアップを自動で実行する方法(のヒント)

VMware ESXiを運用していくうえで重要なのが障害対策。そのためにストレージのバックアップは欠かせません。VMware Consolidated Backup(VCB)という製品も提供されていますが、VMware Infrastructure 3は有償で、しかもかなり高価な製品です。なんとかコストを抑えつつ、簡単にバックアップする方法はないものか・・・。

ところでVMware ESXiはSSHでログインが可能です(やり方はググってください)。それならSSHでログインして.vmdkファイルをコピーすりゃいいじゃん!簡単簡単!

と思ったのですが、VMを稼働したままではコピーできません。.vmdkファイルは排他制御されているので、使用中のファイルにはアクセスできないのです。。。

仕方ないのでVCBの購入を検討します。…検討します。…検討します。買い方わかんねー。(笑) 一応VI3の体験版を入手してVirtual Centerをインストールしてみたんですが、具体的にどうすればいいのかわかりません。それどころか8個以上のVMを起動できず(仕様?)、これなら無償のESXiのほうがいいじゃんて感じです。

さて、気を取り直して・・・。
スナップショットを取ると.vmdkファイルにアクセスできることに気付きました。スナップショットを作成して、バックアップして、スナップショットをクリアするまでが自動化できればできそうだよなぁ。

vmではじまるコマンドを片っ端から調べていったら…見つけました!! コマンドラインからスナップショットの指示を出すことも、PowerのON/OFFだってできます!素晴らしい!

コマンドラインからホットバックアップを取る方法はこんな感じです。

まずVmidを調べます。
~ # vim-cmd vmsvc/getallvms
Vmid Name File Guest OS Version Annotation
176 test ubuntu [iscsi32-sdc1] test UBuntu/test UBuntu.vmx ubuntuGuest vmx-04
192 Windows XP [iscsi32-sdb2] Windows XP/Windows XP.vmx winXPProGuest vmx-04
384 FreeNAS2 [iscsi32-teravmw1] FreeNAS/FreeNAS.vmx otherGuest64 vmx-04

次にスナップショットを作成します。
~ # vim-cmd vmsvc/snapshot.create 176 hogehoge
Create Snapshot:

フォルダごとコピーします。
~ # cp -a /vmfs/volumes/iscsi32-sdc1/test\ UBuntu /vmfs/volumes/iscsi32-teravmw1/test-of-copy
cp: unable to open `/vmfs/volumes/iscsi32-sdc1/test UBuntu/test UBuntu-819c2b1f.vswp': Device or resource busy
cp: unable to open `/vmfs/volumes/iscsi32-sdc1/test UBuntu/test UBuntu-000001-delta.vmdk': Device or resource busy
当然ながらスナップショット中の.vmdkファイルはコピーできません。

今回は他のiSCSIボリュームからすぐに起動できるようそのままコピーしていますが、単純にバックアップだけが目的ならば圧縮したり、他のホストにコピーしてあげてもいいですね。
例)cd /vmfs/volumes/iscsi32-sdc1
tar cfp - test\ UBuntu | gzip - | ssh hoge@hoge.hoge "cat > /path/to/backupdir/hogehoge.tar.gz"

最後にスナップショットをクリアします。
~ # vim-cmd vmsvc/snapshot.removeall 176
Remove All Snapshots:

これでコピーが完了です。

さて、次はコピー元のストレージが壊れたことを想定して、コピー先から起動してみましょう。.vmxファイルはスナップショット実行中の内容になっているので、.vmdkファイルのファイル名を元に戻してあげます。
scsi0:0.fileName = "test UBuntu-000001.vmdk"
 ↓
scsi0:0.fileName = "test UBuntu.vmdk"

データストアの画面から.vmxファイルを選択してインベントリに追加、あとは普通に起動するだけです。もちろんスナップショット作成後に変更された部分はコピーされませんが、その辺はどこまで妥協できるか次第でしょう。

あとはこれをcronで実行できれば、完全にバックアップの自動化ができると思います。cronが使えるかどうかはまだ調べていませんが、sshが使えるのでなんとかなると思います。
外部からのコマンド実行例)
G5:~ kaz$ ssh root@192.168.0.33 "vim-cmd vmsvc/getallvms"
root@192.168.0.33's password:
Vmid Name File Guest OS Version Annotation
160 priv88 [iscsi32-sdb1] priv88/priv88.vmx otherLinuxGuest vmx-04

トラックバックURL

この記事へのコメント

1. Posted by ちゃか   2009年04月17日 11:45
いつも拝見しています。
ちゃかといいます。

VMware ESXiでバックアップをしようと思っていますがやり方が悪いのか困っております。


>他のホストにコピーしてあげてもいいですね。

文中のこの部分ですが具体的にどうすれば良いか教えてもらえませんか?
2台目のESXサーバー(192.168.1.220)へバックアップをと思っているところです。

一台目のESXサーバーでvim-cmd vmsvc/getallvmsを実行したら次のように出ます。

160 ake01-remote [Virtul-type500GB] ake01-remote/ake01-remote.vmx

上手くできずに悩んでいます。。。
どうか助けてください。

2. Posted by Kaz   2009年04月17日 14:47
試してはいませんが
scp -r /path/to/src root@192.168.1.220:/path/to/dst/.
のようにscpでコピーできないでしょうか。

私はiSCSIでマウントさせてるのでscpではなくこの方法 http://blog.xe.bz/archives/51128322.html でやってます。
3. Posted by ちゃか   2009年04月22日 09:51
scp -r /path/to/src root@192.168.1.220:/path/to/dst/.

経験不足な私にはこの表現がそのままタイプして良いのか。
path部分をake01-remoteとすべきなのかわかりません。

教えてもらったまま実行しても駄目でした。再度噛み砕いてご教授をお願いします。
面倒なお願いでスミマセン。。。

私もiSCSIを試してみようかな。。。
4. Posted by Kaz   2009年04月28日 21:10
こうゆう操作はscpコマンドの使い方やvmwareのディレクトリ構成をちゃんと知ってからでないと、システムを壊してしまったりして危ないと思います。
5. Posted by ちゃか   2009年04月30日 16:16
ありがとうございます。
確かにその通りかもしれませんね。

これからも
ブログを拝見させていただきます。
ESXi情報があればよろしくお願いします。
6. Posted by kappa   2009年06月11日 09:53
今更ですが私はこんな方法をやってます。ということで^^;

Windows Server 2003 R2のPCNFSサーバーでExportした領域を、ESXのDatastoreとして認識させておき、その領域に対してコピーかけてます。

ちなみに2003 R2でなくても、SFUなどを利用すればNFSサーバーが立てられます。

この方法ならバックアップしたvmdkの管理をWindowsからできますし、ESX上でのコピー処理も普通にcp -rでオッケーです。ご参考まで。
7. Posted by Kaz   2009年06月11日 21:20
なるほど、NFSで行うという方法ですか。この方法だとvmdkファイルが排他制御されずにコピーも可能になるんですね。
8. Posted by ねこパパ   2009年08月28日 11:37
DELL PowerEdge2650にESXi3.5をインストール
HP NetServer LH3000r U3にUbuntu9.04をインストールしてストレージにしています
すべてlanはGBです。
HPをiSCSIにしていたら20G+25G+8Gのvmdkコピーが40分程度で済んでいたのに、NFSにしたら70分以上もかかるようになりました。
NFSって、オーバーヘッドが高いんでしょうかね?
9. Posted by Kaz   2009年08月29日 15:44
NFSは遅いとは聞きましたがやはり遅いんですね。
はじめてiSCSI使ったときはiSCSIの速さに驚きました。
NFSだとそのままファイルとして扱えるから便利なんですけどね。

この記事にコメントする

名前:
URL:
  情報を記憶:
 
 
月別アーカイブ