Azure Local(Azure Stack HCI)のRDMAとSMB Directの役割を徹底解説|S2D(Storage Spaces Direct)の冗長化と高速化

Azure Local(Azure Stack HCI)では「RDMAを有効にすると速くなる」と聞いても、どこがどう速くなるのかが掴みにくいことがあります。本記事では、RDMAとSMB 3.x(SMB Direct / SMBマルチチャネル)がAzure Local内で担う役割を、ミラーやパリティといった冗長化の裏側まで含めて具体的に整理します。

目次

Azure Localの前提:S2Dは「ローカルディスクを束ねた分散ストレージ」

Azure Local は、複数ノードのWindowsベースのクラスター上で仮想マシン(VM)やコンテナを動かしつつ、同じクラスター内のローカルディスク(NVMe/SSD/HDD)をまとめて共有ストレージとして扱えるハイパーコンバージド(HCI)基盤です。共有ストレージの中核は Storage Spaces Direct(S2D) で、次の特徴があります。

  • 外付けSANを前提にせず、各ノード内蔵ディスク をプールして1つのストレージとして利用する
  • ボリュームはクラスター共有ボリューム(CSV)として提供され、VMのVHDXはその上に置かれる
  • 冗長化(2重/3重ミラー、パリティ等)はソフトウェアで実現し、書き込み時に別ノードへ同期複製する

この「別ノードへ同期複製」こそが、Azure Local で SMB と RDMA が重要になる理由です。ノード間のストレージ通信(いわゆるeast-westトラフィック)が遅いと、冗長化の書き込み待ちが増え、結果としてVMのI/O性能が伸びません。逆に言えば、ストレージeast-westを最適化できると、同じディスク構成でも体感性能が大きく変わります。

トラフィックの種類主な中身よく使われる機能/技術性能への影響
管理クラスター管理、監視、更新、Azure連携TCP/IP(通常のイーサネット)帯域より安定性が重要
VM(北南)VMのクライアント通信、アプリ通信vSwitch、VLAN、QoS用途により帯域が大きい
Live Migration 等VMのメモリ/状態の移動(イベント時)SMB、圧縮、(環境によりSMB Direct)移行時だけ大きい
ストレージ(east-west)ミラー/パリティの複製、修復、リバランス、CSV関連通信SMB 3.x / SMB Direct / SMBマルチチャネル / RDMA常に効く(最重要)

RDMAの役割:Azure Localでは「ストレージ通信を速く・軽くする」

RDMA(Remote Direct Memory Access) は、ネットワーク越しに相手メモリへ直接アクセスできる仕組み…と説明されることが多い技術です。ただし、Azure Localを理解するうえで押さえるべきポイントは次の1点に集約されます。

RDMAは“VMのメモリを常に同期する仕組み”ではなく、SMB通信を高速化するための土台として使われる、ということです。

RDMAがやらないこと:VMメモリを“同期し続ける”仕組みではない

RDMAという名前から「VMのメモリページをノード間で直接やり取りしているのでは?」と想像しがちですが、Azure Localの通常運用で VMの実行中メモリが常時別ノードへ同期される ような挙動はありません。VMのメモリを別ノードに複製しておき、障害時に即座に同じVMが無停止で継続する、というタイプの仕組み(分散共有メモリのようなもの)とは別物です。

一方で、Hyper-VのLive Migration のように「VMのメモリ内容を別ホストへコピーするイベント」は存在します。このとき転送経路としてSMBを使う構成では、結果的にSMB Direct(=SMB over RDMA)が効いて転送が速くなることはあります。ただしこれは“移動のための転送”であり、“実行中メモリを同期し続ける”ものではない、という整理が重要です。

RDMAが主戦場になる場所:SMB Direct(SMB over RDMA)

Azure LocalでRDMAが最も価値を発揮するのは、S2Dのノード間ストレージ通信です。S2Dはノード間通信にSMB 3.x を使い、RDMA対応NICがあればSMB DirectとしてRDMAを利用します。

  • レイテンシが下がる:同期複製の待ち時間が短くなり、書き込みが伸びやすい
  • スループットが上がる:高速なNVMe/SSDの性能をネットワークが足を引っ張りにくい
  • CPU負荷が下がる:ネットワーク処理が軽くなり、VMにCPUを回しやすい

