VMWare ESXi の仮想マシンバックアップ
VMWare ESXiの仮想マシンのバックアップ方法は他にもありますが、今回はESXi内データストア(NFS等)にバックアップするツール「ghettoVCBスクリプト」を使います。
■前準備
https://github.com/lamw/ghettoVCBにより、スクリプトをダウンロードします。
ページの右側に「Code」メニューがあります、「Download Zip」で取得します。ghettoVCB-master.zipというファイルがダウンロードされるので、ESXiのデーターストア(例:nas_nas1)に転送します。
※保存用、ESXiのNFSデータストアについて、下記のリンクを参照。
ESXi 6.7のNFS データストアの作成
# cd /vmfs/volumes/nas_nas1
# ls -la
drwxr-xr-x 9 root root 11 Jun 15 03:03 .
drwxr-xr-x 1 root root 512 Jun 15 03:03 ..
-rw-r--r-- 1 root root 44257 Jun 15 03:03 ghettoVCB-master.zip
バックアップ用フォルダーを作成し、スクリプトを解凍します。
# mkdir vm_backupバックアップを実施するためのコンフィグレーション情報を実環境に合わせて変更します。
# unzip ghettoVCB-master.zip -d vm_backup
# cd vm_backup/ghettoVCB-master
# vi ghettoVCB.conf
バックアップの保管フォルダ
VM_BACKUP_VOLUME=/vmfs/volumes/nas_nas1/vm_backup
バックアップ世代管理番号
VM_BACKUP_ROTATION_COUNT=3
バックアップするVMを決める一覧のテキストファイルを作成します。ファイルの内容は仮想マシンのインベントリ名を記述します。
# vi vmlist_daily.txt
jvncentos73
jvnubuntu18.04
等
※イベントリー名に「[」や「(」などの記号が入っているとエラーになるのでご注意!
■バックアップの実行
# ./ghettoVCB.sh -f vmlist_daily.txtこれで、バックアップが出来ました。VMのイメージを保管するフォルダが作成されているはずです。
定期的にバックアップが実行されるようにcronを使うのですが、ESXiのcron設定については下記の記事をご参照。
「 VMware ESXi 6.7 に cron を設定する」
■バックアップの実行結果のメール送信
管理者にバックアップ状況をメールで送信する機能を設定します。
# vi ghettoVCB.sh
#########################################################
# EMAIL CONFIGURATIONS
#
# Email Alerting 1=yes, 0=no
EMAIL_ALERT=1
# Email log 1=yes, 0=no
EMAIL_LOG=1
# Email Delay Interval from NC (netcat) - default 1
EMAIL_DELAY_INTERVAL=1
# Email SMTP server
EMAIL_SERVER=192.168.xx.xx
# Email SMTP server port
EMAIL_SERVER_PORT=xx
# Email SMTP username
EMAIL_USER_NAME=xxxx
# Email SMTP password
EMAIL_USER_PASSWORD=xxxx
# Email FROM
EMAIL_FROM=admin@jv-net.net
# Comma seperated list of receiving email addresses
EMAIL_TO=admin@jv-net.net
# Comma seperated list of additional receiving email addresses if status is not "OK"
EMAIL_ERRORS_TO=admin@jv-net.net
■ESXi のファイアウォールのメール送信ルールを追加する
/etc/vmware/firewall/. に下記の設定内容の email.xml を追加する。
# vi email.xml
<ConfigRoot>
<service>
<id>email</id>
<rule id="0000">
<direction>outbound</direction>
<protocol>tcp</protocol>
<porttype>dst</porttype>
<port>xx</port>
</rule>
<enabled>true</enabled>
<required>false</required>
</service>
</ConfigRoot>
上記の設定は完了した後に、下記のコマンドを実行し、ESXiがメール送信できるようにファイヤーウォールに25ポートを通すようにする。
/bin/esxcli network firewall refresh
設定結果を確認する。
# esxcli network firewall ruleset list
Name Enabled
---------------------- -------
sshServer true
sshClient false
。。。<省略>
email true
以降、cron 設定により、毎日バッチの定期的にバックアップの実行ログが設定されているメールアドレスへ送信される。
■リストア
やはり万の一のためにバックアップしたVMイメージから復旧したい場合、本スクリプトがVMをリストアする機能を用意してありますので、下記の手順で行います。
リストア用のテンプレートがあるので、それを参照して、リストア用のファイルを作成します。
ファイル内、特に最後のパラメータは数字で、下記の意味する。
・1,4 は必要なディスク容量を全て確保、(起動前、起動時という違い)
・3 はディスク容量を全て確保せず、利用する分だけ確保
# cd //vmfs/volumes/nas_nas1/vm_backup/ghettoVCB-master
# cp ghettoVCB-restore_vm_restore_configuration_template restore.txt
# vi restore.txt
------------------------------------------------------------------------------------------
#"<DIRECTORY or .TGZ>;<DATASTORE_TO_RESTORE_TO>;<DISK_FORMAT_TO_RESTORE>"
# DISK_FORMATS
# 1 = zeroedthick
# 2 = 2gbsparse
# 3 = thin
# 4 = eagerzeroedthick
# e.g.
"/vmfs/volumes/nas_nas1/vm_backup/jvncentos73/jvncentos73-2022-06-05_10-38-01;/vmfs/volumes/01os_nas2/;3"
------------------------------------------------------------------------------------------
上記のファイルが用意できたら、下記のコマンドを実行する。
# ./ghettoVCB-restore.sh -c restore.txt
※しばらく待ったら完了します。エラーが無ければ、ESXi上VMが作成されるはずです。