ESXi 5.0のゲストを毎日(時間はどうにでも変更可能)ホットバックアップする方法。
(注:最新の5.1u1のバックアップにつきましては、
「ESXi5.1u1におけるFirewall設定について(SMTP発信)」
http://niriakot.blogspot.jp/2013/05/esxi51u1firewallsmtp.html
に書いてますので、ご参考ください。)
以前、4.1u1の時の投稿は下記。
http://niriakot.blogspot.com/2011/03/esxi41u1.html#more
違いは、ESXi5.0にしてから、ログを一日ひとつずつ、日付を付けたファイル名で吐き出すようにしたぐらい。
流れとしては、ゲストOSをリストの順番通りに
スナップショットを取る ⇒ 別のdatastoreにコピー ⇒ スナップショットを削除
を実行するようにしています。
なお、スナップショットを取る関係上、既にスナップショットがある状態だとうまく動きませんので、スナップショットは無しの状態で実行しないといけません。
ちなみにディスク容量の空いている限り、ローテーションもいくつも作れます。
自分の場合は2日分しかとってないですが、データはデータでバックアップとっているので、システムは一日分あればいいのですが、保険ということで2日分残してあります。
【手順】
①sshの有効化
はじめにvSphere Clientの「構成」「ソフトウェア」「セキュリティプロファイル」「サービス」「プロパティ」を開く。
SSHを起動。
で、sshでログインする。(チャレンジレスポンス認証で、ログインします。)
②ghettoVCBの実行ファイルの編集(shの実行ファイル)
NFSをマウントして、そこにバックアップもできますが、ghettoで設定するよりは、vSphereClientでNFSをマウントしたほうが以前はよかったので、そうしてましたが、今回は同じストレージ上の別HDDをdatastoreとしてバックアップして、その後に必要なら外部にコピーという手法を取りました。
(その方法は書いてないですが。)
shの中で重要なのは、
#バックアップ先
VM_BACKUP_VOLUME=/vmfs/volumes/datastore6
#バックアップのフォーマット形式
DISK_BACKUP_FORMAT=thin
#ローテーションの数
VM_BACKUP_ROTATION_COUNT=2
ぐらいでしょうか?
ちなみに元は
http://communities.vmware.com/docs/DOC-8760
です。
読みだすリストはゲスト名を列記するだけです。
fujin
raijin
tsukuyomi
のように縦に並べていきます。
confファイルもありますが、使いません。
shに直接書くのと変わりませんから。
パーミッションも変更しておく。
chmod 755 /vmfs/volumes/datastore1/ghettoVCB/*.sh
リストは600で大丈夫です。
③rc.local編集
下記のように編集します。
こうすることで再起動後もcronに登録されます。
#ghettoVCB-1.shが実行ファイル、ghettoVCB-list1がゲストのリスト。
#これのリンクを張る。
ln -s /vmfs/volumes/datastore1/ghettoVCB/ghettoVCB-1.sh /sbin/ghettoVCB-1.sh
ln -s /vmfs/volumes/datastore1/ghettoVCB/ghettoVCB-list1 /sbin/ghettoVCB-list1
#実際のcronのrootファイルに記述する。
#今回、ファイルにタイムゾーンを追加した。1日1ファイルのログができる。
cat<<_EOT_>>/var/spool/cron/crontabs/root
0 16 * * * /sbin/ghettoVCB-1.sh -f /sbin/ghettoVCB-list1 -l /vmfs/volumes/datastore1/ghettoVCB/ghettoVCB-log/ghettoVCB-1-`TZ=JST-9 date '+%Y%m%d'`.log
_EOT_
#起動後のcronの再起動の記述
kill -sigterm `ps|awk '/[c]rond/ {print $1;}'`
crond
④/var/spool/cron/crontabs/root編集
③を記述して、再起動すればいいのですが、再起動しない場合は
chmod 744 /var/spool/cron/crontabs/root
vi /var/spool/cron/crontabs/root
chmod 444 /var/spool/cron/crontabs/root
ps | grep cron
kill -sigterm `ps|awk '/[c]rond/ {print $1;}'`
crond
でもokです。
⑤crond再起動
kill -sigterm `ps|awk '/[c]rond/ {print $1;}'`
crond
【出力ログの例】
2012-03-05 16:00:01 -- info: ============================== ghettoVCB LOG START ==============================
2012-03-05 16:00:01 -- info: CONFIG - VERSION = 2011_11_19_1
2012-03-05 16:00:01 -- info: CONFIG - GHETTOVCB_PID = 170954
2012-03-05 16:00:01 -- info: CONFIG - VM_BACKUP_VOLUME = /vmfs/volumes/datastore6
2012-03-05 16:00:02 -- info: CONFIG - VM_BACKUP_ROTATION_COUNT = 2
2012-03-05 16:00:02 -- info: CONFIG - VM_BACKUP_DIR_NAMING_CONVENTION = 2012-03-05_16-00-01
2012-03-05 16:00:02 -- info: CONFIG - DISK_BACKUP_FORMAT = thin
2012-03-05 16:00:02 -- info: CONFIG - POWER_VM_DOWN_BEFORE_BACKUP = 0
2012-03-05 16:00:02 -- info: CONFIG - ENABLE_HARD_POWER_OFF = 0
2012-03-05 16:00:02 -- info: Failed to acquire lock, another instance of script may be running, giving up on /tmp/ghettoVCB.lock
2012-03-05 16:00:02 -- info: CONFIG - ITER_TO_WAIT_SHUTDOWN = 3
2012-03-05 16:00:02 -- info: CONFIG - POWER_DOWN_TIMEOUT = 5
2012-03-05 16:00:02 -- info: CONFIG - SNAPSHOT_TIMEOUT = 15
2012-03-05 16:00:02 -- info: CONFIG - LOG_LEVEL = info
2012-03-05 16:00:02 -- info: CONFIG - BACKUP_LOG_OUTPUT = /vmfs/volumes/datastore1/ghettoVCB/ghettoVCB-log/ghettoVCB-1-20120306.log
2012-03-05 16:00:02 -- info: CONFIG - VM_SNAPSHOT_MEMORY = 0
2012-03-05 16:00:02 -- info: CONFIG - VM_SNAPSHOT_QUIESCE = 0
2012-03-05 16:00:02 -- info: CONFIG - VMDK_FILES_TO_BACKUP = all
2012-03-05 16:00:02 -- info: CONFIG - EMAIL_LOG = 0
2012-03-05 16:00:02 -- info:
***途中省略***
2012-03-05 20:29:54 -- info: Initiate backup for tatsutahime
2012-03-05 20:29:54 -- info: Creating Snapshot "ghettoVCB-snapshot-2012-03-05" for tatsutahime
Destination disk format: VMFS thin-provisioned
Cloning disk '/vmfs/volumes/datastore10/tatsutahime/tatsutahime.vmdk'...
Clone: 100% done.
2012-03-05 22:13:26 -- info: Removing snapshot from tatsutahime ...
2012-03-05 22:13:28 -- info: Backup Duration: 103.57 Minutes
2012-03-05 22:13:28 -- info: Successfully completed backup for tatsutahime!
2012-03-05 22:13:31 -- info: Initiate backup for amenoohabari
2012-03-05 22:13:31 -- info: Creating Snapshot "ghettoVCB-snapshot-2012-03-05" for amenoohabari
Destination disk format: VMFS thin-provisioned
Cloning disk '/vmfs/volumes/datastore10/amenoohabari/amenoohabari.vmdk'...
Clone: 100% done.
2012-03-05 22:30:51 -- info: Removing snapshot from amenoohabari ...
2012-03-05 22:30:52 -- info: Backup Duration: 17.35 Minutes
2012-03-05 22:30:52 -- info: WARN: amenoohabari has some Independent VMDKs that can not be backed up!
2012-03-05 22:30:53 -- info: ###### Final status: WARNING: All VMs backed up, but some disk(s) failed! ######
2012-03-05 22:30:54 -- info: ============================== ghettoVCB LOG END ================================
※WARN: amenoohabari has some Independent VMDKs that can not be backed up!
このワーニングは独立型のディスクを組んでいると出ます。
単純にスナップショットができないからなので、気にする必要はありません。
大抵独立型を使うということはデータの部分でしょうから、差分でのバックアップを別にとることと思います。
何かご質問があれば、下記までどうぞ。
webmaster@niriakot.jp
5.1u1も同時に現在使用していますが、
返信削除/var/spool/cron/crontabs/rootが編集できなくて、ちょっとはまりました。
何のことはない、削除して新規に作ればいいだけでした。。。
起動直後のrc.localも変更されていて、/etc/rc.local.d/にlocal.shを作って、コマンドを実行させるという感じになりました。
5.1u1のほうが簡単ですね。。。
5.1u1のバックアップにつきましては、
返信削除「ESXi5.1u1におけるFirewall設定について(SMTP発信)」
http://niriakot.blogspot.jp/2013/05/esxi51u1firewallsmtp.html
に書いてますので、ご参考ください。