先日書いた VMware ESXi 4.0 で仮想マシン (以下 VM) を自動バックアップするスクリプトを、仕事の息抜きがてら、CentOS 5.3 上で稼働する VMware Server 2.0 にも対応させてみた。

以前の VMware Server 1.0 で vmware-cmd を利用していた VM 自動バックアップ・スクリプトを修正すれば、2.0 でもほぼそのまま使えるが、ESXi 4.0 の vim-cmd に相当する VM 操作コマンドが VMware Server 2.0 では vmware-vim-cmd と名称は多少違うものの、多くのサブコマンドが ESXi と共通。となればバックアップ・スクリプトを別途用意するより、スクリプト内で環境の違いを吸収してどちらでも動くようにした方が、スマートだ。スクリプトを NFS 共有ディレクトリに置いて ESXi と VMware Server 2.0 で文字通り共有すれば、メンテナンス性も高まる。


バックアップ・スクリプトの動作は、基本的に ESXi 版のフローを踏襲しつつ、VMware Server 独自の処理を加えて行く。ESXi 版では仮想ディスクをロックから開放して VM を再起動させるために ESXi 自身で作成していたスナップショットは、VMware Server 版では VM ディレクトリをごとバックアップするため、Linux の LVM で作成することにした。VM を停止させてスナップショットを作成したら、すかさず起動するのは ESXi 版と同様だ。

また VMware Server では ESXi と違って普通に各種コマンドが利用できるので、読み取り専用でマウントした LVM スナップショットの中から任意の VM をディレクトリごと圧縮してアーカイブすれば、ディスク容量を節約できる。その場合の圧縮方法は何でもいいが、CPU 負荷や時間等のコストバランスから、tar + gzip を採用した。

LVM の空き容量調査、スナップショットの作成~マウント、バックアップ作成後のマウント解除~スナップショット削除の処理を追加し、ひとまず VMware ESXi 4.0 と VMware Server 2.0 双方で動作するバックアップ・スクリプトが完成。1週間ほど運用してみたところ、意図通りに動いている。

さて、これで枕を高くして眠れるぞ、と言いたいところだが、こんなエントリーを書いて (現実逃避して) いたせいで仕事の切迫度合いがさらに高まり、ますます寝る暇がない・・・。

Comments are closed.