おおまかに言って
1.VMサスペンド
2.ZFSスナップショットの作成
3.VMレジューム
4.ZFSスナップショットの送信
と言った流れ。
bashで書くと
———————————————–
#! /bin/bash
/usr/bin/virsh suspend ${VM}
/sbin/zfs snapshot ${SNAP}
/usr/bin/virsh resume ${VM}
/sbin/zfs send ${SNAP} > ${backup}
———————————————–
といった感じ。
動作中のゲスト内でのファイルの整合性は保証されません。
1~3は一瞬だと思ったのだが、実際に運用してみるとマシンによって結構時間がかかる。
やっぱり停止時間は最小限に抑えたい。
原因としてQEMUやZFSのキャッシュ書き出しが考えられたのでsyncを追加。
また、VMの設定ファイルを書き出すように変更。
———————————————–
#! /bin/bash
sync
sync
/usr/bin/virsh suspend ${VM}
/usr/bin/virsh dumpxml ${VM} > ${conf}
/sbin/zfs snapshot ${SNAP}
/usr/bin/virsh resume ${VM}
/sbin/zfs send ${SNAP} > ${backup}
———————————————–