ディスクイメージをオンラインでフルバックアップする¶
以下のKVM環境の場合、比較的容易にオンラインでディスクイメージをバックアップすることができます。
- libvirt-7.2.0 以降
- QEMU-4.2 以降
以下の実例は、AlmaLinux 8.7で動作確認をしています。
VMが起動しているままでディスクをバックアップすることができますが、パフォーマンスは多少なり低下します。かつフルバックアップになるので、影響が低い時間帯で実施するなど考慮が必要です。また、静止点を考慮する必要があります。書き込みのためにオープンしているファイルがないほうが望ましいです。ですので、メンテナンス時間帯などの良いタイミングでVMを停止して、確実なバックアップを行うことをおすすめします。
仮想マシンのディスク情報を確認する¶
# virsh domblklist testvm
ターゲット ソース
--------------------------------------------------
vda /var/images1/testvm.img
vdb /var/images2/testvm_data.img
vdc /var/images2/testvm_backup.img
hdc /var/iso/dummy.iso
バックアップXMLを作成する¶
バックアップXMLが無くてもバックアップできますが、バックアップ対象の指定やバックアップ先の指定のために作成します。例では、
- バックアップ先は /var/backup/kvm
- vdaとvdbをバックアップ対象とし、vdcはバックアップ対象から外す
内容で定義しています。
<domainbackup>
<disks>
<disk name="vda" backup="yes" type="file">
<target file="/var/backup/kvm/testvm.img" />
<driver type="qcow2" />
</disk>
<disk name="vdb" backup="yes" type="file">
<target file="/var/backup/kvm/testvm_data.img" />
<driver type="qcow2" />
</disk>
<disk name="vdc" backup="no" />
</disks>
</domainbackup>
バックアップ指示を出す¶
virsh backup-begin
コマンドを、ドメインと作成したバックアップXMLを指定して実行します。
# virsh backup-begin testvm --backupxml bk_testvm.xml
Backup started
Backup started
と表示されプロンプトに戻ります。
バックアップの進捗を確認する¶
バックアップ指示が成功すると、バックグラウンドでバックアップ処理が動いていますので、virsh domjobinfo
コマンドで進捗を確認します。
# virsh domjobinfo testvm
ジョブ形式: 無制限
Operation: Backup
経過時間: 20375 ms
処理済みファイル: 3.800 GiB
残りファイル: 20.200 GiB
合計ファイル: 24.000 GiB
# virsh domjobinfo testvm
ジョブ形式: なし
結果を確認する¶
virsh domjobinfo
コマンドに--completed
オプションを追加して、最新ジョブの処理結果を確認します。
# virsh domjobinfo testvm --completed
ジョブ形式: Completed
Operation: Backup
経過時間: 83898 ms
処理済みファイル: 24.000 GiB
残りファイル: 0.000 B
合計ファイル: 24.000 GiB
# virsh domjobinfo testvm --completed
ジョブ形式: なし
後処理¶
バックアップ先のイメージファイルを移動(リネーム)または別のメディアに保管します。 (そのままでも構いませんが、次回のバックアップ指示で同名ファイル存在でエラーになりますので、特にバッチ処理で行う場合などは考慮が必要です。)