Linux

KVMのVMイメージを別のマシンで動かす(移動)方法

*記事内に商品プロモーションを含む場合があります

KVMのVMイメージを別のマシンで動かす方法を紹介します。

別のサーバにVMを移動させたり、別のサーバにコピーを作成したい場合に利用可能です。

1. 仮想マシン(VM)のファイル位置を確認

コピー元のVMのイメージファイルの絶対パス付ファイル名を確認します。

virsh domblklist <VM名>

(実行例)
virsh domblklist RockyLinux8

(出力例)
/home/test1/vm-images/RockyLinux8.qcow2

2. VM設定のエクスポート

VMの設定をエクスポートします。
ファイルへ出力し、このファイルを移動先でインポートします。

リダイレクトでファイルへ出力します。出力ファイル名はなんでもOKです。

virsh dumpxml <VM名>  > vm_config.xml

(コマンド例)
virsh dumpxml RockyLinux8 > vm_config-RockyLinux8.xml

3. VM設定ファイルとVMイメージファイルのコピー

VM設定ファイル(*.xml)とVMイメージファイル(*.qcow)をscpなどでマシン間でコピーします。

(コマンド例)
scp vm_config-RockyLinux8.xml test1@IPアドレス:/home/test1/vm-images/

scp /home/test1/vm-images/RockyLinux8.qcow2 test1@IPアドレス:/home/test1/vm-images/

4. VM設定のインポート

virsh define vm_config.xml

(コマンド例)
virsh define vm_config-RockyLinux8.xml

ホストがRHEL8などでは、以下にファイルがコピーされます。

ls -ltrF /etc/libvirt/qemu/

virsh list に反映されるまで、30秒ほどのラグがある時があります。

パーミッション(ファイルの権限)を合わせます。すでに動作しているVMがあれば、その権限設定に合わせます。

[test1@server1 ~/vm-images]$ ls -l

-rw——- 1 qemu qemu 322171961344 Feb 26 10:24 RockyLinux9.qcow2 ★既存のVMイメージファイル
-rw——- 1 test1  users 536953094144 Feb 27 13:16 RockyLinux8.qcow2

chown qemu RockyLinux8.qcow2

chgrp qemu RockyLinux8.qcow2

5. VM設定の調整

virsh edit VM名

・VMイメージのディレクトリ位置の調整
必要に応じてディレクトリ位置を変更します。

・ネットワーク調整
コピー先のマシンに適したネットワーク設定に変更します。

KVMホストのコピー元とコピー先でDHCPを使っている場合、VMのDHCPで割り当てられていたIPアドレスは同じものが割り当てられます。
IPが重複していない場合は、同じIPが使えそうです。

6.VMを起動
virsh start <VM名>

VMにsshで接続できない場合は、VMのコンソールに接続してエラーなどを確認します。
consoleはVMのネットワーク設定がおかしくても接続できます。

virsh console <VM名>

(コマンド例)
virsh console RockyLinux8