Linux KVM仮想マシンのバックアップとリストアの方法
仮想化における仮想マシンのバックアップは非常に簡単に出来るためやった方が良いと思う。
特にバックアップサーバーとして別マシンへのゲストOSとしてもバックアップ・リストア出来るためサーバー管理者にとっては非常に都合が良いと思う。
作業ユーザーは、KVMの管理コマンドvirshの実行権限を持っている事を前提として説明する。通常はrootユーザー。
■ 今回は以下の環境を前提条件として説明する。
実行環境はUbuntu20.04TLSとする。
項目 値
VMイメージファイル格納先 /var/lib/libvirt
VMイメージファイル名 debian12.img
VM設定ファイル格納先 /etc/libvirt/qemu
VM設定ファイル名 debian12.xml
1.バックアップ
KVM仮想マシンのバックアップを行う。
作業としては、VMのイメージファイルのコピーとVMの設定ファイルをDUMP出力してそれをファイルに保存する。
1)バックアップ対象の確認
バックアップ対象のVMの状態を確認
VMが停止してることを確認する。サーバーを稼働させたままでは、バックアップ出来ない(というよりしてはNG)なのでKVMの管理コマンドで確認する。
下記のコマンドで出力されるのは、現在稼働中のサーバーのみ。
root@UbuntuPC:~# virsh list
出力結果の見本
Id Name State
--------------------------
1 fileserver running
2 debian12 running
3 freebsd13 running
バックアップターゲットとするVMが動いてたらシャットダウンする。
root@UbuntuPC:~# virsh shutdown debian12
2)バックアップを取得
事前確認が終了したらバックアップを取得していく。
今回は、上記の確認結果のid3のdebian12仮想マシンのバックアップを取得する。
3)バックアップ格納ディレクトリを作成
バックアップデータを格納しておくディレクトリを作成しておく。自分は128GBのUSBメモリーを用意してそれにバックアップを行った。
余談だが、USBメモリーにバックアップするときはメディアのフォーマットはNTFSにした方が良いだろう。
root@UbuntuPC:# mkdir -pv ~/kvm-backup
4)KVM設定ファイルバックアップ
KVMの管理コマンドvirshを使ってVMの設定ファイルのバックアップを取得する。
root@UbuntuPC:# virsh dumpxml debian12 > ~/kvm-backup/debian12.xml
VM本体のデータのバックアップを取得する。
こちらは、専用コマンドはなく純粋に対象のVMのイメージファイルのコピーを取得する。
KVMの仮想マシンのイメージファイルのデフォルト格納先は、/var/lib/libvirtになる。
root@UbuntuPC:# cp -ivp /var/lib/libvirt/debian12.img ~/kvm-backup/debian12.img
以上でKVM仮想マシンのバックアップが完了となる。
このままバックアップデータとして保管しておくことも、別のKVMホストサーバーへ送りそちらでこのデータをリストアして別のKVMホストサーバーのVMとして稼働させることも可能(別のKVMホストサーバーへ送るときはネットワーク上をFTPとかSCOPYで転送するよりUSBメモリーで移動したほうが安全だと思う)。
2.リストア
バックアップを取得しておいた仮想マシンのリストア作業を説明します。
その際ホストのOSとハードウェア(私の経験的にCPUが多い)の相違によりVM設定ファイルの一部を修正する必要があります。
今回は、割愛します。
1) リストア環境の確認
リストア環境のVMの状態を確認
リストアを行うKVMホストサーバー上にリストアするVMと同じ名前の仮想マシンがないことを確認します。
root@UbuntuPC:# virsh list --all
出力結果の見本
Id Name State
--------------------------
1 fileserver running
2 ad1 running
- web running
- freebsd13 running
2)リストアデータの配置
リストア環境に同じ名前のVMがないことを確認したらバックアップしておいたデータを各々配置していきます。
配置先は、バックアップを取得した環境と同一のディレクトリに格納してください。
別の場所に格納する場合は、バックアップしておいたVMの設定ファイルのイメージファイルの格納先設定を書き換えなくてはなりません。
■VM設定ファイルの配置
バックアップ時とは、異なり設定ファイルも純粋にファイルをディレクトリへコピー(または、移動)するだけになります。
root@UbuntuPC:# cp -p ~/kvm-backup/debian12.xml /etc/libvirt/qemu/debian12.xml
■仮想マシンイメージファイルの配置
こちらも同様にバックアップしておいたイメージファイルを所定のディレクトリへコピー(または、移動)するだけです。
root@UbuntuPC:# cp -p ~/backup/kvm-backup/debian12.img /var/lib/libvirt/images/debian12.img
■VMのリストア(設定の適用)
設定ファイルとVMイメージファイルの配置が完了したらvirshコマンドを使ってKVMホストサーバーに設定を適用します。
root@UbuntuPC:# virsh define /etc/libvirt/qemu/debian12.xml
■仮想マシン一覧を確認してリストアできているかを確認する。
root@UbuntuPC:# virsh list --all
出力結果の見本
Id Name State
--------------------------
1 fileserver running
2 ad1 running
- web running
- freebsd13 running
- debian12 running
VM一覧に新しくdebian12という仮想マシンが出てきた。
リストア自体は、以上で完了となる。
仮想マシンを実際に起動してみてエラーが出る場合は、設定ファイルを見直すようにする。