このブログを検索

2012年3月6日火曜日

ESXi5.0ゲストのホットバックアップ

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

2 件のコメント:

  1. 5.1u1も同時に現在使用していますが、
    /var/spool/cron/crontabs/rootが編集できなくて、ちょっとはまりました。
    何のことはない、削除して新規に作ればいいだけでした。。。
    起動直後のrc.localも変更されていて、/etc/rc.local.d/にlocal.shを作って、コマンドを実行させるという感じになりました。
    5.1u1のほうが簡単ですね。。。

    返信削除
  2. 5.1u1のバックアップにつきましては、
    「ESXi5.1u1におけるFirewall設定について(SMTP発信)」
    http://niriakot.blogspot.jp/2013/05/esxi51u1firewallsmtp.html
    に書いてますので、ご参考ください。

    返信削除