KVMとDRBDでライブマイグレーション

こちらの記事でDRBD(LINSTOR)を使ったKVM環境の説明をしました。KVMにはライブマイグレーションの機能があり、仮想ゲストが動作中の物理ホストを別のホストに移すことができます。この機能を使うためには、各物理ホストから仮想ゲストの入ったデータ領域が参照できる必要があります。今回の記事ではDRBDのデバイスをライブマイグレーションに対応する設定について説明します。

KVMのライブマイグレーション

まず、DRBDと比較するためにNFSで仮想ゲストを共有した環境でライブマイグレーションを試します。
KVMで何らかのゲストOSをインストールして、仮想ゲストを停止します。ファイルが物理ホストのKVMのimagesディレクトリに保存されるので、それをNFSでマウントした共有フォルダに移動します。

テスト環境のNFSのディレクトリは/nfsdata/imagesです。KVMのimagesディレクトリは/var/lib/libvirt/imagesなので、このようなコマンドになります。

root@vm01:~# mv /var/lib/libvirt/images/rhel8.10.qcow2 /nfsdata/images/

仮想イメージファイルを移動した後、virt-managerからデバイスの設定を変更します。
一旦登録された仮想ディスクの情報を削除して、ハードウェアの追加から新たにストレージを登録します。ここではカスタムストレージの選択または作成(S)を選択して、ストレージファイルに先ほどNFSディレクトリにコピーしたイメージファイルを選択します。

ここでキャッシュモデル(H)はnoneにするのがポイントです。

仮想ゲストを起動すると物理ホスト(vm01)上でローカルファイルと同じように動作します。次にvirt-managerの仮想マシン(M)メニューから移行…を選択すると、別の物理ホスト(vm02)に仮想ゲストがそのまま移動します。

vm01で動いていたゲストOSが、そのままの状態でvm02へ移動します。

DRBDでの場合

KVMのデータをライブマイグレーション対応にするためには、DRBDのデュアルプライマリモードの機能を有効にする必要があります。

デュアルプライマリモードを有効にするには、drbdadmコマンドで一時的に変更する方法と、DRBDの設定ファイルを変更する方法があります。

drbdadmコマンドで有効にするには次のようにコマンドを実行してください。

root@vm01:~# drbdadm net-options Rocky --allow-two-primaries=yes

Rockyはリソース名です。機能を無効にするにはyesの代わりにnoを指定します。

設定の確認にはdrbdsetupコマンドを実行してallow-two-primariesの値を確認してください。

root@vm01:~# drbdsetup --show-defaults show Rocky | grep allow-two-primaries
            allow-two-primaries	yes;
            allow-two-primaries	yes;

設定ファイルを変更して機能を有効にするには、リソースの設定ファイルを編集して、net {}オプションにallow-two-primariesを追加します。この編集はDRBDでデータを同期している物理ホストすべてで行います。

resource "Rocky"
{
・・・・・
・・・・・
    net
    {
        ・・・・・
        allow-two-primaries yes;
        ・・・・・
    }
・・・・・
・・・・・

設定を変更した後、この変更をDRBDに読みこませるためdrbdadm adjustコマンドを実行します。

root@vm01:~# drbdadm adjust Rocky

このコマンドの実行により設定が読み込まれ、デュアルプライマリモードが有効になります。

最後に前回のKVM環境の記事ではLINSTORを使いましたので、LINSTORでの設定変更方法も紹介します。LINSTORの管理コマンド linstorで次のコマンドを実行します。

root@ns:~# linstor resource-definition drbd-options --allow-two-primaries yes Rocky

Rockyはリソース名で有効にする時にはyes、無効にしたい時にはnoを指定します。

DRBDのデバイスでもデュアルプライマリモードを有効にすることにより、KVM環境でライブマイグレーションを使ったゲストOSの管理が可能になります。