« October 2009 | Main | December 2009 »

November 2009

November 17, 2009

リモートからXenのDomUとかLVMやファイルを差分バックアップするスクリプトを書いた

kazuho's blockdiff at master - GitHub

 月曜から XenServer の運用を始めたんですが、以下のような要件のバックアップツールがほしくなりまして。ちょっと調べた範囲で見つからなかったので、書いてみました。

  • スナップショットによる無停止でのバックアップ
  • 差分/多世代バックアップが可能
  • ネットワーク越しにプルベースでバックアップが可能

 元々は去年書いたバイナリファイルの差分バックアップスクリプト (データベースの差分バックアップとウェブサービスのお引っ越し)。これを拡張して、LVMを操作したり、バージョン番号を自動採番するようにしたり、ssh経由での転送機能をつけたりした感じです (ディスクは遅いからギガイーサなら over ssh でも問題ない)。

 詳しいことを知りたい人にはソースコードを読んでいただくとして (といっても300行ちょい)、たとえば XenServer 上の DomU のバックアップを取るなら、サーバ上で xe vm-disk-list コマンドを実行して論理ボリューム名を取得したあと、バックアップ用マシンの crontab にこんな感じで設定します。Xen以外の一般的なLVMのバックアップを取ることもできます。

0 3 * * * blockdiff_backup /var/xenbackup/vm01-`date '+%Y%m'` ssh_lvm_dump -z root@xenserver /dev/VG_XenStorage-... 2>&1

 これで、毎月1日にフルバックアップ、他の日は差分バックアップがとれる。リストアは、こんな感じ。

# for i in vm-01-200911.*.gz ; do \
>   gunzip < $i | blockdiff_merge /dev/VG_XenStorage-...
> done

 あとは、差分バックアップ時にディスクを全スキャンしなくてもよくなれば、もっとバックアップ頻度を上げられていいのにな、と思っています。

11/19追記: XenServerで使う場合の制限と詳細については、下記URLをご参照ください。