ミニPCでのLINSTORとKVMによる仮想環境構築

はじめに

ミニPC3台を使ってLINSTORとKVMで仮想環境を作ってみました。LINSTORを使った簡単な利用例として紹介します。

機器構成

3台のミニPCを用意しました。参考までにそれぞれのスペックはこのようになります。

ホスト名CPUメモリ用途
nsN34508GBLINSTOR コントローラ
vm01、vm02i5-6260U32GBLINSTORサテライト/KVM

ネットワーク構成

DRBDでデータ同期を行うにはデータ同期専用のネットワークを準備することが望ましいです。今回の機器は3台なのでvm01とvm02は直結したLANケーブルで繋ぎ、nsとは192.168.3.0/24のネットワークを使って通信することにします。

このためvm01、vm02の172.168.3.11、12に対してのルーティング情報をnsに設定しています。

LINSTORのインストール

まず各マシンにUbuntu 24.04をインストールして、この記事に書いた無料で利用できるUbuntuサーバ用のリポジトリを導入し、LINSTORをインストールしました。nsにはLINSTORのコントローラを残りのvm01、vm02はサテライトをインストールします。インストールの方法も先の記事で解説しています。

ノードの設定を終えると次のようになりました。

root@ns:~# linstor node list 
+-------------------------------------------------------+
| Node | NodeType  | Addresses                 | State  |
|=======================================================|
| ns  | COMBINED  | 192.168.3.8:3366 (PLAIN)  | Online |
| vm01 | SATELLITE | 172.168.3.11:3366 (PLAIN) | Online |
| vm02 | SATELLITE | 172.168.3.12:3366 (PLAIN) | Online |
+-------------------------------------------------------+

コントローラーnsで次のコマンドを実行して、vm01、vm02のストレージをLINSTORのストレージプールとして利用できるようにします。

root@ns:~# linstor storage-pool create lvmthin vm01 pool0 vg/thin
root@ns:~# linstor storage-pool create lvmthin vm02 pool0 vg/thin

ストレージプールpool0が登録されたので、次にリソースグループを定義します。

root@ns:~# linstor resource-group create rgvm --place-count 2 --storage-pool pool0

rgvmというリソースグループを定義しました。これはストレージプールpool0内に冗長度2(–place-count 2)でリソースを作るテンプレートになります。

最後に仮想環境(Rocky)用に15Gのブロックを定義します。

root@ns:~# linstor resource-group spawn-resources rgvm Rocky 15G

LINSTORによって15Gのストレージがvm01、vm02に確保され、DRBDにより冗長化されます。

root@ns:~# linstor volume list --resources Rocky
+--------------------------------||----------------------------- …
| Node | Resource | StoragePool  || | DeviceName    | Allocated  …
|================================||============================= …
| ns   | Rocky    | DfltDisklessS|| | /dev/drbd1001 |            …
| vm01 | Rocky    | pool0        || | /dev/drbd1001 | 3.84 GiB   …
| vm02 | Rocky    | pool0        || | /dev/drbd1001 | 3.84 GiB   …
+--------------------------------||----------------------------- …

この表示結果からRockyリソースのデバイス名が/dev/drbd1001と判りました。

ボリュームをKVMから利用

vm01にRocky Linuxをインストールします。
VirtManagerを起動して「新しい仮想マシンの作成」のステップ4で通常選べる「この仮想マシンにストレージを割り当てる」ではなく、「カスタムストレージの選択または作成」を選び/dev/drbd1001を入力
します。その後は通常のインストールと同様に仮想マシンをインストールを続けて下さい。

virt-managerの新規マシンストレージ割り当て画面

/dev/drbd1001はvm01、vm02両方からアクセスできるので、vm01で次のようにインストールしたRocky Linuxの設定を保存して、vm02に読みこめば、vm02でもインストールした仮想ゲストを実行できます。

root@vm01:~# virsh list
 Id   Name         State
----------------------------
 1    rockyl8.10   running

vm01で動作中のrocky8.10を停止します。

root@vm01:~# virsh shutdown rockyl8.10
Domain 'rockyl8.10' is being shutdown

仮想マシンの設定をエクスポートして、この設定ファイルをvm02に送ります。

root@vm01:~# virsh dumpxml rockyl8.10 > rocky810.xml
root@vm01:~# scp rocky810.xml vm02:/tmp/
rocky810.xml                                  100% 7388     3.7MB/s   00:00

仮想マシンの設定をインポートします。

root@vm02:~# virsh define /tmp/rocky810.xml
Domain 'rockyl8.10' defined from /tmp/rocky810.xml

最後に、vm02でRocky Linuxを起動してみましょう。

root@vm02:~# virsh start rockyl8.10
Domain 'rockyl8.10' started
root@vm02:~# virsh list
 Id   Name         State
----------------------------
 1    rockyl8.10   running

vm01で作成したRocky Linuxがvm02で動作します。

まとめ

LINSTORは中規模~大規模向けのストレージサービスを提供しますが、今回のように小規模な環境でも利用することができます。ただし、コントローラノードが1つなのでコントローラが停止すると設定が変更できなくなります。またデバイスが増えていくと管理が難しくなります。

とはいえ、個人や少人数で利用するストレージ管理のソフトとしても十分な機能を持っています。まずは小規模な環境でLINSTORを利用して、その可能性を体感してみてください。