Proxmox上のCeph:高可用性ホームラボからの6ヶ月間のフィールドレポート

HomeLab tutorial - IT technology blog
HomeLab tutorial - IT technology blog

シングルノードの呪縛を解く

長年、私は1台のProxmoxノードを運用していました。壊れるまではそれで十分でした。しかし、異音のするファンを交換したり、RAMを増設したりする必要があるたびに、Home Assistantや開発用データベース、メディアサーバーといった私のデジタルライフのすべてが停止してしまいました。

クラスター化への移行は論理的なステップでしたが、ストレージは本当に難しいパズルでした。本番レベルのホームラボでCephを6ヶ月間運用した結果、それが高可用性に対する決定的な答えであると確信しました。しかし、タダではありません。その回復力(レジリエンス)の代償として、ハードウェア and ネットワーク帯域幅が必要になります。

これは、ソロ演奏から同期されたオーケストラへの移行だと考えてください。複数の物理マシンにデータを分散させることで、障害への対処法が変わります。ハードドライブからの「死のクリック音」を恐れるのをやめ、稼働時間(アップタイム)に集中できるようになります。

ストレージアーキテクチャ:どの道を選びますか?

Proxmoxクラスターを構築する場合、通常は3つのストレージ哲学のいずれかを選択することになります。真の高可用性(HA)を追求する場合、選択肢はすぐに絞られます。

1. ローカルストレージ (LVM/ZFS)

これが基準となります。データがローカルバス上にあるため、驚異的な速さを誇ります。欠点は?HAを台無しにすることです。ノードAの電源が落ちれば、VMのデータは動かなくなったシリコンの中に閉じ込められます。Proxmox Backup Serverからの長いリストア時間を待たずに、そのVMをノードBへマイグレーションすることはできません。

2. 外部NASの罠 (NFS/iSCSI)

TrueNASのような中央のNASが、ネットワーク経由ですべてのノードにストレージを提供します。これによりVMのマイグレーションは容易になりますが、単一障害点(SPOF)が生じます。ファームウェアの更新中にNASがフリーズすれば、クラスター全体の心臓部が失われます。ダウンタイムの問題を解決したのではなく、別の箱に移動させただけなのです。

3. 分散型の強力なエンジン (Ceph)

Cephは、Proxmoxノード内の個々のディスクを1つの巨大な統合ストレージプールに変えます。データはクラスター全体に複製されます。ノードAが消えても、ノードBとノードCにはすでにデータブロックが存在します。30秒以内に、停止したVMを起動させることができます。これは信頼性の高いインフラストラクチャにおけるゴールドスタンダードです。

Cephとの生活:厳しい現実

初期の興奮は去り、技術的な現実が見えてきました。Cephは魔法の「設定して終わり」ボタンではありません。適切な構成を必要とする強力な野獣です。

得られたメリット

  • ゼロダウンタイム・マイグレーション: 120GBのWindows Server VMをノード間で約15秒で移動できます。Pingの欠落も、セッションの中断もありません。
  • 稼働中の自己修復: 3ヶ月前、500GBのCrucial MX500がSMARTエラーを出し始めました。Cephは即座にそのOSDを「degraded(劣化)」としてマークし、健全なディスクへのデータの再複製を開始しました。私は1週間後、クラスターが稼働している間にドライブを交換しました。
  • シンプルなスケーリング: 容量不足ですか?新しい1TBのNVMeを任意のノードに差し込み、「Create OSD」をクリックするだけです。クラスターは自動的に再バランスを行います。

コストとデメリット

  • 帯域幅がすべて: 標準的な1GbEネットワークでは、Cephは動作が鈍く感じられます。リバランス中、レイテンシが2msから60ms以上に急上昇し、VMの動作が這うように遅くなりました。これを実用的にするには、少なくとも10GbE SFP+が必要です。
  • メモリ消費: Cephはメモリを大量に消費します。各ディスク(OSD)には通常メタデータ用に1GBのRAMが必要ですが、軽快なパフォーマンスのためには1OSDあたり2〜4GBを割り当てることをお勧めします。
  • クォーラム(定足数)の重要性: 2ノード構成も可能ですが、危険です。どのデータが最新であるかについてノード間で不一致が生じる「スプリットブレイン」シナリオを防ぐには、最低でも3つのノードが必要です。
  • プロフェッショナルな基準

    私が直面したボトルネックを避けるために、プロフェッショナルなホームラボ構築には以下のハードウェア基準を参考にしてください。

    • コンピュート: 3台のノード。TinyMiniMicro PCは優れていますが、内部にNVMeスロットがあることを確認してください。
    • ネットワーキング: Cephの「バックエンド」トラフィック専用の10GbEリンク。私は約150ドルのMikroTik CRS305スイッチを使用していますが、負荷を完璧に処理できています。
    • ディスクの一貫性: ドライブのサイズを揃えてください。Cephのパフォーマンスは、グループ内で最も遅いディスクに左右されることが多いです。
    • 書き込み耐性: エンタープライズ向けSSD(Samsung PM883やIntel DCシリーズ)を使用してください。コンシューマー向けのQLCドライブは、Cephの絶え間ないジャーナリングにより、わずか数ヶ月でTBW(総書き込みバイト数)の制限に達してしまいます。

    セットアップ手順

    ProxmoxにはネイティブのCeph management機能が含まれています。Linuxのスペシャリストである必要はありませんが、正しい手順に従う必要があります。

    1. インストール

    シェルまたはUIの「Ceph」タブから、すべてのノードで以下を実行します:

    pveceph install

    プロンプトが表示されたら、10GbEインターフェースをクラスターネットワーク(Cluster Network)として割り当てます。

    2. モニターとマネージャー

    モニター(MON)はクラスターマップを維持します。冗長性のために3つ必要です。

    # 3つの各ノードで実行してください
    pveceph mon create

    3. OSDのプロビジョニング

    まず、対象のディスクを消去してください。完全に「未割当(raw)」の状態である必要があります。UIで ノード > Ceph > OSD に移動し、Create: OSD をクリックします。または、CLIを使用します:

    pveceph osd create /dev/nvme0n1

    4. ストレージプール

    「Size 3 / Min Size 2」ルールでプールを作成します。これにより、常に3つのデータコピーが保持されます。

    pveceph pool create vm_storage --add_storage 1

    最終結論

    安定性は中毒性があります。半年間、サービスを1分も停止させることなく、数十回のカーネルアップデートやハードウェア交換を行うことができました。当初の1Gbpsネットワークは大きなボトルネックでしたが、10Gbps SFP+へのアップグレードで体験が一変しました。シーケンシャル書き込みは、SATA SSDの限界である450MB/sに達しています。企業のデータセンターを模したホームラボを構築したいなら、Proxmox上のCephは最もやりがいのあるプロジェクトになるでしょう。

    Share: