AlmaLinux 9
Sponsored Link

KVM : ストレージマイグレーション2023/02/28

 
仮想マシンのストレージマイグレーション機能の利用です。
ある KVM ホスト上で稼動している仮想マシンを、稼動させたまま別の KVM ホストに移動できます。 システムメンテナンス等で片方の KVM ホストを停止したい場合に、その上で稼動している仮想マシンを別の KVM ホストに移動させ、仮想マシンを常に稼働させたまま 片側のシステムのメンテナンスをするといったことが可能になります。
通常のライブマイグレーションと異なる点は、ライブマイグレーションでは 2 台の KVM ホストサーバーで利用する仮想マシンイメージはストレージサーバー上で共有されているため、仮想マシンの実体そのものは移動しませんが、 ストレージマイグレーションでは、仮想マシンイメージを格納するストレージサーバーは必要とせず、2 台の KVM ホストサーバー間で仮想マシンイメージそのものをマイグレートさせます。
                          Storage Migration
                        <------------------->
                        
+----------------------+                     +----------------------+
|  [   KVM Host #1  ]  |10.0.0.30   10.0.0.51|  [  KVM Host #2   ]  |
|                      +---------------------+                      |
|   kvm01.srv.world    |                     |    kvm02.srv.world   |
+----------------------+                     +----------------------+

[1]
2 台の KVM ホストサーバーを準備し、いずれか一方の KVM ホストサーバーで仮想マシンを作成しておきます。
また、DNS や ローカル hosts 等で、両サーバーが正常に名前解決できる必要があります。
[2] KVM ホストで Firewalld を有効にしている場合、必要なポートの許可が必要です。
[root@kvm01 ~]#
firewall-cmd --add-service={libvirt,libvirt-tls}

[root@kvm01 ~]#
firewall-cmd --add-port=49152-49215/tcp

[root@kvm01 ~]#
firewall-cmd --runtime-to-permanent

[3] 仮想マシンを作成した KVM ホスト側で仮想マシンイメージのファイルのサイズを調べ、もう一方の KVM ホスト側で、同じサイズの空ディスクイメージを作成しておきます。
# 仮想マシンのディスクイメージのサイズ確認

[root@kvm01 ~]#
qemu-img info /var/kvm/images/almalinux9.img

image: /var/kvm/images/almalinux9.img
file format: qcow2
virtual size: 20 GiB (21474836480 bytes)
disk size: 5.15 GiB
cluster_size: 65536
Format specific information:
    compat: 1.1
    compression type: zlib
    lazy refcounts: true
    refcount bits: 16
    corrupt: false
    extended l2: false

### 相手先 KVM ホスト ###

# 作成済み仮想マシンイメージと同サイズの空ディスクイメージ作成

[root@kvm02 ~]#
qemu-img create -f qcow2 -o preallocation=falloc /var/kvm/images/almalinux9.img 21474836480

[4] 以上の準備が整ったら、仮想マシンを起動して、ライブストレージマイグレーションを実行します。
双方の KVM ホストで root ユーザーで SSH 接続するため、事前に SSH 鍵ペアを作成して設定しておくとよいでしょう。
[root@kvm01 ~]#
virsh start almalinux9

[root@kvm01 ~]#
virsh list

 Id   Name         State
----------------------------
 1    almalinux9   running

[root@kvm01 ~]#
virsh migrate --live --copy-storage-all almalinux9 qemu+ssh://kvm02.srv.world/system

[root@kvm01 ~]#
virsh list

 Id   Name   State
--------------------

# 稼働中の仮想マシンは移動した
### マイグレーション先の KVM ホスト ###

[root@kvm02 ~]#
virsh list

 Id   Name         State
----------------------------
 1    almalinux9   running

関連コンテンツ