なぜホームサーバーはPCIe分割なしでNVMeドライブを認識しないのか?

エヴァ・ウォンテクニカルライター であり ZimaSpaceの常駐ティンカーでもあります。 生涯のオタクであり、 ホームラボとオープンソースソフトウェアに情熱を持っています。彼女は複雑な技術的概念をわかりやすく、 実践的なガイドに翻訳することを専門としています。エヴァはセルフホスティングは楽しくあるべきで、怖がるものではないと信じています。彼女のチュートリアルを通じて、コミュニティが ハードウェアのセットアップを解明する手助けをしています。初めてのNAS構築からDockerコンテナの習得まで。

ホームサーバーは、カードが複数のM.2ソケットを1つのPCIeスロットにパッシブに配線している場合でも、そのスロットが単一リンクとしてプラットフォームに露出されていると、マルチNVMeアダプター上の1台のSSDしか検出できません。最初のドライブはリンクを確立できますが、他のドライブはファームウェアやオペレーティングシステムが列挙するための独立した下流接続を持ちません。

PCIe分割は、1つの広いルートポート接続を複数の狭いリンク(例:x16がx4/x4/x4/x4になる)に分割することで、対応するパッシブアダプターの問題を解決します。すべてのマルチNVMeカードで必須ではありません。オンボードPCIeスイッチを備えたアダプターは独自の下流ポートを作成できますが、その場合はすべてのドライブがカードの上流リンクを共有します。

分割されていない1つのPCIeリンクはパッシブアダプター上のすべてのドライブを露出できません

パッシブなマルチNVMeアダプターは、複数のSSDを1つのデバイスインターフェースの背後で統合するストレージコントローラーのようには動作しません。主にエッジコネクターと個別のM.2ソケット間でレーン群、リファレンスクロック、リセット信号、および電源を配線します。各NVMe SSDは独自のPCIeエンドポイントであり、ホストトポロジーへの使用可能なリンクが必要です。

ルートポートが1つの広いリンクとして構成されたままの場合、ホストはそのパッシブカード上のすべてのソケットに対して個別の論理リンクを作成していません。NVMeドライバーやファイルシステムが関係する前に、1つのSSDだけが認識され、他のドライブは存在しないように見えます。これが通常「1台のドライブのみ検出される」という症状であり、容量が減った4台のドライブが表示されるわけではない理由です。

PCIe分割は1つの物理スロットから複数のリンクを作成します

分割はCPUまたはチップセット側でポート構成を変更します。物理的なx16接続は、プラットフォームがこれらのモードをサポートしている場合、2つのx8リンク、1つのx8と2つのx4リンク、または4つのx4リンクに分割されることがあります。各リンクはアダプター上の異なるエンドポイントとトレーニングできます。

分割は起動後にオペレーティングシステムによって行われるのではなく、プロセッサのPCIeコントローラー、マザーボードの配線、およびプラットフォームのファームウェアに依存します。ASUSの公式PCIe分割互換性ガイドによると、カードが露出できるM.2ドライブの数はマザーボード、CPU、スロット、およびレーン割り当てによって異なります。

パッシブとスイッチベースのNVMeアダプターは異なるPCIeトポロジーを構築します

2枚のカードは同じ数のM.2ソケットを持っていても、ホストに対する要求は大きく異なります。パッシブカードはルートコンプレックスが複数のリンクを供給することに依存します。スイッチベースのカードはホストに上流ポートを提示し、SSD用に複数の下流ポートを作り出します。

アダプタのトポロジー ホスト側の要件 SSDが認識される仕組み 帯域幅の境界
分岐のないパッシブカード 分割されていないホストリンク1本 アクティブなレーングループに配線されたソケットのみが列挙可能です 未使用のソケットは残りの物理レーンから帯域幅を得られません
互換性のある分岐を持つパッシブカード 対応する分割モードと一致するレーン配線 各SSDはホストが作成した独自のリンクでトレーニングします 各ドライブは割り当てられたリンク幅と世代によって制限されます
PCIeスイッチ付きアダプター 1つの使用可能な上流リンク;ホストの分岐は通常不要です スイッチは1つの上流接続の背後に複数の下流ポートを公開します 同時に動作するSSDのトラフィックはスイッチの上流帯域幅を共有します

