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