ローカルストレージ:クラスターシステムの「アキレス腱」
Proxmoxを使い始めた頃、私は進退窮まる状況に陥ったことがあります。3ノードの立派なクラスターを構築したものの、1つのノードのハードディスクが突然故障した際、その上で動いていたすべての仮想マシン(VM)が道連れになってしまったのです。問題は、データが各ノードのローカルストレージ(Local Storage)に固定されていたことにありました。ノードがダウンすると、他のノードがいくら「救援」したくても、その VM のディスクファイルにアクセスできないため、どうすることもできませんでした。
このような状況では、高可用性(HA)機能もただの机上の空論に過ぎません。顧客からは苦情の電話がかかってき、管理者はデータを救い出すためにハードディスクを取り外したり、部品の交換を待ったりと奔走することになります。これこそが、Proxmoxの真の力を引き出すために共有ストレージ(Shared Storage)が必要な理由です。
なぜデータは自動的に他のノードへ「移動」しないのか?
デフォルトでは、Proxmox ClusterはVMの構成やCPU/RAMの状態といった「魂」の部分のみを管理します。「肉体」であるディスクデータは、依然として各サーバーの物理ドライブに固定されています。すべてのノードが同時に読み書きできるストレージ層がなければ、ライブマイグレーション(ダウンタイムなしのVM移動)や障害時の自動復旧は不可能です。
多くの管理者が陥る共通のミスは、最初からストレージの設計を計画していないことです。システムが肥大化した後で、ディスクフォーマットの変換や数テラバイトのデータをネットワーク経由で移動させることは、パフォーマンスと時間の両面で悪夢となります。
集中ストレージの選択肢:どれが最適か?
クラスターにおけるストレージの課題を解決するには、主に3つの方向性があります:
- 外部NAS/SAN (NFS, iSCSI): SynologyやTrueNASなどの専用機器を使用する方法です。シンプルですが、「単一障害点(Single Point of Failure)」を生み出します。もしNASに障害が発生すれば、Proxmoxクラスター全体が完全に停止してしまいます。
- GlusterFS: かつては注目されていましたが、現在のProxmoxとの統合はあまりスムーズではありません。ファイル数が増えるとパフォーマンスが不安定になりやすく、制御が困難です。
- Ceph Storage: これこそがProxmoxに標準搭載されている「強力な武器」です。各ノードのバラバラなディスクを巨大なデータプール(Pool)に変え、データは複数のノードにインテリジェントに複製されます。
実務での導入経験から言えば、Cephがナンバーワンの選択肢です。これにより、ハイパーコンバージドインフラ(HCI)モデルを構築できます。サーバーがコンピューティング(Compute)とストレージ(Storage)の両方を担うことで、ハードウェアコストを最適化しつつ、最高レベルのデータ安全性を確保できます。
Proxmox VEでのCeph Storage構成ガイド
私が運用している12台のVMとコンテナが稼働するラボ環境では、Cephがすべてを円滑に動かすバックボーンとなっています。以下に、安定したCephクラスターを構築するための5つのステップを紹介します。
ステップ1:インフラの準備(最も重要な要素)
Cephはネットワーク速度に非常に敏感です。1GbpsのネットワークでCephを動かすのは致命的なミスであり、レイテンシが急増してVMが頻繁にラグを起こします。アドバイス: 少なくとも10Gbpsのネットワークカード(Intel X520やMellanox ConnectX-3など)を使用し、合意形成(Quorum)を維持するために最低3ノードを用意してください。
- 各ノードにOSD(Object Storage Daemon)として使用するための完全に空のディスクが少なくとも1つ必要です。
- SSDまたはNVMeを優先してください。現在のCephにおいて、仮想化タスクにHDDを使用するのはIOPSの観点から非常に厳しい選択です。
ステップ2:Cephのインストール
Web GUI上で、Node -> Cephを選択します。Install Cephをクリックし、最新バージョン(QuincyやReefなど)を選択します。コマンドライン派の方は、ノードにSSHで入り、以下を実行してください:
pveceph install
次に、Ceph専用のネットワークを初期化します。ストレージトラフィックをVMのトラフィックから分離することで、データ同期時のボトルネックを防ぎ、システムの安定性を高めることができます。
pveceph init --network 10.10.10.0/24
ステップ3:Monitor (MON) と Manager (MGR) の設定
Monitorは「脳」の役割を果たし、クラスター全体のステータスマップを保持します。HA基準を満たすには、異なる3つの物理ノードに少なくとも3つのMonitorを配置する必要があります。操作は簡単です。各ノードで Ceph -> Monitor -> Create を行います。
Manager (MGR) はパフォーマンスの監視をサポートし、ダッシュボードを通じて詳細な統計情報を提供します。MonitorがあるすべてのノードにMGRもインストールすることをお勧めします。
ステップ4:OSDの作成(プールへのリソース投入)
OSDは物理ディスクを直接制御してオブジェクトを保存します。Ceph -> OSD セクションで Create: OSD を選択し、空のディスク(例:/dev/nvme0n1)を指定します。
実戦でのヒント: 高速なNVMeと通常のSATA SSDを併用している場合、DB/WAL パーティションをNVMeに分けるのが効果的です。このテクニックにより、デフォルト設定に比べてCephの書き込み速度が2〜3倍向上することがあります。
ステップ5:プールの作成とProxmoxへの統合
最後に、OSDをまとめてプール(Pool)を作成します。Ceph -> Pools -> Create に移動し、以下のパラメータを設定します:
- Size: 3(データは3つのノードに3つのコピーとして複製されます)。
- Min Size: 2(少なくとも2つのコピーが稼働していれば書き込みを許可します)。
- Add as Storage: チェックを入れると、Proxmoxが自動的にこのプールをVMのストレージとして認識します。
# システムの状態を確認
ceph -s
ステータスに HEALTH_OK と表示されれば、システムの準備は完了です。
運用における「血肉となる」注意点
クラスターをダウンさせてしまった数々の苦い経験から、4つの黄金律を導き出しました:
- 多数決のルール: 決して2ノードでCephを運用しないでください。1台がメンテナンスに入ると、もう1台はQuorum(定足数)を失って読み取り専用モードになり、すべてのVMがフリーズします。
- 80%の安全しきい値: OSDの容量が85%を超えると、Cephは警告(赤)を出します。95%(Full Ratio)に達すると、クラスターはすべての書き込みを停止します。この状態になるとシステムがロックされ、拡張が極めて困難になります。
- 独立したバックエンドネットワーク: 可能であれば、Cephの同期専用に10Gbpsのカード2枚でボンド(LACP)を構成してください。低レイテンシこそが、VMをローカルディスクのようにスムーズに動かす鍵です。
- 故障ディスクの能動的な処理: ディスクのS.M.A.R.T.値に異常の兆候が見られたら、積極的にそのOSDを
outしてください。Cephはディスクが完全に死ぬ前に、データを他の健全なドライブへ自動的に移動させます。
Proxmox VEへのCephの統合は、インフラにとって大きな前進です。かつてラボ環境でノードの電源ケーブルを抜くテストをしましたが、CephとHAのおかげで、VMは数秒で別のノードで自動再起動しました。システムが「自己修復」する感覚は本当に素晴らしいものです。
このガイドが導入の自信につながれば幸いです。構成中にエラーが発生した場合は、遠慮なくコメントを残してください。すぐにお答えします!
