KVMゲストをエクスポート/インポートする

構築済み/稼働中のKVMゲストを別のKVMホスト(KVMサーバ)にエクスポートする方法に関して

はじめに

先日 CentOS7上にKVMサーバを構築する という記事を書いたのですが、新たにKVMサーバが増えたので、幾つかのKVMゲストを新サーバに移行しました。

という事でエクスポート/インポートするための方法に関して書きます。

幾つかの方法がありますが、私が実際に行った手順に関して説明します。

環境

環境は以下

KVMサーバOS(移行前) CentOS 6.8
KVMサーバOS(移行後) CentOS 7.2

手順

移行手順

  1. KVMゲストのシャットダウン

    移行対象 ( 以下 移行元 ) のゲストをシャットダウンします。

    ゲストOSにログインしてからシャットダウンする。
    仮想マシンマネージャやvirshコマンドでシャットダウンする等ありますが、お好きな方法でどうぞ。

  2. XML設定ファイルの出力

    シャットダウンが完了したら、移行元のXML設定ファイルを出力します。

    # virsh dumpxml KVMゲスト名 > XMLファイル名
    
  3. イメージファイル/XMLファイルのコピー

    移行元の KVMイメージファイル、及び、上で出力したXMLファイルを移行先にコピーします。

    30分で仮想サーバ(KVMホスト)環境を構築するにあるように yum を利用してインストールした場合、イメージファイルの格納先は /var/lib/libvirt/images ディレクトリになっていると思います。
    適当な方法でファイルをコピーして下さい。

  4. XML設定ファイルの編集

    必要に応じてXMLファイルを編集します。

    イメージファイルの格納先が変更になっている場合等はXMLを編集する必要があります。

    これ以外にもメモリやCPUの割り当て数量を変更する事も可能です ( インポート後に仮想マシンマネージャを利用して設定する事も可能です )。

  5. 移行先でのインポート

    移行先でKVMゲストを登録します。上で出力したXMLファイルを利用します。

    # virsh define XMLファイル名
    

    virsh define コマンドは XML ファイルからドメイン ( KVMゲスト ) の定義 ( 登録 ) を行います。

    ※KVMゲストの起動処理は行いません。

    ※既にKVMゲストが登録済みの場合は上書きされる。

    ※既にKVMゲストが実行済みの場合、定義が有効になるのは次回起動時。

  6. 登録確認

    ドメインが登録されたかどうか確認しておきましょう。

    # virsh list --all
    

確認

ドメインが登録されたら動作確認を行います。

最初は仮想マシンマネージャのグラフィカルコンソールを利用するのが簡単かと思います。

参考 : GUIでKVMの仮想マシンを管理する

※設定に問題があって起動途中でこけたりした場合、リモートから確認はできない。

無事起動できたら、必要に応じて設定 ( ネットワーク設定等 ) を変更しましょう。

まとめ

私のところでは上記手順で無事移行する事ができました。

旧KVMサーバ上では Redmine 等日常的に利用しているサーバの幾つかの動作が時々重くなる事があったのですが、新サーバに移行してリソース的に余裕ができた事もあってか、以前よりも快適に利用できるようになりました。

このようにリソース面で厳しくなった場合等に、新たな環境に移行しやすいというのもKVM (仮想化) を利用する際の利点の一つですね。