コンテンツにスキップ

ディスクイメージをオンラインでフルバックアップする

以下の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

上記例では、vda、vdb、vdcがブロックデバイスでバックアップ可能です。

バックアップ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
ジョブ形式:  なし

後処理

バックアップ先のイメージファイルを移動(リネーム)または別のメディアに保管します。 (そのままでも構いませんが、次回のバックアップ指示で同名ファイル存在でエラーになりますので、特にバッチ処理で行う場合などは考慮が必要です。)