Linux KVM仮想マシンのバックアップとリストア手順
作業ユーザーは、KVMの管理コマンドvirshの実行権限を持っている事を前提として説明します。
今回は以下の環境として説明します。
実行環境はUbuntu20.04TLSになります。
項目 | 値 |
---|---|
VMイメージファイル格納先 | /var/lib/libvirt |
VMイメージファイル名 | mail.img |
VM設定ファイル格納先 | /etc/libvirt/qemu |
VM設定ファイル名 | mail.xml |
バックアップ
KVM仮想マシンのバックアップを行います。
作業としては、VMのイメージファイルをコピーと、VMの設定ファイルをDUMP出力してそれをファイルに保存します。
1. バックアップ対象の確認
-
バックアップ対象のVMの状態を確認
VMが停止してることを確認する。サーバーを稼働させたままでは、バックアップ出来ない(というよりしてはダメ)なのでKVMの管理コマンドで確認する。下記のコマンドで出力されるのは、現在稼働中のサーバーのみになります。
virsh list
出力結果の見本
Id Name State -------------------------- 1 filesrv running 2 mail running 3 labo6 running
2. バックアップを取得
事前確認が終了したらバックアップを取得していきます。
今回は、上記の確認結果のid3のmail仮想マシンのバックアップを取得します。
-
バックアップ格納ディレクトリを作成
バックアップデータを格納しておくディレクトリを作成しておきます。mkdir -pv ~/kvm-backup
-
KVM設定ファイルバックアップ
KVMの管理コマンドvirshを使ってVMの設定ファイルのバックアップを取得します。virsh dumpxml mail > ~/kvm-backup/mail.xml
-
VM本体のデータのバックアップを取得します。
こちらは、専用コマンドはなく純粋に対象のVMのイメージファイルのコピーを取得します。
KVMの仮想マシンのイメージファイルのデフォルト格納先は、/var/lib/libvirtになります。cp -ivp /var/lib/libvirt/mail.img ~/kvm-backup/mail.img
以上でKVM仮想マシンのバックアップが完了となります。
このままバックアップデータとして保管しておくことも、別のKVMホストサーバーへ送り
そちらでこのデータをリストアして、別のKVMホストサーバーのVMとして稼働させることも可能です。
リストア
バックアップを取得しておいた仮想マシンのリストア作業を説明します。
その際ホストのOSとハードウェア(私の経験的にCPUが多い)の相違によりVM設定ファイルの一部を修正する必要があります。
今回は、割愛します。
1. リストア環境の確認
-
リストア環境のVMの状態を確認
リストアを行うKVMホストサーバー上にリストアするVMと同じ名前の仮想マシンがないことを確認します。virsh list --all
出力結果の見本
Id Name State -------------------------- 1 filesrv running 2 ad1 running - web running - labo6 running
2. リストアデータの配置
リストア環境に同じ名前のVMがないことを確認したらバックアップしておいたデータを各々配置していきます。
配置先は、バックアップを取得した環境と同一のディレクトリに格納してください。
別の場所に格納する場合は、バックアップしておいたVMの設定ファイルのイメージファイルの格納先設定を書き換えなくてはなりません。
-
VM設定ファイルの配置
バックアップ時とは、異なり設定ファイルも純粋にファイルをディレクトリへコピー(または、移動)するだけになります。cp -p ~/kvm-backup/mail.xml /etc/libvirt/qemu/mail.xml
-
仮想マシンイメージファイルの配置
こちらも同様にバックアップしておいたイメージファイルを所定のディレクトリへコピー(または、移動)するだけです。cp -p ~/backup/kvm-backup/mail.img /var/lib/libvirt/images/mail.img
3. VMのリストア
設定ファイルとVMイメージファイルの配置が完了したらvirshコマンドを使ってKVMホストサーバーに設定を適用します。
-
リストア
virsh define /etc/libvirt/qemu/mail.xml
仮想マシン一覧を確認してリストアできているかを確認する。
virsh list --all
出力結果の見本
Id Name State -------------------------- 1 filesrv running 2 ad1 running - web running - labo6 running - mail running
VM一覧に新しくmailという仮想マシンが出てきました。
リストア自体は、以上で完了となります。
仮想マシンを実際に起動してみてエラーが出る場合は、設定ファイルを見直してください。
以上、ありがとうございました。
- 参考サイト
MSeeeeN