BroadcomのPEX 8612ドキュメントは、1つの上流接続と複数の下流ポートを持つ具体的なスイッチの例を示しています。チップやポートの幅はカードによって異なりますが、アーキテクチャ上の違いは変わりません:スイッチはファンアウトを作り出し、パッシブボードはホストが既に分割したレーンを接続するだけです。

フルレングススロットが16本の使用可能なレーンを保証するわけではありません

機械的なスロットの長さと電気的なレーン数は異なる特性です。物理的にx16カードを受け入れるコネクタでも、配線はx8、x4、あるいはx1の場合があります。コンパクトなシステムでは、2つ目のフルレングススロットがCPUから直接ではなくチップセットからレーンを取得したり、別のM.2ソケット、ネットワークコントローラ、拡張スロットと共有したりすることがあります。

これは利用可能な分岐モードと接続可能なドライブ数の両方を変えます。x4電気スロットは、アダプターに4つのソケットがあるからといって4つの独立したx4リンクを供給できるわけではありません。NVM Express組織は、M.2が最大x4 PCIeリンクをサポートできると指摘しています。x4は一般的なフルパフォーマンス接続であり、すべてのホストスロットがインストールされたすべてのSSDに4レーンを提供するという約束ではありません。

ファームウェアがプラットフォームで使用可能な分岐モードを決定する

分岐設定はPCIeレーン構成、スロット構成、または明示的なx8/x8やx4/x4/x4/x4オプションなどの名前で表示されることがあります。利用可能なメニューはプラットフォーム固有です。CPUに十分なレーンがあっても、マザーボードが必要なグループをそのスロットに配線していなかったり、ハードウェアがファームウェアが公開しないトポロジーをサポートしている場合があります。

ファームウェアのアップデートは一部のプラットフォームでサポートを追加または修正できますが、ハードウェアにないレーン配線やコントローラー機能を作り出すことはできません。正確なCPU、スロット、BIOSバージョンについては、マザーボードまたはホームサーバーのマニュアルが権威ある情報源です。「PCIe Gen3は分岐をサポートする」という一般的な表現は不十分で、PCIe世代は特定のルートポートがどのように配線または構成されているかを決定しません。

PCI列挙中に消える欠落ドライブ

起動時に、プラットフォームのファームウェアとオペレーティングシステムはトポロジーをたどり、構成空間を読み取ることでPCIデバイスを検出します。Linuxカーネルのドキュメントでは、ホストブリッジの下にあるデバイスは標準のPCI列挙を通じて見つけられると説明しています。NVMeドライバーは対応するPCIエンドポイントが検出され、リソースが割り当てられた後にのみアタッチできます。

これは障害境界を特定します。追加のSSDがPCIデバイスツリーに存在しない場合、パーティション、RAID設定、ファイルシステム、またはNASストレージプールソフトウェアを変更してもそれらを検出できません。すべてのSSDがPCIエンドポイントとして認識されているが、1つがストレージインターフェースに存在しない場合、調査は分岐を超えてNVMeドライバー、デバイスの健康状態、またはストレージ構成に移ります。

すべてのSSDが認識された後でもリンク幅はパフォーマンスを変えます。

正常に列挙されても各ドライブの最大スループットが保証されるわけではありません。x4/x4/x4/x4として動作する4ドライブカードは、ドライブごとにより広い独立リンクを提供しますが、トポロジーでドライブあたりのレーン数が少ない場合は異なります。PCIe世代もレーンあたりの帯域幅を変えるため、リンク幅と世代は一緒に確認する必要があります。

スイッチベースのアダプターは異なる制限をもたらします。複数の下流SSDが軽い使用時に個別に高速で見えることがありますが、同時転送は上流リンクに集中します。NVM ExpressのNVMe RAIDとアップリンクのボトルネックに関する記事は、複数のx4 SSDが狭い共有接続を飽和させる理由を説明しています。