RDMAが使えない(または無効)でもS2D自体は動きますが、その場合はSMBがTCPで動作するため、負荷が高いワークロードほどCPUボトルネックやレイテンシ増として影響が見えやすくなります。

項目通常のSMB(TCP)SMB Direct(RDMA)
データ転送経路OSのネットワークスタック経由ネットワークスタックを大きくバイパス
CPU使用率高くなりやすい(特に大容量I/O)低く抑えやすい
遅延相対的に大きい小さくしやすい
Azure Localでの影響ストレージ複製や修復が重くなりやすいストレージ複製や修復が軽くなりやすい

SMB 3.xの役割:Azure Localでは「ファイル共有」より広い

SMB(Server Message Block) は一般に「Windowsのファイル共有プロトコル」という理解で概ね正しいです。ただしAzure Localでは、SMBが担う領域がもう少し広く、クラスター内部のストレージ通信を運ぶ“共通の輸送レイヤー”として使われています。

利用者がエクスプローラーで \\\\server\\share を開くような“ファイル共有”のイメージだけでSMBを捉えると、S2Dの挙動が理解しづらくなります。S2Dは「ノード間でデータを複製・分散する」という目的のために、SMB 3.xの機能(マルチチャネル、Direct、透過フェイルオーバー等)を積極的に活用します。

SMBの主要機能と、Azure Localで効くポイント

SMB 3.xの機能概要Azure Local / S2Dでの効き方
SMB DirectSMBをRDMAで転送ミラー/パリティの複製、修復、リバランスなどのeast-west通信を高速化
SMB マルチチャネル複数NICを自動で並列利用(合算/冗長)帯域をまとめて性能を上げ、片系断でも自動継続(可用性)
透過フェイルオーバーセッションを保ったまま経路/ノード切替ノード障害や一時的な切替時の影響を小さくする方向で働く
SMB暗号化/署名改ざん防止・盗聴対策要件次第で有効。ただし性能影響を見て設計(内部専用ネットワークでは要否を整理)

VMから見たSMB:ゲストOSは“SMB共有”を意識しない

ここも混乱しやすいポイントです。Azure LocalのVMは、一般的なファイルサーバーのように「SMB共有にVHDXを置いている」わけではありません。VMから見えるのは、Hyper-Vホスト上のCSV(NTFS/ReFS)であり、ディスクI/Oはローカルディスクに書いている感覚に近い動きになります。

しかし、その裏側ではS2Dがデータ配置と冗長化を管理しており、必要に応じて別ノードのディスクへデータを書きに行く/別ノードからデータを読み出す状況が発生します。ここで動くノード間通信がSMB 3.xで、RDMAが有効ならSMB Directとして加速されます。つまり、SMBは“ゲストOSが使う共有”ではなく、“ホスト間のストレージファブリック”という位置づけです。

ミラー/パリティの裏側:SMBは「冗長化のためのデータ複製」を運ぶ

Azure Localで「2重ミラー」「3重ミラー」「パリティ」といったレジリエンシーを設定すると、VMからの書き込みI/Oはローカルディスクだけで完結しません。耐障害性を満たすために、別ノード(または別障害ドメイン)へ同期的に複製され、必要なコピー数が揃ってから完了(ACK)になります。

書き込みI/Oのイメージ(2重ミラーの例)

  1. VMがVHDXへ書き込み(OSから見るとCSV上のファイル書き込み)
  2. 書き込みデータは、まずローカルノードのストレージスタックへ入る
  3. 同時に、ミラー要件を満たすために別ノードへ複製される(この複製の輸送にSMB 3.xが使われる)
  4. ローカルとリモートの両方で“書き込めた”ことが揃ったら完了として返る

つまり、ミラー構成ではネットワークがストレージの一部になります。ここでRDMA(SMB Direct)が効いてくると、同期複製の待ち時間やCPU負荷が減り、結果としてVMの体感I/Oが上がります。

レジリエンシー方式ごとの「ネットワークへの効き方」

方式耐障害の考え方書き込み時のコピー数east-west通信の特徴RDMA/SMB Directの重要度
2重ミラー1台(または1障害ドメイン)故障に耐える2コピー書き込みごとにリモートへ同期複製高い
3重ミラー2台故障に耐える(要件により)3コピー同期複製の“相手”が増えるため帯域・遅延の影響が出やすい非常に高い
パリティ冗長情報(パリティ)で復元データ+パリティ書き込み計算と分散が絡み、ワークロードにより特性が大きく変わる高い(特に修復・リビルド時)

