Novell SUSE Linux + Windows XEN イメージのバックアップ

SUSE Linux Enterprise 11 に実装された XEN から、 xm shutdown コマンドで 完全仮想化された Windows に外部から Shutdown コマンドを送ることができるようになりました。今までは Windows の管理者権限で net shutdown コマンドを実行する必要があったのですが、xm shutdown を使うことで、簡単に、仮想化された Windows のシャットダウン、イメージバックアップ、再起動を行うことができます。

ただし、Novell の SUSE 用仮想ドライバ Virtual Machine Driver Pack (VMDP) が必要です。


-cron による自動実行-

シェルは /sbin/backup.sh で cron による自動実行で行われます。自動実行を行う root の crontab ファイルは /var/spool/cron/tabs/root です。

このファイルを編集するには

# crontab -e

コマンドで vi エディタで修正します。形式は

分 時 日 月 曜日 コマンド

です。

0 2 * * * /sbin/backup.sh

の場合、毎時 AM 2:00 にバックアップを実行します。

※ crontab -r はこのcrontabファイルを削除します。 e の隣が r で間違えやすいので、必ず root の crontab をバックアップしてから crontab -e を実行してください。

-バックアップシェルの実態-

不慣れですが、バックアップ用のシェルを作りました。バックアップシェルは次の作業を行います。
- 日時を /var/log/backup.log に書きこみます。
- for 文で変数 i に対して各 VM マシン名を代入して変数がなくなるまで処理します。
- mv により、前回のバックアップを上書きコピーします。
- xm shutdown により仮想マシンをシャットダウンします。 sleep で指定された時間待ちます。
- 時間内にシャットダウンできない場合は xm destroy で強制終了させます。
- tar -cvzf により /var/lib/xen/images 以下の仮想マシンイメージを /backup に圧縮します。
- xm create により、バックアップが終わった仮想マシンを再起動します。
- これを各仮想マシンごとに実行して、最後にタイムスタンプを書きこみます。

-サンプルスクリプト-

#! /bin/sh

# for in value "i" to vmachine name
for i in MyVM1 MyVM2 MyVM3 
do
date >> /var/log/backup.log
echo ------start--------- >> /var/log/backup.log

#backup before archived backup
mv /backup/$i.tar.gz /backup/$i.tar.gz.bak >> /var/log/backup.log

# xm shutdown and sleep until shutdown complete
/usr/sbin/xm shutdown $i >> /var/log/backup.log
sleep 180 >> /var/log/backup.log
# if not shutdown then destroy
/usr/sbin/xm destroy $i >> /var/log/backup.log

# archive xen image to /backup/ --- tar.gz and reboot xen V Machine
tar -cvzf /backup/$i.tar.gz /var/lib/xen/images/$i/* >> /var/log/backup.log
/usr/sbin/xm create $i >> /var/log/backup.log
sleep 30

echo -----end------ >> /var/log/backup.log
done

date >> /var/log/backup.log
echo -----all end------ >> /var/log/backup.log
echo . >> /var/log/backup.log

ポイントは xm shutdown MyVM を実行してから、30 秒後に Windows がシャットダウンを開始するところです。ここでは sleep 180 を実行して、シャットダウンの信号を送ってから3分待ちますが、ADが動作しているサーバなど、シャットダウンに5分とか10分とかかかるような仮想マシンの場合は Sleep 時間を長めに取らなければならないところでしょうか。

また、上のシェルでは MyVMx が /var/lib/xen/images/ に代入されるので、仮想マシンのイメージディレクトリ、仮想マシン名( /etc/xen/vm ) の名前が一致している必要があります。

このサンプルでは仮想マシンイメージを tar.gz で圧縮しています。およそ10%から20%くらいまで圧縮されますが、それだけの時間がかかるということも考慮してください。

Novell SUSE Linux SLES 11 XEN Windows 仮想化 自動バックアップ

Visit My Site
by islandcenter | 2010-03-07 12:49 | SUSE | Comments(0)