PCIeスロットが足りません(切実)
前略、色々無茶な改造が罷り通っている我が家の自宅鯖ですが、遂に グラフィックボードを筐体内で縦へダブルスタックする暴挙 に出ました。
Q. アホなのでは?
A. アホです。
色々(色々)あって PCIe 5.0 x16スロットをPCIe Bifurcationでx8x4x4に割っていたのをx8x8に割り直して 、グラフィックボードとして従前からの Intel Arc B580(12GB) と、新入りの NVIDIA GeForce RTX 2060(12GB) へ割り当てることになりました。
はい、察しの良い方はお気付きかと思いますが。
従前環境
改造後環境
- 図の通りHBAとNICが溢れましたorz
本当は RTX2060についてはPCIe x4接続で運用するつもりだった んですが、 用意したライザーカードでは安定動作出来ず PCIeスロットから供給される電源が75W必要 なため、どうしても PCIe 6ピンで電源供給可能なライザーカード となると、 SFF-8654 8i(PCIe x8)接続 か MCIO(PCIe x8)接続 のものしかなく、予算と既存資産との兼ね合いから 10GtekのSFF-8654 8iなライザーカード を選択せざるを得ませんでした。
で、そうなると当然皺寄せは他の低速(比較的であって、帯域を使わないとは全然言ってない)なHBAとNICに行くわけでして。
かと言って、BD790iの空きスロットは、M.2スロットが1本だけ 。
今回はこの M.2スロットをなんとかして、HBAとNICを自宅サーバー上に実装しようとした(けど思い通りには行かなかった) というお話になります。
完成形予想図
また無茶苦茶やってるなオイ
物品調達
大前提
そもそもBD790iのM.2スロットは、 2つともNVMe専用 なので、 原理的にはPCI Express 5.0 x4(後継機種ではPCIe 4.0 x4)の信号 が通っています。
よって単純に言えば、 このPCIe x4の信号をPCIeブリッジチップへ導いてやって、最低でもPCIe x4を2本取り出せるようなものがあればOK なわけです。
M.2 -> SFF-8611 4i ライザーカード + SFF-8611 4i -> SFF-8611 4i ケーブル
昨今流行りのミニPCやハンドヘルドPCのM.2スロットを、Oculink(SFF-8611 4i)として取り出すためのライザーカードと、SFF-8611 4iケーブルです。
SFF-8611 4i -> PCIe x16(電気的にはx4) ライザーカード
次に、このSFF-8611 4iとして取り出された 信号を、PCI Express x16スロット(電気的にはx4)の形状に直す 必要があります。
そこで、SFF-8611 4i(いわゆるOculink)からPCIe x16スロットに直すライザーカードを使います。
今回はHBAとNIC用にも必要ですので、同じものを3枚使用します。
PCIe x8 -> 4ポートU.2 NVMe SSD HBA
10Gtek S96S4X8 PCIe X8 to (4x) SFF-8643 Adapter, with PEX8724
PCIe x8をU.2 NVMe SSD×4ポートに変換するHBAです。
このPCの構成では 上流の帯域が半分 しかありませんが、どうせ比較的低速なデバイスしか繋がないし 選択の余地はありませんのでこのまま続行します。
SFF-8643 -> SFF-8611 4i ケーブル
最後に、HBAの端子形状がSFF-8643ですので、これをSFF-8611 4iに変換 する必要があります。
上流となるHBAは PEX8724 という PCIe 3.0 x24レーン(上流側に8レーンなので、下流側には16レーン)を6分割できるPCI Expressスイッチングチップが載っているだけ ですので、 特に深く考えずとも端子形状をSFF-8611 4iに変更するケーブルを使うだけ で、難なく変換出来るはずです。
以上。これは勝ったな。
どう考えても失敗する余地は無い のでこれは勝ったな。と確信していました(盛大なフラグ
組み込み
何かHBAを楽天で買ったら 一向に伝票番号も発送通知すら来ず、気が付いたら玄関の死角側にポツンとAmazonの置き配で配達されてた後に発送番号が来た というホラー展開はありましたが 物品が届いたので早速組み込みます。
そして地獄のトラブルシューティングが幕を上げたのです……
トラブル1(HBAを認識しない)
- 読んで字の如く、起動すると HBAを認識しない
- dmesgにも記録がなく、HBAが起動時の初期化段階で停止している 模様
- よってHBA配下の拡張カード類も全部認識しない
🥺
トラブル2(HBAからSFF-8643ケーブルを外すとHBAは認識される)
- 読んで字の如く、SFF-8643ケーブルを外すとHBAは認識される
- が、当然HBA配下に接続したい拡張カード類は接続されていない のでただの置き物
🥺
トラブル3(直接M.2スロットからのSFF-8611ケーブルで拡張カードのライザーカードに接続すると認識する)
- 読んで字の如く、M.2スロットと拡張カードを直結すると正常に動作する
- が、当然接続されなかった方の拡張カードはあぶれるし、HBAは宙に浮くので色々足りない
🥺
トラブル4(検証のため元の構成に戻したらLVMのRAIDが崩壊)
- 読んで字の如く、LVMでRAID0とRAID6に束ねていたNAS領域が崩壊(一番深刻)
- 一応マウント自体はされているが、アクセスしようとするとI/Oエラーになる
- 結論から言えば、元の構成に戻した時、SATA HBAと4ポートNICのPCIeスロットの接続順が入れ替わってしまったことにより、別のデバイスという認識になってしまってLVMが崩壊した
-
幸い、Geminiくんを駆使してあれこれ調べている内に、デバイス名が通常の初期化順(通常「/dev/sda」から始まるところ、「/dev/sdi」から始まっていることに気付いたので、PCIeスロットの接続順を変更したところ、デバイス名が正しい順番に戻り、データが復旧した
(40TB近いしバックアップがなかったので全部確認できている訳ではないが、取り敢えずファイル等のパーミッションは元に戻ったし読み書き出来るようになった)
- ……ということはPCIe HBAの配下に移動したらまたLVMが崩壊するやつじゃん?
- つまり、フルバックアップを取ってから作業しなきゃいけないじゃん?
🥺
トラブル5(検証機でPCIe HBAにGPU載せてみたらショートしてるっぽい挙動を見せる)
- 読んで字の如く、検証機でPCIe HBAの先にローエンドGPUを載せてみた ところ、 GPUのファンが回らなかった(どこかがショートしている時の典型的な症状)
-
ということはライザーカードとHBA自体は単独ではきちんと動くから……
もしかして:購入したSFF-8643 to SFF-8611 4iケーブルの結線が4本とも全部おかしい!?
- 😇ここで購入履歴を確かめたところ、確かにライザーカードと異なるメーカーのケーブルを購入していました。
- 😇でも経験上、他のメーカーという謳い文句のケーブルを買っても多分同じ
Cableccのケーブルが届くと思うんだよな……?
ここでシンキングタイム
- PCIe HBAの導入はマストではない
- 究極的にGPU2枚とHBAとNICを押し込めればそれで良い
で、最終的にどうなったか
秘技! 配線マジック発動!
いや何かSSD増えとるし、PCIe x8がPCIe x4になっとるし、結局PEX8724のHBA要らんのかーい!
何が起きたか
システムSSDが両面実装だったため、両面タイプのヒートシンクを当てていたところ圧力がアンバランスになりSSD基盤が反ってしまい、SSD増設のタイミングでヒートシンクも交換したらSSD基盤内接触不良が起きて、万力🗜️で締め上げて反らさないと認識しない(読み出せるとは言っていない)という物理損傷に遭遇し、もうどうなってもいいや、って気持ちで色々刷新することになった結果がこれです
解説
- この構成のキモは 「PCIe x16をx8x8ではなくx4x4x4x4にしてSFF-8654 8i to SFF-8611 4i×2ケーブルを 通常とは逆向き に挿して、電気的にPCIe x4接続でグラフィックボード2枚を取り込んでいる」 ところにあります
- なんでそんなこと出来るのかと言うと、 PCIeが通せるSASケーブルで分岐しているやつって基本的に上流から下流に向けて帯域が枝分かれして細くなっていくように接続するのが普通 なんですが、内部配線的には 常識とは逆向きにしても(詰まり、上流のスロット側に枝側の細い配線が来て、下流のデバイス側に太い配線が来る)基本的には動作するのです
(※これはPCIeを通せるSASケーブルが (物理的に不可能なタイプを除いて)基本的にはどっちが上流でどっちが下流を区別していない のを見れば分かります。 基本的には上流が帯域太く(8i)、下流が細く(4i)という極めて常識的な原則があるだけで、逆にしても問題は帯域が絞られる以外にありません )
-
で、後は直感的にぶっつけ本番でSAS2308_HBAのスロット位置はここで大丈夫だろう、と
適当にバックパネルから3番目のポートに挿しました(良い子は真似してはいけない)。
結果的に スロット番号はズレず、LVMが崩壊することもありませんでした(震え声)
まあ多分ズレて崩壊してもスロット位置変えれば治ったと思うけど、ぶっつけ本番バックアップなしでやることではない
結局PEX8724のPCIe HBAは一旦お蔵入りになりました。1.8万円の置物……
まとめ
- Mini-ITXのマザーボード使ってたらPCIeスロットが足りなくなったよ!(それはそう)
- そこでPCIe Bifurcationでスロットを分割してたけど、それでも足りなくなったよ!
- PCIe HBAを追加したけど何か多分ケーブルが悪くて動かなかったよ!
- ついでにシステムSSDも全損したしLVMは崩壊の危機に晒されたけど、LVMのデータは死守したよ!でもシステムSSDは復旧叶わなかったよ!かなしいね!
- そこでシステムを再構築するついでに、PCIe x16スロットをx4x4x4x4に割って「PCIe x16 to SFF-8611 4i×4ライザーカード -> SFF-8611 4i -> SFF-8654 8i -> SFF-8654 8i to PCIe x16ライザーカード -> グラフィックボード」という変則接続にしてちゃんと動いたよ!