ポイントは、冗長化が強いほど(コピーが増えるほど)ネットワークとCPUの負担が増えやすいことです。S2Dはソフトウェアで最適化しますが、物理的に「流すデータ量」と「待つ回数」は増えます。そのため、Azure Localではストレージ用ネットワークを“速く・安定させる”ことが、冗長化と性能を両立する近道になります。

キャッシュとRDMA/SMBの関係:キャッシュはローカル、複製はネットワーク

「RDMAはキャッシュと関係があるのか?」という疑問もよく出ます。結論から言うと、S2Dのキャッシュは基本的に各ノードのローカル資源(メモリや高速SSD/NVMe)を使って実装され、RDMAがキャッシュそのものを作るわけではありません。

ただし、キャッシュがあることでI/Oの流れ方が変わり、結果としてネットワークに流れるパターンも変化します。ここを整理すると理解しやすくなります。

用語ざっくり説明RDMA/SMBとの関係
書き込みキャッシュ(Write-back)一度高速層に受けてから容量層へ後で書く複製自体は必要。相手ノード側でも受けるため、SMB Directが効く
読み取りキャッシュ(Read)よく読むデータを高速層に保持ヒットすればネットワーク/ディスクI/Oが減る。ミス時のリモート読み取りでSMBが効く
デステージ(Destage)キャッシュ→容量層へ書き出す処理平常時にバックグラウンドで動く。帯域が細いと詰まりやすい

要するに、キャッシュは“ノード内で速くする仕組み”、RDMA/SMB Directは“ノード間の複製を速くする仕組み”です。両者は別のレイヤーですが、組み合わさることで全体性能が出ます。

設計のポイント:RDMAをストレージ専用NICで使う理由

Azure Localのネットワーク設計では、RDMAを有効にするNIC(アダプター)をストレージ用として明確に位置づけるのが基本です。理由はシンプルで、ストレージeast-westは「常に・大量に・低遅延が必要」なため、他トラフィックの影響を受けると途端に性能がぶれるからです。

ストレージ用NICの典型構成

  • 各ノードにRDMA対応NICを2ポート以上(冗長化と帯域確保)
  • 10/25GbE以上を推奨(NVMe構成では25GbE以上が効きやすい)
  • スイッチ構成は、要件に応じて「スイッチ接続」または「スイッチレス(直結)」
  • RoCEの場合はPFC/ETS等の設計、iWARPの場合はスイッチ要件が比較的軽い

“推奨構成に寄せる”ためのチェックリスト

チェック項目目安意図
RDMA NICは2系統以上各ノード2ポート以上SMBマルチチャネルで合算と冗長を両立
ストレージ網の経路は短く同一ラック/同一ペアで完結遅延と輻輳ポイントを減らす
MTUは揃えるジャンボを使うなら全経路同一途中で欠けると逆に遅くなるため
RoCEはQoS設計が必須PFC/ETS等を要件に合わせてドロップやポーズ嵐で不安定化しやすい
ドライバ/ファームを統一ベンダー推奨に揃える“動くが遅い/不安定”の原因になりやすい
設計項目選択肢考え方(現場目線)
RDMA方式RoCE / iWARPRoCEは高性能だがスイッチ設定(PFC等)の影響が出やすい。iWARPは運用が楽なことが多いが製品選定が重要。
NIC本数2本以上SMBマルチチャネルで帯域を合算しつつ、片系断でも継続できる。1本構成は“動くが弱い”。
ネットワーク分離専用 / 収束(Converged)専用は分かりやすく安定。収束は設計力が必要だが配線削減。どちらでも“ストレージ優先”のQoS設計が鍵。
チーミング/仮想スイッチSET / 非チーミング等RDMAと相性の悪い方式があるため、製品ガイドに従う。Windowsの推奨形(SETやNetwork ATC等)に寄せると事故が減る。

SMBマルチチャネルを理解すると設計が一段ラクになる

SMBマルチチャネルは、複数NICを自動的に並列利用する機能です。Azure Localでは「RDMA NICを2本用意しておけば、あとはSMBが賢く使ってくれる」状態を作りやすく、設計上のメリットが大きいです。

  • 帯域の合算:2×25GbEなら理屈上は最大50GbE相当まで伸びる(実効は環境次第)
  • パス冗長:片側NICやケーブル、スイッチ経路に障害が出ても通信を継続しやすい
  • 自動フェイルオーバー:チャネルが落ちても別チャネルへ寄せるため、ストレージI/Oの断を避けやすい

