無料で使えるVmwareEsxiで稼働中の仮想マシンについて、仮想マシンを停止することなくオンラインバックアップ(ホットバックアップ)する方法をご紹介します。
今回の要件
・ホットバップアップ(稼働中の仮想マシンのバックアップを取得)
・世代管理が可能なこと
・差分フルバックアップを併用できること
バックアップスクリプトの展開
まず、バックアップスクリプトをダウンロードしESXI上に展開します。
ダウンロード先:http://www.virtuallyghetto.com/
今回ダウンロードしたファイル ghettoVCB-master
ダウンロードしたファイルをESXIのストレージの何処でも良いので展開します。
今回はマウントしたバックアップストレージの直下にbackupshというディレクトリを作成しその中にスクリプトを配置しています。
ghettoVCB.confの編集
配置後、バックアップの設定を行っていきます。ghettoVCB.confというファイルがメインのファイルとなり、バックアップ先や世代管理などの設定を行う事が出来ます。
※主要箇所のみ記載しています。
VM_BACKUP_VOLUME=/vmfs/volume/xxxxxx/xxxxxx/ #保存する場所のフルパス VM_BACKUP_ROTATION_COUNT=3 #管理する世代番号
list.txtファイルの作成
次にバックアップ対象マシンのリストファイルlist.txtを作成します。ここに書かれている仮想マシンのインベントリー名を対象にバックアップを行っていきます。
中身
server1
server2
server3
ghettoVCB.sh に実行権限を付ける
chmod +x ghettoVCB.sh
バックアップ確認
以下のようにオプションを実行しながら、手動でコマンドをたたいてバックアップテストをおこなう。
./ghettoVCB.sh -f ./list.txt -g ./ghettoVCB.conf
バックアップオプションは以下の通りです。
Usage: ./ghettoVCB.sh -f [fusion_builder_container hundred_percent=”yes” overflow=”visible”][fusion_builder_row][fusion_builder_column type=”1_1″ background_position=”left top” background_color=”” border_size=”” border_color=”” border_style=”solid” spacing=”yes” background_image=”” background_repeat=”no-repeat” padding=”” margin_top=”0px” margin_bottom=”0px” class=”” id=”” animation_type=”” animation_speed=”0.3″ animation_direction=”left” hide_on_mobile=”no” center_content=”no” min_height=”none”][VM_BACKUP_UP_LIST] -c [VM_CONFIG_DIR] -l [LOG_FILE] -d [DEBUG_LEVEL] -g [GLOBAL_CONF] -e [VM_EXCLUSION_LIST]
OPTIONS:
-a Backup all VMs on host
-f List of VMs to backup
-c VM configuration directory for VM backups
-g Path to global ghettoVCB configuration file
-l File to output logging
-d Debug level [info|debug|dryrun] (default: info)
バックアップ中は進行状況を確認することが出来ます。
最後に以下のようにメッセージがでればバックアップ成功です。
2013-02-04 06:23:00 — info: ###### Final status: All VMs backed up OK! ######
2013-02-04 06:23:00 — info: ============================== ghettoVCB LOG END ================================
バックアップのスケジュール化
バックアップが正常にとれることを確認したら、いよいよスケジュール化です。定期実行するためにESXiのCronを利用するのですが、ESXiのCronはホストのリブート後にデフォルトのCronに戻ってしまうため、対策として「rc.local」を利用してESXi起動時にcron設定ファイル「var/spool/cron/crontabs/root」を作成するように工夫します。
vi /etc/rc.local
#auto add to cronjobs
/bin/kill $(cat /var/run/crond.pid)
/bin/echo “0 20 * * * /vmfs/volumes/datastore/backupsh/ghettoVCB.sh
-f /vmfs/volumes/datastore/backupsh/list.txt
-g /vmfs/volumes/datastore/backupsh/ghettoVCB.conf
> /vmfs/volumes/datastore/log/backup-$(date +%s).log”
>> /var/spool/cron/crontabs/root
/bin/busybox crond
リストアの手順
リストア元とリストア先を設定し、DISKの種類などを設定するファイルrestore.txtを作成します。
restore.txtの作成
#”;;”
# DISK_FORMATS
# 1 = zeroedthick
# 2 = 2gbsparse
# 3 = thin
# 4 = eagerzeroedthick
“/vmfs/volumes/datastore-backup; /vmfs/volumes/datastore-restore; 3”
1,4は必要なディスク容量を全て確保します。(確保タイミングが、起動前、起動時という違い)
3はディスク容量を全て確保せず、利用する分だけ確保します。
リストアする場合はスクリプトが格納されているディレクトリに移動し、以下のように実行します。
./ghettoVCB-restore.sh -c restore.txt
リストアが始まり、自動でインベントリに追加されます。
リストアした仮想マシンを起動させる際に警告が表示されるので「I moved it」を選択します。
※「I copied it」と回答するとネットワーク系の設定が初期化されてしまう。
以上でホットバックアップの世代管理を行いながら、いざというときにリストアができます。
また、バックアップ先のISCSIディレクトリを別のESXIでマウントしておき、なにかあればリストアせず直接起動するといったことも可能です。
[/fusion_builder_column][/fusion_builder_row][/fusion_builder_container]