はじめに
Cephストレージを導入することで、Proxmox VEのノードを使った分散ストレージをProxmoxクラスター上に構築し、HCI (Hyper-Converged Infrastructure) を実現できます。
メリット
- 機能面
- HA (High Availability):ノードが死んでも自動的に別ノードでVMが立ち上がる
- (ライブ)マイグレーション:ストレージの移動が不要で、RAMの転送だけで済むので高速
- 性能面
- スケーラビリティ:ノードの追加で容量を簡単に拡張可能
- 耐障害性:複数の物理ディスク・ノードに冗長化することでディスク障害に対応
環境
- Proxmox VE:8.3.0
- ミニPC×3台
- Proxmox VEのクラスターを構築済み(本ブログの参考記事)
- Ceph用物理ストレージを増設(各ノードにそれぞれ512GB・512GB・1TBのSSDを搭載)
- ネットワーク:1 GbE Ethernet
※本当はCeph用のネットワーク(10 GbE)を物理的に分けて用意した方が良い
準備
まず、Ceph用のストレージを準備します。
- Ceph用に使うストレージを各ノードに増設(OS用ディスクとは別に用意)
- Ceph用ストレージを初期化(Web UIでノード選択→Disks→Wipe Diskボタン)
インストール・設定
Cephのインストール(1台目)
- Web UIのサイドバーで1台目のノード選択→Cephを選択
- Install Cephをクリック

- Cephのバージョン選択
- Cephバージョンは基本的にデフォルトで問題ない
- RepositoryはProxmox無償版を利用している場合No-Subscriptionに変更

- Cephパッケージのインストール
Ceph関係の必要なパッケージがインストールされます。

- ネットワーク設定
Cephでの通信に使うネットワークを指定します。帯域を圧迫してしまうため、PVEの管理ネットワークとは別の物理インターフェースにネットワークを分けることが推奨されています。(同じでも動作は可能)
- Public Network: Ceph上のディスクを利用しているVMとの通信など、Cephの通信に使われるネットワーク。
- Cluster Network: レプリケーションなどの通信に使うネットワーク。Public Networkと同じで良ければ空欄のままにする。

- セットアップ完了画面

Cephのインストール(2台目以降)
2台目以降も同じ手順を繰り返します。ただし、ネットワーク設定はクラスターで共通なので設定不要です。

インストールの確認
ここまでの作業が完了した状態で任意のノードのCephタブを見ると、次のような画面でCephの状態が確認できます。まだストレージの追加などが完了していないためWARN状態になっています。これから各ノードにサービスを追加したりストレージを追加したりすることでCephを利用できるようにします。

MONの追加
Ceph Monitor (MON) はCephクラスターを管理する役割を持っていて、冗長構成を取るために最低3ノードに配置する必要があります。(4・5台以上ノードがある場合も、3ノードで動作させれば十分)
初期状態では1台目のノードにのみMONがインストールされていますので、他の2ノードにもMONを作成します。
- サイドバーからノードを選択→Ceph→Monitorタブを選択
- MonitorのCreateボタンをクリック
- MONをインストールするノードを選択し、Createをクリック

- 2ノードに対して上記の作業を実施して、下の画面のようにMonitor欄に3つのノードが追加できていれば完了

Managerの追加
Ceph Manager (MGS) はダッシュボードやAPI、メトリクスなどを提供しており、MONの補助サービス的な役割です。クラスタで最低1ノードで動作していれば問題ないですが、可用性のために2ノード以上に配置するのが推奨です。
初期状態で1台目のノードにManagerが作成されているので、最低限別の1ノードにもManagerを追加します。
- サイドバーからノードを選択→Ceph→Monitorタブを選択
- ManagerのCreateボタンをクリック
- Managerをインストールするノードを選択し、Createをクリック

- Managerが追加されていればOK

OSDの追加
Ceph Object Storage Daemon (OSD)は実際にデータの読み書きをするデーモンで、各ノードの物理ディスクごとに作成します。Cephを動作させるためには最低3OSD(=3物理ストレージ)が必要です。
- サイドバーからノードを選択→Ceph→OSDを選択
- Create: OSDをクリック
- 追加するディスクを選択(一覧にない場合はディスクを初期化する必要あり)

- 1~3の手順を各ノードのストレージごとに実施

- 3OSD以上追加した状態で、Cephタブを確認してStatusがHEALTH_OKになっていれば完了

プール作成
プールはオブジェクトを格納する論理グループで、Proxmoxから利用するためにはVMディスクを格納するためのプールの作成が必要です。
Cephクラスタの状態確認
Cephタブを見ることで、Cephの状態や各ノードのステータス、ストレージの総容量などの統計を確認することができます。

VM作成
新規VMをCephストレージに作成
VMをCephストレージ上に作成する方法は通常のVM作成と同様ですが、ストレージ選択時に先ほどのプールを指定します。これによりVMディスクがCephに配置され、ライブマイグレーションなどの機能が利用可能になります。

既存のVMのディスクをCephに移動
ローカルにディスクを置いている既存のVMの場合は、VMディスクをCephストレージに移動することができます。ディスク移動作業はVMを起動したまま可能です。
- VMのHardwareからディスクを選択し、Disk Action→Move Storageをクリック

- Target StorageでCephのストレージを選択(移動後に元のデータを削除してよければDelete sourceにチェックを入れる)

- 転送完了を待つ

実践
Cephストレージ上においたVMを使って色々な機能を試してみます。
マイグレーション
ProxmoxのVMにはマイグレーション(実行ホストの移動)機能があります。Cephを利用することで、ディスクの転送が不要になるため高速なマイグレーションが可能になります。
- 停止しているVMの場合:瞬時に完了
- 起動中のVMの場合(ライブマイグレーション):RAMデータのみの転送で高速
マイグレーション手順
(今回は起動中のVM=ライブマイグレーションを実施)
- 対象VMをクリック→上ツールバーのMigrateボタンをクリック(もしくはVMを右クリック→Migrate)
- Target nodeに移動先のノードを指定してMigrateボタンをクリック

- マイグレーション完了を待つ(RAMの転送のみでマイグレーションが完了するので高速)

HA
Ceph構成を利用することでHA(High Availability: 高可用性)機能が利用できるようになります。
HA機能を利用することで、ノードが死んだ際に別のノードでVMを自動起動することが可能になります。
HA対象のリソース追加手順
- サイドバーのDatacenter(クラスター)→HA

- ResourcesのAddボタンをクリック
- HAリソースの追加画面
- VM: HA動作させたいVMを選択
- Max. Restart: あるノードで起動に失敗した際に再起動を試みる最大回数
- Max. Relocate: 起動に失敗した際に起動ノードの変更を試みる最大回数
- Group: HAグループ(別途作成)を指定(起動ノードを限定しない場合省略可)
- Request State: HA追加直後のVMの規定状態
- Comment: コメント

確認
試しにVMが起動しているノードを落としてHA機能が動作するかテストしてみます。

このVMの起動ノードを落としてみます。(予め他のVMは全部シャットダウンorマイグレーションで別ホストに移動しておく)

しばらくすると期待通り、別のノードでVMが立ち上がります。(Node項目に注目)

まとめ
本記事では、Proxmox VEクラスターとCephを組み合わせることでHCIを実現し、それを使った機能を色々試してみました。
- Ceph(分散ストレージ)による冗長化ストレージの導入
- 高速VMマイグレーション
- HA(高可用性)機能
参考サイト
Proxmox公式Wiki
Proxmox公式ドキュメント