この性質を踏まえると、Azure Localのネットワークは「帯域だけ」ではなく、“2経路以上あること”自体が性能と可用性に直結する、と理解できます。

運用で差が出る:RDMA/SMBの状態を確認するコマンド集

「RDMAを有効にしたつもりなのに、実際にSMB Directで動いているか分からない」というケースは珍しくありません。Azure Localの運用では、定期的に次の観点を確認できると安心です。

確認したいこと代表的なPowerShell見るポイント
NICがRDMA対応&有効かGet-NetAdapterRdma対象NICがEnabledになっているか
SMBが使うNIC一覧Get-SmbClientNetworkInterfaceRDMA Capable、LinkSpeed、RSS等
SMBマルチチャネル接続状況Get-SmbMultichannelConnection複数経路が張れているか、RDMAがTrueか
SMBセッションの実体Get-SmbConnectionどの相手に張っているか、Dialect(SMBバージョン)
クラスターのネットワーク役割Get-ClusterNetworkどのネットワークがクラスター通信/CSVに使われる想定か

実機での確認では、「RDMA有効」→「SMBがそのNICを認識」→「SMB Multichannelが複数経路を張る」→「RDMA=Trueで通信」の順に、段階的に追うと切り分けが早くなります。

よくあるトラブルと、切り分けの考え方

Azure LocalのRDMA/SMB周りは、性能が出たときのリターンが大きい反面、設計・ドライバ・スイッチ設定の影響を受けやすい領域でもあります。最後に、現場で遭遇しやすい“つまずきポイント”を整理します。

RDMAが有効にならない/SMB Directにならない

  • ドライバ/ファームの不整合:OS標準ドライバではなくベンダー推奨に揃える
  • NICが想定どおり割り当てられていない:管理用とストレージ用が混在していると確認が難しい
  • RoCEのPFC/ETS設計:スイッチ側QoSが未設定だとドロップやポーズ嵐で性能が崩れることがある
  • MTU不一致:ジャンボフレームを使うなら全経路で揃える(途中で欠けると逆効果)

帯域が伸びない/CPUが高い

  • SMBマルチチャネルが片系しか使っていない:速度差が大きいNICが混ざる、RSS設定、アドレス設計などを見直す
  • ストレージと他トラフィックが競合:Live Migrationやバックアップがストレージ網を食い尽くすと、平常時I/Oにも波及する
  • 暗号化/署名の影響:セキュリティ要件は大切だが、内部専用網でどこまで必要かを整理し、必要なら性能検証を行う

“動くけど不安定”のときに疑うべきこと

  • スイッチのバッファ/輻輳:RDMAは低遅延前提で、輻輳時に挙動が分かりにくい。ポート統計やQoSカウンタも見る
  • 経路の非対称:片側だけ遅い/ドロップが多いと、マルチチャネル全体の体感が落ちる
  • “最適化し過ぎ”:収束設計でVLAN/QoS/仮想スイッチを盛りすぎると原因切り分けが困難になる。まずは推奨構成に寄せる

まとめ:RDMAとSMBの役割分担を一言で言うと

Azure LocalにおけるRDMAとSMBの関係は、次の比喩で覚えると整理しやすいです。

  • RDMA=高速道路(低遅延・低CPUで運べる“道路”)
  • SMB 3.x=輸送ルールと車両(その道路を使ってデータを運ぶ“プロトコル”)

そして、Azure Local / S2Dで最も重要なのは「ミラー/パリティのためのノード間複製」を、SMB Direct+SMBマルチチャネルで強くすることです。RDMAはVMメモリを共有するためではなく、分散ストレージを“ローカル並みに扱うための裏方”として効く──この視点を持つと、ネットワーク設計・トラブルシューティング・性能検証が一気に進めやすくなります。

この記事を書いた人

実務の現場で詰まりがちなポイントを地図にするITブログ「IT trip」を運営。Windows/Office(Teams・Excel)からSQL、サーバ運用、ガジェットまで、再現性のある手順と“なぜそうなるか”を丁寧に解説します。読んだらすぐ試せること、そして迷った人の次の一歩が見えることを大切にしています。

コメント

コメントする

目次