VMware ESXi を ghettoVCB で自動バックアップ

VMware ESXi を使い始めて1月半ほど経ったところで、仮想マシンのバックアップ環境も構築しておくことにした。自分用だけでなく一般公開用のサーバーもいくつか動かしているから、バックアップがあると安心だ。

今回は新たに 500GB のハードディスクを増設し、それをバックアップ専用のストレージとする。

環境:VMware vSphere Hypervisor 7.0U3g(英語環境)

(1)増設するハードディスクは念のため Mac で exFAT にフォーマットした上で、設置した。

ESXi を起動すると「Navigator>Storage>Devices」で認識されていた。

該当のハードディスク名をクリックし、「Actions>Clear partition table」をクリック。これでパーティションテーブルがクリアされる。

(2)「New datastore」をクリックし、適当なデータストア名を決めて、ディスク内のすべての容量を使用するようにした。

これで新たにデータストアが作られた。

(3)ghettoVCB をダウンロードする。以下の「Code>Download Zip」から。

GitHub - lamw/ghettoVCB: ghettoVCB
https://github.com/lamw/ghettoVCB

(4)「ESXi>Navigator>Storage>Datastore browser」をクリック。

3の Zip ファイルを2のデータストアのルートディレクトリにアップロードする(別のデータストアにアップロードしてもいい)。

(5)ESXi に SSH でログインする。

(6)以下のコマンドで2のデータストアの場所を確認。

# df -h

cd コマンドでそこに移動する。ls コマンドで確認すれば、4でアップロードした Zip ファイルが確認できるはずだ。

(7)Zip ファイルを解凍。

# unzip ghettoVCB-master.zip

(8)解凍したファイル内の ghettoVCB.sh を編集する。

# cd ghettoVCB-master/
# vi ghettoVCB.sh

(vi は使い慣れていないのでメモ。i でカーソルキーの位置に文字を挿入。/ で検索。編集後は Esc キーを押した後、:wq を入力し、Enter することで保存して終了。変更がない場合の終了は :q 。)

最低限、以下を編集する。

・VM_BACKUP_VOLUME:バックアップの保存先
・DISK_BACKUP_FORMAT:バックアップのフォーマット(デフォルトは thin)
・VM_BACKUP_ROTATION_COUNT:バックアップ世代数

(9)バックアップ対象の仮想マシンを指定する vmlist.txt(ファイル名は任意)を作成し、改行区切りで記述する。

仮想マシン名は ESXi の「Navigator>Virtual Machines」で確認するか、以下のコマンドで確認する。

# vim-cmd vmsvc/getallvms

(10)試しに以下のコマンドで dryrun を実行してみる。

# ./ghettoVCB.sh -f ./vmlist.txt -d dryrun

info: ###### Final status: OK, only a dryrun. ###### と表示されれば問題ない

(11)実際に実行してみる。

# ./ghettoVCB.sh -f ./vmlist.txt

問題なく完了すれば以下のように表示される。

info: ###### Final status: All VMs backed up OK! ######

データストアには仮想マシンごとにディレクトリが作成されて、そこにバックアップファイルが保存されていた。なお、そのフォルダー名のタイムスタンプは UTC なので、9時間前となっている。

(12)自動バックアップは /etc/rc.local.d/local.sh へ記述する。毎週月曜日と木曜日の 23:15 に実行するようにした(UTC で設定する必要があるので、9時間前の 14:15 を指定する)。

cat<<_EOT_>>/var/spool/cron/crontabs/root
15 14 * * 1,4 /vmfs/volumes/{データストア名}/ghettoVCB-master/ghettoVCB.sh \
-f /vmfs/volumes/{データストア名}/ghettoVCB-master/vmlist.txt
_EOT_

/bin/kill $(cat /var/run/crond.pid)
/bin/crond
exit 0

(13)ESXi を再起動し、/var/spool/cron/crontabs/root に cron が正しく記述されていることを確認する。

cron の指定時刻になると、問題なくバックアップが実行されていたことを確認した。

参考:
ESXi 6.7u3でHDD増設してデータストアを追加する手順 - そういうのがいいブログ
https://souiunogaii.hatenablog.com/entry/ESXi67-add-datastore

viコマンドについて詳しくまとめました 【Linuxコマンド集】
https://eng-entrance.com/linux-command-vi

【初心者向け】viでの文字列の検索方法を一通り
https://eng-entrance.com/linux-vi-search

コマンドラインから仮想マシンの一覧を取得する : vim-cmd vmsvc/getallvms / ESXi 4.0 Update 2: “HP ML115 G5”と自作機で、できたこと
http://virtual.cocolog-nifty.com/virtualmachine/2010/07/vim-cmd-vmsvcge.html

ESXi 7.0でバックアップを自動取得する - 蒲田ネット
https://blog.kamata-net.com/archives/12367.html

ESXi Hypervisor上のVM自動バックアップ - 雑木林
https://zokibayashi.hatenablog.com/entry/2019/05/06/222446

ESXiにてghettoVCBを利用したコールドバックアップをやった件 - Qiita
https://qiita.com/garakutayama/items/9c1641dd3e41777a40b9

ESXiのVMバックアップは「ghettoVCB」一択
http://blog.andromeda.jp/archives/3160

ESXi上の仮想マシンバックアップ(ghettoVCB) - スズハドットコム
https://www.suzu-ha.com/entry/2019/11/06/011659

VMware オンラインバックアップ
https://www.unix-power.net/networking/post-508

無償版ESXiのホストと仮想マシンの自動バックアップを設定する - インフラエンジニア風 備忘録
https://miyamo83.com/20220717/


この記事が気に入ったらサポートをしてみませんか?