他のNVMe検出失敗はビフリケーションの欠如に似ることがあります。

複数のドライブの代わりに1台だけが認識される場合、パッシブアダプターのトポロジー不一致が強く疑われますが、決定的ではありません。レーン共有ルールにより他のコネクタが装着されているとスロットが無効になることがあり、特定のスロットはインストールされたCPUで非アクティブになる場合や、アダプターのソケットとレーンのマッピングによりドライブを特定の順序で装着する必要があることもあります。

フォームファクターも重要です。M.2は物理モジュールとコネクタのファミリーを示し、すべてのM.2ドライブがNVMeを使用するわけではありません。SATA M.2 SSDはPCIe信号のみを持つソケットでは動作しません。接続不良、ファームウェアで強制された非対応のPCIe世代、不十分な冷却、または故障したSSDが検出や安定性の問題を引き起こすことがあります。

マルチNVMe構成を解釈する前にPCIeレーンマップを読みます。

スロットに印刷された数字ではなく、トポロジーから始めます。スロットの電気的幅、CPUまたはチップセットのソース、サポートされているビフリケーションモード、レーン共有ルール、アダプターのアーキテクチャを特定します。次に、意図されたSSDエンドポイントの数と、実際に利用可能な独立リンクまたは下流スイッチポートを比較します。

  • アダプターがパッシブかPCIeスイッチを含むかを確認してください。
  • スロットの物理的な長さではなく、電気的なレーン数を確認してください。
  • そのスロットとCPUでサポートされている正確な分割モードを検証してください。
  • オンボードのM.2、SATA、ネットワーク、その他のPCIeデバイスの共有レーンルールを確認してください。
  • PCIエンドポイントの列挙をNVMeおよびストレージプールの検出から分離してください。
  • すべてのSSDが表示された後に交渉されたリンク幅と世代を確認してください。

このアプローチは、すべてのアダプターが同じ方法で動作するとは限らないことを前提に、容量と性能の両方を説明します。他のホームサーバー拡張パスを評価する読者は、このPCIeとUSB拡張の比較を補足的な文脈として利用できます。ビフュルケーションの決定自体はプラットフォームとアダプタのトポロジーに依存します。

よくある質問

すべてのマルチNVMeアダプターにPCIeビフュルケーションが必要ですか?

いいえ。パッシブアダプターは通常、下流ポートを自ら作成しないため、互換性のあるホストビフュルケーションが必要です。オンボードPCIeスイッチを搭載したカードは、マザーボードのビフュルケーションなしで1つのアップストリームリンクを通じて複数のSSDエンドポイントを表示できますが、そのドライブはそのアップリンクを共有します。

BIOSアップデートでPCIeビフュルケーションを追加できますか?

CPUコントローラーとマザーボードの配線がすでに対応している場合に、ビフュルケーションオプションを表示または修正できます。ファームウェアのアップデートでは物理的なレーンを追加したり、ボードの配線を変更したり、サポートされていないルートポートの分割を可能にしたりはできません。

なぜ4スロットアダプターでNVMeドライブが1台だけ表示されるのですか?

一般的な説明は、パッシブアダプターが1つのPCIeリンクとしてまだ構成されているスロットに取り付けられているため、アクティブなレーン群に接続されたソケットだけが正常にトレーニングされるというものです。スロットの配線、装着順序、共有レーン、互換性のないM.2ドライブタイプ、またはデバイスの故障は、ビフュルケーションが証明されたとみなす前に除外すべきです。

PCIeビフュルケーションはNVMeドライブをRAIDに結合しますか?

いいえ。ビフュルケーションは独立したPCIeリンクを作成し、ホストが別々のエンドポイントを列挙できるようにします。RAIDや他のストレージプーリング層は、その後ファームウェア、オペレーティングシステム、またはストレージソフトウェアで設定されます。4台のドライブを検出することと4台のドライブを結合することは別の操作です。

テック&AIハブ

もっと読む

Get More Builds Like This

Stay in the Loop

Get updates from Zima - new products, exclusive deals, and real builds from the community.

Stay in the Loop preferences

We respect your inbox. Unsubscribe anytime.