Proxmox と RDMA を組み合わせると、中小企業の仮想化基盤でも高性能な共有ストレージを比較的低コストで組める可能性がある。鍵になるのは InfiniBand という専用ネットワークと、その上で動く RDMA というデータ転送の仕組みである。結論から言えば、RDMA は帯域を増やす技術ではなく、遅延と CPU 消費を削る技術であり、これが SAN の高コストを構成から外すための土台になる。本記事では用語の意味から出発し、なぜこの組み合わせが選択肢になるのかを順に整理する。
RDMA とは何か — カーネルを迂回してメモリを直接読み書きする
RDMA(Remote Direct Memory Access)は、ネットワーク越しに相手側のメモリを直接読み書きする技術である。
通常の通信では、データは一度カーネル空間のバッファへコピーされ、そのあとアプリケーションの領域へ移される。このコピーと、CPU が割り込みで処理する手間が、高負荷時に見えにくい遅延の原因になる。RDMA はこの経路を省略し、ネットワーク側のアダプタがアプリケーションのメモリを直接操作する。
結果として得られるのは、遅延の小ささと CPU 使用率の低さである。帯域そのものを増やす技術ではない点に注意したい。帯域が同じでも、往復の遅延と CPU の消費が下がる。仮想化基盤では、この差がストレージ待ちとして体感に出る。
RDMA の仕組みをもう少し詳しく — メモリ登録とキュー
RDMA を理解するうえで押さえておきたい用語がいくつかある。すべてを暗記する必要はないが、設定や障害対応の場面で必ず出てくる。
まず、通信の窓口になるのが HCA(Host Channel Adapter)である。Ethernet における NIC に相当するが、RDMA の処理をハードウェアで実行する点が異なる。
次に、通信の単位として QP(Queue Pair)という概念がある。送信キューと受信キューの対であり、アプリケーションはここに処理を投げる。CPU が毎回データを運ぶのではなく、アダプタがキューを処理する。
そして、RDMA で扱うメモリは事前に登録しておく必要がある。これをメモリ登録と呼ぶ。物理アドレスを固定し、アダプタから直接触れるようにする仕組みである。この登録があるからこそ、カーネルを介さずに転送できる。
ここから分かる実務上の含意は、「RDMA は設定なしで勝手に速くなる技術ではない」という点である。アダプタ、ドライバ、メモリ登録、キュー設計が揃って初めて効果が出る。
InfiniBand とは何か — RDMA を前提に設計された専用ネットワーク
InfiniBand は、RDMA を前提に設計された専用の高速ネットワーク規格である。Ethernet の上に RDMA を載せる方式(RoCE)と並んで、RDMA を最も素直に使える土台とされる。
最大の特徴は、帯域と遅延の設計が最初から RDMA 向けになっている点である。フロー制御をハードウェアで行い、CPU を介さずに転送を完結させる。アダプタ(HCA)とスイッチ、ケーブルが規格として揃っており、中古市場には比較的安価な 40GbE 世代の機器も流通している。
ここで押さえたいのは、InfiniBand は「Ethernet の上位互換」ではないという点である。TCP/IP の世界とは別のプロトコル体系であり、後述する IPoIB のような橋渡しを使わない限り、通常の IP アプリケーションはそのままでは動かない。
RoCE というもう一つの道 — Ethernet の上で RDMA を動かす
InfiniBand 以外にも、RDMA を実現する方法はある。代表が RoCE(RDMA over Converged Ethernet)である。既存の Ethernet スイッチとケーブルを使いながら、その上で RDMA を動かす。
利点は、既存のネットワーク資産と運用知識を流用できることにある。10GbE 以上のスイッチがすでにあるなら、追加の専用網を引くより現実的な場合がある。
一方で、RoCE はネットワーク側の設定に敏感である。フロー制御や優先度制御(PFC / ECN)を適切に構成しないと、RDMA の利点が出ない、あるいは不安定になる。ここは InfiniBand が専用品として吸収している部分を、自分で設計しなければならない領域である。
結論として、専用網を新しく引けるなら InfiniBand、既存 Ethernet を活かしたいなら RoCE、という住み分けになる。どちらが優れているかではなく、制約がどちらに寄っているかで選ぶ。
なぜ Proxmox で RDMA を使うのか
Proxmox VE は、KVM による仮想マシンと LXC によるコンテナを、同一のクラスタで扱える仮想化基盤である。標準で Ceph を組み込める点も特徴で、共有ストレージをソフトウェアで構成できる。
一方で、Ceph を含む分散ストレージはノード間の通信量が多い。データの複製、ハートビート、メタデータの更新が常時行き交うため、ネットワークの遅延がそのままストレージの応答時間に効く。10GbE の Ethernet では、この通信が CPU を消費し、他の処理を圧迫することがある。
Proxmox に RDMA を組み合わせる動機は、この通信路を速く、かつ CPU に負荷をかけずに処理することにある。高性能な専用ストレージを買う代わりに、汎用サーバと専用ネットワークの組み合わせで同等の応答を得ようとする発想である。
SAN の何が高コストなのか
従来の仮想化基盤では、共有ストレージを SAN(Storage Area Network)で用意する構成が多かった。専用のストレージアレイと、ファイバチャネルのスイッチ、そして増設のたびに発生するライセンス費用である。
この構成の問題は、性能ではなく構造にある。アレイは専用機器なので、故障時の部品調達と保守契約が必須になる。容量を増やすにはアレイの増設が必要で、単価は汎用ディスクより高い。結果として、中小企業では初期投資と維持費の両方が重くなる。
さらに、アレイが単一の故障点になりやすい。冗長化にはもう1台のアレイが必要で、コストはさらに跳ね上がる。高性能を買うというより、専用機器という構造を買っている面が大きい。
Proxmox と RDMA の組み合わせで変わること
汎用サーバと InfiniBand で組むと、コスト構造が変わる。ノードを増やすほど性能と容量が同時に伸び、専用アレイの増設という概念がなくなる。冗長化はクラスタ内のノードで行うため、専用の待機アレイを買う必要もない。
性能面では、遅延と CPU 消費の削減が効く。ストレージの応答が速くなると、仮想マシンの起動やバックアップ、レプリケーションの所要時間が縮む。これは数値として測定しやすい効果である。
ただし、これは構成の自由度と引き換えに、設計と運用の責任を自分で持つことを意味する。専用アレイが吸収してくれた部分を、クラスタ設計として自分で埋める必要がある。
コスト構造の比較 — 何にお金がかかるかの違い
専用アレイと汎用サーバ構成の違いは、金額の大小ではなく、コストの発生点にある。整理すると次のようになる。
| 項目 | 専用アレイ(SAN) | 汎用サーバ + InfiniBand |
|---|---|---|
| 初期投資 | アレイ本体が高額 | サーバ + HCA + スイッチ |
| 容量増設 | アレイ増設・高単価 | ディスク追加で対応 |
| 冗長化 | もう1台のアレイが必要 | クラスタ内ノードで冗長化 |
| 保守 | ベンダ保守契約が必須 | 部品は汎用品を選べる |
| 設計・運用 | ベンダが吸収 | 自分で担う |
| 故障時の調達 | 専用部品・納期依存 | 中古含め選択肢が多い |
この表の意味は、汎用構成が「安い」のではなく「コストの発生点が変わる」ことである。設計と運用の手間が増える代わりに、機器の選択肢と増設の自由度が増える。同じ金額でも、自由度と責任の配分が異なる。
RDMA を使うための前提条件
導入を検討する前に、満たすべき条件を整理する。
- 対応するアダプタとスイッチが揃うこと。 サーバ側の HCA、スイッチ、ケーブルの規格を一致させる。世代の混在は速度低下や非接続の原因になる。
- RDMA を扱えるドライバとカーネルであること。 Proxmox VE は Debian 系であり、カーネルモジュールとユーザー空間のライブラリを揃える必要がある。
- ストレージ側の方式を選ぶこと。 SCSI を RDMA に載せる iSER、InfiniBand ネイティブの SRP、NVMe を拡張する NVMe-oF など、方式によって設定と得られる特性が異なる。
- 冷却と電源の余力を確認すること。 InfiniBand の HCA とスイッチは発熱する。ラックの電力と空調を先に確認しておかないと、導入後に詰まる。
いずれも、後から変更するにはやり直しのコストがかかる。導入前に確定させておきたい。
向いている用途と向いていない用途
RDMA が効くのは、ノード間通信が多く、遅延に敏感な用途である。分散ストレージ、レプリケーション、ライブマイグレーション、大容量バックアップの転送が該当する。
一方、単一ノードで完結する用途や、そもそも通信量が少ない構成では、導入の手間に見合わないことが多い。また、ネットワーク機器の選定と配線を自由にできない環境では、物理的な制約が先に立つ。
向き不向きを判断する最初の問いは、「ノード間の通信がボトルネックになっているか」である。ここが否なら、RDMA は解決策にならない。
Proxmox に RDMA を入れる前に実機で確認すべきこと
検討を進める段階では、次の点を実機で確かめる。アダプタが認識されるか、リンクが確立するか、想定した帯域と遅延が出るかである。カタログ値と実測値は一致しないことが多い。
あわせて、運用面の確認も必要になる。故障時に代替部品を入手できるか、ドライバの更新が継続されるか、設定を再現できる手順が残せるかである。中古機器を使う場合は、この確認が特に重要になる。
性能は買ってから分かるのではなく、測ってから分かる。導入前の実測を段取りに組み込んでおきたい。
小さく始めるための順序
いきなり本番基盤を RDMA へ置き換える必要はない。次の順序で段階を切ると、判断を測定に基づいて進められる。
- ノード間通信がボトルネックかを実測する(レプリケーション時間、バックアップ時間、CPU 使用率)。
- 2 ノード + 直結(スイッチなし)で RDMA の疎通を確認する。
- ストレージ方式を一つ選び、限定したゲストで検証する。
- 効果が確認できたら、スイッチを導入して 3 ノード以上へ広げる。
この順序の利点は、各段階で「進めるか止めるか」を判断できることにある。机上の見積もりではなく、実測値で投資判断を行う。
まとめ — RDMA は「安く高性能を作る」ための道具である
RDMA は、帯域を増やすのではなく、遅延と CPU 消費を削る技術である。InfiniBand はそれを前提に設計された専用ネットワークであり、Proxmox と組み合わせると汎用サーバで高性能な共有ストレージを構成できる可能性がある。
SAN の高コストは、性能ではなく専用機器という構造に由来する。汎用サーバへ置き換えることは、この構造を外すことを意味する。ただしその分、設計と運用の責任は自分側に移る。
導入を決める前に、ノード間通信がボトルネックかどうかを実測で確かめたい。そのうえで、方式(プロトコル)の選定と、機器の入手性を確認する順序が現実的である。