ミニPCでのLINSTORとKVMによる仮想環境構築
はじめに
ミニPC3台を使ってLINSTORとKVMで仮想環境を作ってみました。LINSTORを使った簡単な利用例として紹介します。
機器構成
3台のミニPCを用意しました。参考までにそれぞれのスペックはこのようになります。
ホスト名 | CPU | メモリ | 用途 |
ns | N3450 | 8GB | LINSTOR コントローラ |
vm01、vm02 | i5-6260U | 32GB | LINSTORサテライト/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を利用して、その可能性を体感してみてください。