- 追加された行はこの色です。
- 削除された行はこの色です。
// 下階層用テンプレート
#topicpath
----
//ここにコンテンツを記述します。
#contents
うちのサーバ群も仮想化環境としておせわになってるVMware ESXiですが、バックアップの運用を真剣に考えなきゃと思い、着手し始めました。
いろいろググってみると
-ゲストOSをなるべく止めないで、ホットバックアップしたい
-できれば自動化
-できれば無償で
などを実現している方もいらっしゃるようですね。
いろいろ調べながら、うちでもやってみることにします。
**ホットバックアップの基本的な考え方 [#f198bb5a]
さてホットバックアップの方法ですが、そもそもVMwareの仮想マシンはOS起動中はロックされていてコピー(バックアップ)することができないのですが、スナップショットを取ることによって、スナップショット時点までのファイルはロックが解放されファイルコピーができるようになります。スナップショットを取れば、それまでのファイルとそこからの変更分みたいなファイル形式になるって感じでしょうね。
なので、スナップショットを作成してバックアップを作成し、その後スナップショットを削除するっていう手順を行えばOKそうです。
**手動で実行してみる [#n59b93c0]
例として wwwというvm名の仮想マシンのバックアップをすることを考えてみます。その仮想マシンは、
/vmfs/volumes/esxiDisk/www/www.vmdk
にハードディスクのイメージがあり、そのディスクを
/vmfs/volumes/nfs/
へコピーします。一応、ファイル名は日付を付けて世代管理します。
さて実際の手順ですが、ESXiにログイン後((ESXiへのログインはなどを参考にしてください))、以下のコマンドでバックアップを取ることができます。
vim-cmd vmsvc/snapshot.create `vim-cmd vmsvc/getallvms| awk '/www/ {print $1;}'` forBackup
vmkfstools -i /vmfs/volumes/esxiDisk/www/www.vmdk -d monosparse /vmfs/volumes/nfs/www`TZ=JST-9 date '+%Y%m%d%H%M'`.vmdk
vim-cmd vmsvc/snapshot.remove `vim-cmd vmsvc/getallvms| awk '/www/ {print $1;}'`
実行するとスナップショットが作成されたことによってwww.vmdkのロックが解放されてファイルコピーができるようになり、バックアップ先のディレクトリに
/vmfs/volumes/nfs/www20090922.vmdk
/vmfs/volumes/nfs/www20090922-s001.vmdk
が作成されました。で、最後にスナップショットを削除して、元通りです。
うちの環境には同様にdbというVM名の仮想マシンもあるのですが、そっちも同様に以下のようなコマンドでバックアップが作成できます。
vim-cmd vmsvc/snapshot.create `vim-cmd vmsvc/getallvms| awk '/db/ {print $1;}'` forBackup
vmkfstools -i /vmfs/volumes/esxiDisk/db/db.vmdk -d monosparse /vmfs/volumes/nfs/db`TZ=JST-9 date '+%Y%m%d%H%M'`.vmdk
vim-cmd vmsvc/snapshot.remove `vim-cmd vmsvc/getallvms| awk '/db/ {print $1;}'`
**cronなどで自動化する [#o2db64a9]
次は先のコマンドをshにしておいて、ESXi上のcronで定期的に実行すればよさそうです。とりあえずコマンドは
/vmfs/volumes/esxiDisk/backupServer.sh
においてchmod 755しておきます。
さてESXiでcronが利用できるかについてですが、
/var/spool/cron/crontabs/root
にはなにやらいろいろ書いてあるのでcron自体は使用できるみたいですが crontb -e とかでcronの設定の追加はできないようです。先のファイルに直接書いてもESXiを再起動すると失われてしまうようです。
結果として /etc/rc.localに以下のように記述して逃れることにします。
~ # cat /etc/rc.local
#! /bin/ash
export PATH=/sbin:/bin
... 割愛 ... (元々いろいろ書いてあったモノはそのまま)
ln -s /vmfs/volumes/esxiDisk/backupServer.sh /sbin/backupServer.sh
# crontabs
cat<<_EOT_>>/var/spool/cron/crontabs/root
50 16 * * * /sbin/backupServer.sh <-日本時間は25:50
_EOT_
kill -sigterm `ps|awk '/[c]rond/ {print $1;}'`
crond
このようにrc.local内で起動時にcron設定を追加し、crondを再起動することにします。
この項は(他の項もですが) [[AKI ON WEB: VMware ESXi 3.5のcrontabを(半ば強引に)使う>http://akionweb.com/archives/2009/04/vmware-esxi-35crontab.shtml]]の情報を思いきり参考にさせてもらいました!感謝です!
**関連リンク [#f8879922]
-[[AKI ON WEB: VMware ESXiゲストのバックアップ方法を考えてみる>http://akionweb.com/archives/2009/04/esxi.shtml]]
-[[AKI ON WEB: ESXiゲストの自動バックアップ処理の覚書>http://akionweb.com/archives/2009/04/esxi-1.shtml]]
-[[AKI ON WEB: VMware ESXi 3.5のcrontabを(半ば強引に)使う>http://akionweb.com/archives/2009/04/vmware-esxi-35crontab.shtml]]
-[[仮想ゲストOSバックアップ〜スクリプト編〜 | Whimsical Kitteeeeen>http://www.witkitty.com/wordpress/2009/07/05/esxi-backup-part2/]] バックアップのshまでアップされてます。すごいです!
-[[はてなブックマーク - masatomixのブックマーク - ESXi>http://b.hatena.ne.jp/masatomix/ESXi/]]
-[[monosparseなディスクを変換する>VMware/ESXi/TIPS集#q9af2f92]]
----
この記事は
#vote(おもしろかった[47],そうでもない[0])
#vote(おもしろかった[48],そうでもない[0])
#comment
#topicpath
SIZE(10){現在のアクセス:&counter;}