9332 文字
47 分

USB DAS の切断が止まらないので SATA 直結の自作 NAS に作り直した(JONSBO N4 + mergerfs + SnapRAID)

3 秒まとめ#

  • 前回組んだ USB DAS ベースの NAS が半年で破綻した。4 日間で USB リセット 73 回、その途中で ext4 が緊急 read-only に落ち、最後は USB バスから消えた
  • 原因は HDD ではなく USB ブリッジそのもの。ならば USB を経路から消すしかない、ということで SATA 直結の自作 NAS に作り直した
  • ケースは JONSBO N4。実費は ¥78,601(HDD は流用)
  • ただし 「ジャンク・動作未確認」の中古メモリを買ったせいで数日溶かした。memtest86+ を回したら起動 2 秒でエラー 2764 個。これが今回いちばんの授業料
  • ディスクは データ 4 台(合計 9.0TiB)+ パリティ 2 台に増強。2 台同時故障まで耐えられる構成になった

どんな人向けの記事?#

  • USB 接続の DAS や HDD ケースで、原因不明の切断に悩まされている人
  • 市販 NAS は高いし壊れたときが怖い、でも自作は面倒そう、と迷っている人
  • コンパクトな NAS ケースを探している人(JONSBO N4 の実物写真を多めに載せています)
  • 自作 PC のパーツを中古で揃えようとしている人(やめておいたほうがいい部分の話をします)

背景:USB DAS が半年で限界を迎えた#

半年前、QNAP NAS を卒業して mergerfs + SnapRAID で「壊れても理解できる」ストレージを作った という記事を書きました。ミニ PC に ORICO の 4 ベイ USB DAS をぶら下げて、mergerfs + SnapRAID でプールを組む構成です。

その記事の中で、私はこう書いていました。

USB DAS は SATA 直結と比べると接続の信頼性は劣ります。ケーブルの抜けや電源トラブルには注意が必要です。dmesg を定期的にチェックする運用が求められます。

書いた本人が言うのもなんですが、これは過小評価でした。実際には「注意が必要」どころか、運用が成立しないレベルで壊れました。

症状:全ベイが同時に落ちる#

起動直後は 4 台とも正常に認識されます。ところが使っているうちに、USB 接続が突然リセットされて切断される。しかも毎回、4 ベイすべてが同時にオフラインになる。1 台だけ落ちることは一度もありませんでした。

結果としてホスト側に I/O エラーが殺到し、ファイルシステムが緊急 read-only モードに落ちます。復旧のたびに fsck をかけて、ケースを繋ぎ直して再起動する羽目になりました。

カーネルログから拾った実際の記録がこちらです。

Jul 03 04:39:28 kernel: usb 2-3: reset SuperSpeed USB device number 2 using xhci_hcd
Jul 03 04:40:30 kernel: usb 2-3: reset SuperSpeed USB device number 2 using xhci_hcd
Jul 03 04:42:04 kernel: usb 2-3: reset SuperSpeed USB device number 2 using xhci_hcd
Jul 03 05:15:59 kernel: EXT4-fs error (device sdb1): ext4_journal_check_start:86: Detected aborted journal
Jul 03 05:16:00 kernel: EXT4-fs (sdb1): Remounting filesystem read-only
...
Jul 04 03:34:54 kernel: usb 2-3: reset SuperSpeed USB device number 2 using xhci_hcd
Jul 04 03:37:01 kernel: EXT4-fs error (device sdb1): ext4_journal_check_start:86: Detected aborted journal
Jul 04 03:37:01 kernel: EXT4-fs (sdb1): Remounting filesystem read-only
...
Jul 04 13:41:16 kernel: usb 2-3: USB disconnect, device number 2

6 月 30 日から 7 月 4 日までの 4 日間で、USB リンクリセットが約 73 回。1 日あたり 18 回です。そのうち 2 回はファイルシステムを read-only に叩き落とし、最後の行のとおり、デバイスは USB バスから完全に消滅しました。

切り分け:HDD は全部シロだった#

一応ひととおり疑って潰しました。

  1. HDD の健康状態 — 4 台とも SMART は PASSED。Reallocated Sector = 0、Pending Sector = 0、Uncorrectable = 0、UDMA CRC Error = 0。ドライブ側は完全に無罪
  2. USB ケーブルを交換 — 改善なし
  3. USB ハブを外して PC 背面の USB 3.0 ポートに直結 — 改善なし
  4. USB の電源管理(autosuspend)を無効化 — 改善なし

そして決定的なのが、冒頭に書いた「4 ベイが必ず同時に落ちる」という事実です。個々の HDD や SATA の接点の問題なら、落ちるドライブはバラけるはずです。全部が一斉に落ちるということは、その 4 台に共通する上流、つまりエンクロージャ内部の USB ブリッジ基板か電源回路が原因だと考えるのが自然です。

このエンクロージャの USB ブリッジは JMicron(USB ID 152d:0576)でした。

メーカーには保証交換を依頼した#

購入から半年、Amazon 経由で買った製品だったので、メーカーに上記のログと切り分け内容を添えて保証交換または返金を依頼しました。

ただ、仮に交換品が届いたとしても、同じ設計の製品に同じデータを預ける気にはなれません。ここで方針を切り替えることにしました。


要件定義:USB を経路から消す#

今回の作り直しにあたって、要件を整理しました。

  • SATA 直結。USB ブリッジを経路から消す。これが最優先
  • 市販 NAS は買わない。高額だし、壊れたときの代償が大きい。前回の記事で QNAP を卒業した理由がそのまま生きている
  • Immich の機械学習機能を使いたい。顔認識やセマンティック検索を CPU で回す
  • ファイルの整理や分類に LLM を使いたい。将来的な余力が欲しい
  • なるべくコンパクト。自宅のマンションに置くので、タワーは論外

「SATA 直結」と「コンパクト」を両立させようとすると、選択肢はかなり絞られます。ミニ PC には SATA ポートがないので、必然的にマザーボードから組むことになります。


パーツ選定#

ケース:JONSBO N4#

3.5 インチ HDD を 6 台積めて、Micro ATX が入って、それでいて小さい。この条件で探すと JONSBO N4 に行き着きました。

AliExpress で新品を ¥18,321。届いたものがこちらです。

JONSBO N4 のフロントパネル。ウォールナットの木目パネルと黒のパンチングメッシュ

ウォールナットの木目パネルに、電源ボタン、USB 3.0 Type-A、USB Type-C。リビングに置いても違和感のない見た目です。

ただ、新品で買ったのに、箱から開けたら傷がついていました

木目パネルの角にできた欠け。塗装が剥げて下地が見えている

木目パネルの角が欠けて下地が見えています。AliExpress の梱包はこんなものかと諦めました。リセールするわけでもないし、これで商品価値が変わるわけでもないので、このまま使います。上からステッカーでも貼ればわからないですし。

国内で新品を買うならこちらです。

PCケース JONSBO N4 (ブラック)

PCケース JONSBO N4 (ブラック)

サイズ:286mm (W) *300mm (D) *228mm (H)・重さ:約3.75㎏ ・材質:0.7㎜厚さSGCC

価格: ¥25,180
🛒 Amazonで購入

付属品とマニュアル#

付属品は結束バンド、ネジ類、そして HDD 用のゴムグロメットとハンドルです。

JONSBO N4 の付属品。結束バンド、ネジ、HDD 用のゴムグロメットとグレーのハンドル

HDD のマウント方式は、DELL のエンクロージャのようなしっかりしたトレイではなく、HDD の側面にゴムのグロメットとハンドルをネジ止めして、そのままベイに差し込むという簡素なものです。最初はちょっと心配になりました。

ただ、後述するとおり実際に使ってみると、これが省スペースかつ安価に構築するための最適解だと感じました。トレイがない分ベイのピッチを詰められるし、ゴムが防振も兼ねています。

説明書は多言語で、図解が丁寧でした。

JONSBO N4 の説明書 手順 1〜3。トップカバーの外し方、電源ラック/ファンラック/PCI-E カードストリップの取り外し、PSU の取り付け

手順 1〜3 はトップカバーを外し、電源ラック・ファンラック・PCI-E カードストリップを取り外して、SFX 電源を電源ラックに取り付けるところまで。

JONSBO N4 の説明書 手順 4〜6。ケーブルマネジメント、マザーボードの取り付け、グラフィックカードの取り付け

手順 4〜6 はケーブルマネジメント、マザーボード、グラフィックカードの取り付けです。**「マザーボードを載せる前にケーブルを取り回せ」**と最初に書いてあるのが親切でした。あとから通そうとすると詰みます。

JONSBO N4 の説明書 手順 7〜9。ファンとトップカバーの取り付け、ダストフィルターの取り外し、HDD の取り付け

手順 7〜9 はファンとトップカバー、ダストフィルター、そして HDD の取り付けです。HDD は「ネジとゴムパッドで組み立ててから、対応する穴に入れてカードスロットに押し込む」という説明になっています。

JONSBO N4 のマニュアル。パッケージ内容の一覧とパーツ図

パッケージ内容の一覧を見ると、HDD 用ネジ 36 本、HDD ゴムグロメット 32 個、HDD ハンドル 7 個と、かなり潤沢に入っています。

そしてパーツ図で見逃せないのが 「Half height PCI-E card strip」 という記述です。この時点で気づくべきでした(後述します)。

マザーボード:MSI PRO B760M-E DDR4#

パソコン工房限定モデルが ¥8,980。

  • ソケット:LGA1700(第 12〜14 世代 Intel Core 対応)
  • フォームファクタ:MicroATX
  • チップセット:B760
  • メモリ:DDR4-SDRAM × 2(最大 64GB、Dual channel)
  • ストレージ:M.2 × 1、SATA × 4
  • 拡張:PCI Express x16 × 1、PCI Express x1 × 1
  • 映像出力:HDMI × 1、VGA × 1
  • サウンド:Realtek ALC897
  • LAN:Realtek RTL8111H Gigabit LAN

SATA が 4 ポートというのが選定のポイントです。ここに PCI Express x1 の拡張カードを足せばポート数を伸ばせます。

なお Realtek ALC897 というオンボードサウンドが、後で盛大に足を引っ張ります。

MSI PRO B760M-E DDR4 mATXマザーボード、DDR4~128GB×2、PCI-E x 16×1、PCI-E ×1、M.2×1、SATA×4、USB 3.2×2、USB 2.0×4。

MSI PRO B760M-E DDR4 mATXマザーボー...

高性能マザーボード:mATXマザーボードは、プロの使用に安定した信頼性の高いパフォーマンスを提供します。 Intel B760チップセットを搭載し、第12世代/第13世代Intel Coreプロセッサ

🛒 Amazonで購入

購入したパソコン工房限定モデルはこちらです(記事執筆時点で在庫切れ)。

CPU:Intel Core i3-14100 BOX#

秋葉原の TSUKUMO で ¥21,580。4 コア 8 スレッド、TDP 60W。

Intel Core i3 14100 ボックスプロセッサー (LGA 1700/4色 / 8スレッド/12MBキャッシュ)。, BX8071514100

Intel Core i3 14100 ボックスプロセッサー...

Intel Core i3 14100 ボックスプロセッサー:ソリッド4コア8スレッドパフォーマンスは、日常のタスクやカジュアルゲームに最適です。 12MBキャッシュで高速応答。

価格: ¥36,245
🛒 Amazonで購入

SATA 拡張カード:MZHOU ASM1166(6 ポート)#

メルカリで ¥5,000。Amazon アウトレット品の新品が流れてきたものです。ASM1166 チップ、PCIe x1、ヒートシンク付き、SATA ケーブル 6 本付属。

マザーボードの 4 ポートと合わせて最大 10 ポートになるので、将来の増設余地は十分です。

MZHOU PCI Express SATA3.0 増設ボード 6ポートSATAカード 6Gbps PCI-E SATA 3.0 ヒートシンク付き SATAケーブル付き 拡張カード PCI Express x1 X4 X8 X16用 Windows 7/8/8.1/10 Mac Linux 対応

MZHOU PCI Express SATA3.0 増設ボー...

このPCIeSATAカードを使用すると、6つの6 Gbps SATA 3.0デバイスをコンピューターに追加できます(2つの衛星にはドライバーが必要です)。

価格: ¥6,299
🛒 Amazonで購入

メモリ:TeamGroup Elite DDR4-2666 16GB(8GB × 2)#

メルカリで ¥8,000。型番は TED416G2666C19DC01、PC4-21300、CL19、288pin。

ただし、これは 2 枚目のメモリです。 最初はメルカリで Crucial の 16GB 1 枚を ¥7,990 で買っていました。これが全ての元凶になります(後述)。

DDR4-2666 なので、マザーボードが対応する 3200 では回りません。ただ NAS 用途で帯域が効く場面はほぼないので、気にしていません。

新品で同等品を買うならこちらです。

TEAMGROUP Elite DDR4 16GB キット (2 x 8GB) 2666MHz (PC4-21300) CL19 UDIMM 288ピン デスクトップメモリ - TED416G2666C19DC01。

TEAMGROUP Elite DDR4 16GB キット ...

環境保護規制、生産、製造に関するJEDECの遵守とRoHSへの準拠。

価格: ¥30,734
🛒 Amazonで購入

NVMe SSD:Samsung PM981a 256GB#

メルカリで ¥4,599。型番 MZVLB256HBHQ-000H1、M.2 2280。OS 起動用なので容量は要りません。

SFX 電源:SilverStone SST-ST45SF(450W / 80PLUS Bronze)#

Amazon で ¥12,121。

SilverStone SST-ST45SF 450W 80PLUS Bronze の本体と箱

SFX 規格はちょっと特殊なので、ATX 電源に比べると割高です。450W もあれば i3 + HDD 6 台には十分すぎるくらいですが、電源だけは新品と決めていました(理由は後述)。

SilverStone SFX電源ユニットSST-ST45SF-V3 ブラック

SilverStone SFX電源ユニットSST-ST45S...

標準SFXフォームファクター、および付属のブラケットによるATXへの対応

価格: ¥12,121
🛒 Amazonで購入

秋葉原とオンラインの価格差を調べに行った#

パーツを揃えるにあたって、実際に秋葉原にも足を運びました。オンラインとの乖離を知りたかったからです。

結論から言うと、一部のパーツ(CPU や中古 GPU)では秋葉原のほうが安かったです。

秋葉原の店頭にある GPU の価格表。GeForce RTX 5060 や NVIDIA RTX PRO シリーズが並ぶ

秋葉原の店頭にある Intel LGA1700 Core i3 の価格表。i3-14100 BOX が ¥21,800 で売り切れ表示

i3-14100 BOX が ¥21,800。売り切れ表示になっていますが、実際には別の店で ¥21,580 で買えました。

そして今回いちばん衝撃を受けたのがメモリの棚です。

秋葉原の店頭にある DDR4 Long-DIMM の価格表。DDR4-3200 16GB×2 が ¥33,980、8GB×1 が ¥12,580

DDR4-3200 の 8GB が 1 枚 ¥12,580、16GB × 2 枚組が ¥33,980。数年前の相場を知っていると目を疑う値段です。

2026 年の DDR4 / NAND 価格は歴史的高騰の最中にある#

これは店頭が高いわけではなく、市況そのものです。

  • NAND 価格が半年で約 8.5 倍
  • Crucial(Micron)がコンシューマ向け RAM 市場から撤退
  • 結果として 16GB の DDR4 新品が ¥12,000〜16,000

古い相場観はまったく通用しません。「メモリなんて安いでしょ」と思って予算を組むと足元をすくわれます。

この店頭価格を見たことが、メモリを中古で買うという判断につながりました。結果的にそこで一度失敗するのですが、後述するとおり、失敗の原因は「中古を選んだこと」そのものではありませんでした。

買わずに済んだ GPU:Quadro P2000#

Immich の機械学習を GPU で回せたら速いだろうと考えて、パーツ構成を LLM に相談していました。そこで NVIDIA Quadro P2000 5GB を勧められます。中古で 1 万円強、消費電力も低く、悪くない提案に見えました。

ところが、Quadro P2000 はフルハイトのカードです。一方 JONSBO N4 は、マニュアルのパーツ図にはっきり書いてあったとおり 「Half height PCI-E card strip」、つまりロープロファイル専用でした。物理的に入りません。

LLM はケースの物理制約を見ていませんでした。 私が N4 を使うと伝えたうえでの提案だったので、これは完全に穴です。買う直前に気づいたので出費は免れましたが、正直かなり萎えました。

そこでモチベーションが切れて、一旦 GPU は無しと決めました。Immich の機械学習は CPU で回します。実際、後述するリソース状況を見るかぎり CPU は完全に余っているので、これで困っていません。

もし GPU を積むなら「ロープロファイル・ファン付き・Quadro P シリーズ(P400 / P600 / P1000)」から選ぶ必要があります。

LLM にパーツ構成を相談するときは、ケースの物理制約を自分で確認してください。 LLM は型番の互換性(ソケット、チップセット、規格)はよく見てくれますが、「そのカードがそのケースに物理的に入るか」は落とします。ロープロファイル / フルハイト、ケースの奥行き、CPU クーラーの全高、電源のフォームファクタ。このあたりは自分でマニュアルを開いて確認するのが確実です。

パーツ一覧と実費#

パーツ製品名価格購入元新品/中古
ケースJONSBO N4¥18,321AliExpress新品
マザーボードMSI PRO B760M-E DDR4(パソコン工房限定モデル)¥8,980パソコン工房新品
CPUIntel Core i3-14100 BOX¥21,580TSUKUMO(秋葉原)新品
メモリTeamGroup Elite DDR4-2666 16GB(8GB × 2)TED416G2666C19DC01¥8,000メルカリ中古
NVMe SSDSamsung PM981a 256GB(MZVLB256HBHQ-000H1)¥4,599メルカリ中古
SATA 拡張カードMZHOU ASM1166 6 ポート PCIe x1¥5,000メルカリ新品
SFX 電源SilverStone SST-ST45SF 450W 80PLUS Bronze¥12,121Amazon新品
最終構成の合計¥78,601

HDD は前回から流用しているので、この金額には含まれていません。

ただし、実際に財布から出ていったのはこの金額ではありません。最初にメルカリで買った Crucial の 16GB(¥7,990)が不良品で、まるまる無駄になりました。これを足すと総支出は ¥86,591約 9% が無駄になった計算です。しかも金額以上に、後述するトラブルシューティングで数日を溶かしました。


組み立て#

一通りパーツが揃った状態。これから組み上げます。

JONSBO N4 のケースの上に MSI PRO B760M-E DDR4 の箱と Intel CPU の箱を積んだ状態

Crucial 16GB DDR4-3200 UDIMM、Intel Core i3-14100 の箱、MSI のマザーボード

この写真に写っている Crucial のメモリが、このあと私を数日苦しめます。この時点ではまったく疑っていませんでした。

ケースを開ける#

JONSBO N4 のフロントパネルを開けた状態。HDD ベイのケージと底面のダストフィルター

フロントを開けると HDD ベイのケージが見えます。底面のダストフィルターは工具なしで抜けます。

CPU#

Intel Core i3-14100 の裏面。LGA1700 のランドが並ぶ

CPU クーラー#

Intel Laminar RM1 リテールクーラーの底面。銅芯にグリスが塗布済み

BOX 版に付属する Intel Laminar RM1。銅芯にグリスが塗布済みなので、そのまま載せるだけです。i3-14100 の TDP 60W ならリテールクーラーで十分でした。

M.2 NVMe#

マザーボードの M.2 スロットに Samsung PM981a 256GB を装着した状態

Samsung PM981a を M.2 スロットに装着。

このマザーボードは M2_1 スロットに M.2 SATA SSD を装着すると SATA_5 が使えなくなるという制約があります。今回挿したのは NVMe(PCIe 接続)なので影響はありません。SATA 接続の M.2 を使う場合は注意してください。

SATA 拡張カード#

PCI Express x1 スロットに装着した MZHOU ASM1166 の SATA 拡張カード。S1〜S6 のポートが並ぶ

ASM1166 を PCI Express x1 スロットに装着。S1〜S6 の 6 ポートが並んでいます。

マザーボードをケースに組み込む#

JONSBO N4 のケース内にマザーボードを組み込んだ状態。Intel のリテールクーラーと赤い SATA ケーブルの束

ケーブリング#

ケーブルをまとめて整理した状態のケース内部を上から見た図

ケーブルは綺麗にまとめておきます。見た目の問題ではなく、導風を遮ってしまうと HDD の冷却に効いてくるためです。付属のベルクロと結束バンドで束ねました。

工具#

Wera Tool-Check PLUS のビットラチェットセット

組み立てには Wera の工具が活躍しました。精度が高くて、ネジ山を舐めません。自作 PC を何度か組むなら、工具にお金をかける価値はあります。


トラブルシューティング:ジャンク品のメモリで数日溶かした#

さて、ここからが本番です。組み立て後、Ubuntu が起動途中でクラッシュを繰り返しました。原因究明の全過程を残しておきます。

1. 画面が映らない#

まず画面が映らない。原因は HDMI-DP 変換ケーブルでした。マザーボードの HDMI に直結して解決。

2. 1 分で電源が落ちる、カーネルパニック#

当初は CPU クーラーの熱暴走を疑いました。違いました

3. サウンドドライバでカーネルパニック#

ログを見ると snd_sof_intel_hdasoundwire_cadencesnd_hda_codec_generic といったサウンド関係のモジュールが並んでいます。

サウンドドライバでカーネルパニックした画面。RIP が snd_hda_gen_parse_auto_config を指し、サウンド関連モジュールが並ぶ

RIP: snd_hda_gen_parse_auto_config で落ちていて、いかにもサウンドドライバが原因に見えます。

BIOS でオンボードオーディオ(HD Audio Controller)を無効化して回避しました。NAS にサウンドは要らないので、そもそも切っておいて正解です。

4. Ubuntu 26.04 LTS で systemd がエラーを吐く#

最初は最新の 26.04 LTS を入れようとしていました。すると bpf-restrict-fs: BPF LSM hook not enabledFailed to start up manager → Freezing という流れで起動しません。

「26.04 が新しすぎるのだろう」と判断して、Ubuntu Server 24.04 LTS に変更しました。この判断は間違いでした(後述)。

5. それでも複数のプロセスがランダムにクラッシュする#

24.04 にしても、まだ落ちます。しかも落ち方がおかしい。

kmem_cache_alloc
systemd-resolved: segfault
cron: general protection fault
python3.12: invalid opcode

Ubuntu が KERNEL PANIC で停止した画面。Attempted to kill init と表示されている

KERNEL PANIC! Attempted to kill init! で停止することもあれば、

起動が一番長く進んだ時の画面。多数のサービスが起動したあと journald のエラーで止まっている

一番長く進んだときはあと少しでログインというところまで行って、また止まる。毎回止まる場所が違うわけです。

まったく無関係なプロセスが、バラバラの場所で落ちる。これはメモリ破損の典型的な症状です。ここでようやくメモリを疑いました。

6. BIOS を最新に更新してみた(効果なし)#

念のため、この時点で BIOS を最新版に更新しました。

MSI M-Flash による BIOS 更新中の画面。PRO B760M-E DDR4、67% 進行、VB.G0 → VB.I0

M-Flash で VB.G0VB.I0(2026/05/09 版)に更新。ファームウェア起因の不安定さなら、これで直る可能性もあります。結果は変わりませんでした。相変わらず、起動のたびに違う場所で落ちます。

7. memtest86+ でエラー 2764 個#

ここまで来て、ようやく memtest86+ を回しました。GRUB のメニューから起動します。

memtest86+ を起動する GRUB メニュー。「Start Memtest86+」の選択肢が並ぶ

結果は一目瞭然でした。

memtest86+ v8.10 の実行画面。Time 0:00、Test #2、Errors 2764 と表示され、赤いエラー行が並ぶ

起動から 2 秒、Test #2(Address test)の時点でエラー 2764 個Failing Address の列が赤いエラーで埋まっています。中古 Crucial メモリの不良が確定しました。

なお memtest 自体も最初は起動しませんでした。GRUB で can't find command 'linux' と出る。BIOS の CSM / UEFI 設定が混在していたのが原因で、別の USB メモリに焼き直して起動できました。

8. BIOS で確認した「正常値」#

犯人を絞り込むために BIOS で各種の値を確認しました。

  • CPU:i3-14100 を正常認識
  • Memory:16384MB を認識(容量は見えているのがタチが悪い)
  • CPU 温度:40℃(クーラーの問題ではない)
  • BIOS:E7D48IMS.BI0(2026/05/09、第 14 世代対応済み)

ハードウェアは全部正常で、犯人はメモリだけでした。

9. メモリを交換したら、26.04 がすんなり入った#

メルカリで買い直した TeamGroup の 8GB × 2 に交換 → memtest クリア。

そしてそのまま Ubuntu 26.04 LTS のインストールに成功しました

❯ cat /etc/issue
Ubuntu 26.04 LTS \n \l

つまり、手順 4 の「26.04 の systemd エラー」も、犯人はメモリでしたbpf-restrict-fs のエラーメッセージがあまりに具体的だったので、私はすっかり「26.04 が新しすぎる」と信じ込んで 24.04 に退避しました。あの回り道は完全に無駄でした。

メモリ破損は、いかにもそれらしいエラーメッセージを吐きます。 systemd の起動失敗も、サウンドドライバのカーネルパニックも、全部「それっぽい」原因を指し示していて、私はそのたびに律儀に対処していました。しかし実際には、壊れたメモリの上では何が起きてもおかしくないのです。

サウンドについては、オンボードオーディオを無効にしたまま運用しているので、あれもメモリのせいだったのかは確かめていません。NAS に音は要らないので、切ったままにしています。

なお、インストーラの「Third-party drivers」でハングする現象もありました。GPU を積んでいないので NVIDIA ドライバは不要です。チェックを入れずにスキップして回避しました。

返品交渉は成立しなかった#

不良だった Crucial メモリは、出品時に「ジャンク・動作未確認」と明記されていました。したがって返品交渉は成立しません。買った側の自己責任です。


パーツ選定で得た教訓#

今回の失敗を踏まえて、次に組むときのルールを言語化しておきます。

1. 「中古はダメ」ではなく「ジャンク・動作未確認はダメ」#

最終構成を見てもらうとわかるとおり、メモリも NVMe も、結局は中古(メルカリ)です。ケースも AliExpress。それで安定して動いています。

つまり「中古だから失敗した」わけではありません。失敗の原因はもっと具体的で、「ジャンク・動作未確認」と明記されたメモリを買ったことです。出品者は正直に書いていました。それを承知で買ったのは私です。

2026 年の DDR4 高騰下で、店頭の 8GB × 2 が ¥23,980。中古なら ¥8,000。中古を選ぶ経済合理性はあります。ただし、動作確認済みのものを買いましょう。

2. 中古メモリを買ったら、組む前に memtest を回す#

これが今回いちばんの教訓です。

メモリを挿したら、OS を入れる前に memtest86+ を回す。 それだけで数日が浮きました。実際、不良は起動から 2 秒で 2764 個のエラーとして出ました。2 秒で終わる検査を後回しにしたせいで、私は数日を溶かしています。

3. メモリ破損は「それらしい嘘」をつく#

systemd の bpf-restrict-fs エラー、サウンドドライバのカーネルパニック。どれも具体的で、それらしい原因を指し示していました。私はそのたびに真面目に対処し、OS のバージョンまで下げました。そして少なくとも systemd のほうは、メモリを直したら消えました。

壊れたメモリの上では、どのエラーメッセージも信用できません。 無関係なプロセスがバラバラの場所で落ちはじめたら、エラーの内容を読む前にメモリを疑ってください。

4. 電源は新品で買う#

コンデンサの劣化は外から見えません。しかも故障時に他のパーツを巻き込みます。

今回 USB DAS が壊れた根本原因も、突き詰めれば電源系の経年劣化の可能性が高い。¥12,121 を惜しんで数万円のパーツを飛ばすのは割に合いません。ここは中古を選ばずに新品にしました。

5. LLM の構成提案は、物理制約を見ていない#

Quadro P2000 の件です。LLM は型番の互換性はよく見てくれますが、「そのカードがそのケースに入るか」は落とします。ケースのマニュアルは自分で開いてください。

6. 古い相場観を捨てる#

2026 年の DDR4 / NAND は歴史的高騰の最中です。「メモリは安い」という前提で予算を組まない


完成#

JONSBO N4 のフロントパネルを開け、JONSBO のハンドルを付けた HDD が並ぶ様子

フロントを開けると、JONSBO のハンドルを付けた HDD が並んでいます。ラベルに 2TB、2TB、6TB と書かれているのが見えます。右側にもベイがあり、2.5 インチ SSD 用のスロットも確認できます。

最初は「ゴムの取っ手だけで大丈夫か」と心配していたマウント方式ですが、実際に組んでみるとこれで十分でした。ハンドルを掴んで引き抜くだけでドライブを交換できます。

JONSBO N4 のフロントパネルを閉じた状態。木目パネルとパンチングメッシュのダストカバー

閉じるとこの通り。ただの木の箱です。これが 6 台の HDD を積んだ NAS には見えません。

JONSBO N4 の背面。マザーボードの I/O パネル、SFX 電源、拡張スロット

背面はマザーボードの I/O パネル(HDMI、VGA、PS/2、USB、LAN、オーディオ)と SFX 電源。拡張スロットの中に赤い SATA ケーブルが見えています。


OS とソフトウェア構成#

前回の構成をそのまま引き継いでいます。

  • OS:Ubuntu Server 26.04 LTS
  • ストレージ:mergerfs + SnapRAID
  • コンテナ基盤:Docker + Coolify
  • リモートアクセス:Tailscale(WireGuard)
  • 監視:Zabbix
  • 写真管理:Immich(Coolify でデプロイ、Tailscale 経由でアクセス、機械学習は CPU で処理)
  • カメラ録画:Tapo C200 の RTSP ストリームを /mnt/data3 に保存中
  • 今後:Frigate に載せ替えて動体検知イベントのみ録画する予定

mergerfs と SnapRAID の設定ファイルの中身については、前回の記事 に詳しく書いています。 今回はハードウェアを入れ替えただけで、ソフトウェア側の考え方は変わっていないので、そちらを参照してください。

Immich は Cloudflare Tunnel ではなく Tailscale で公開している#

身内しか使わないので、Cloudflare Tunnel は使わず Tailscale にしました。

理由は明確で、Cloudflare の無料プランは 100MB を超えるアップロードが 413 エラーになるためです。動画の同期で確実に詰まります。Tailscale ならサイズ制限がなく、高速で、経路も暗号化されています。

PostgreSQL と Redis は NVMe 側、写真の実データは mergerfs プール(/mnt/storage/immich)に置いています。データベースを FUSE の上に置くとオーバーヘッドが効いてくるので、この分離は重要です。


ディスク構成:データ 4 台 + パリティ 2 台に増強#

今回いちばん大きな変更点がここです。前回はデータ 3 台 + パリティ 1 台でしたが、データ 4 台 + パリティ 2 台に増やしました。

SATA 直結にしてポート数に余裕ができたことと、ケースが 6 ベイあることで実現できた構成です。

現在の構成#

❯ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sdd 1.8T 582G 1.3T 32% /mnt/data1
/dev/sde 1.8T 582G 1.3T 32% /mnt/data2
/dev/sda 3.6T 110G 3.5T 3% /mnt/data3
/dev/sdb 1.8T 129M 1.8T 1% /mnt/data4
/dev/sdc 5.5T 857G 4.6T 16% /mnt/parity1
/dev/sdf 3.6T 857G 2.8T 24% /mnt/parity2
mergerfs 9.0T 1.3T 7.8T 14% /mnt/storage
役割マウントポイント容量使用量
データ/mnt/data11.8TiB(2TB)582GB
データ/mnt/data21.8TiB(2TB)582GB
データ/mnt/data33.6TiB(4TB)110GB
データ/mnt/data41.8TiB(2TB)129MB
パリティ/mnt/parity15.5TiB(6TB)857GB
パリティ/mnt/parity23.6TiB(4TB)857GB
mergerfs プール/mnt/storage9.0TiB1.3TiB(14%)

起動ドライブは Samsung PM981a 256GB NVMe で、98GB 中 30GB 使用(32%)です。

パリティ 2 台にした意味#

SnapRAID のパリティを 2 台にすると、データディスクが 2 台同時に壊れても復旧できます

前回はシングルパリティだったので、1 台壊れている最中にもう 1 台が逝ったら終わりでした。データディスクが 4 台に増えると、そのぶん「どれか 1 台が壊れる」確率も上がります。パリティを増やしたのは自然な流れです。

SnapRAID のパリティディスクは、最大のデータディスク以上の容量が必要です。 今回は最大のデータディスクが 3.6TiB(data3)、パリティが 5.5TiB と 3.6TiB。parity2 はちょうど同じ容量でギリギリ成立しています。つまり 4TB より大きいデータディスクを追加すると、parity2 が容量不足になります。次に容量を増やすときは、パリティ側から手をつける必要があります。

mergerfs の設定#

/etc/fstab のプール定義はこうなっています。

/mnt/data* /mnt/storage fuse.mergerfs defaults,allow_other,cache.files=off,category.create=mfs,dropcacheonclose=true,minfreespace=20G,fsname=mergerfs,x-systemd.requires=/mnt/data1,x-systemd.requires=/mnt/data2,x-systemd.requires=/mnt/data3,x-systemd.requires=/mnt/data4 0 0

前回から変えた点が 2 つあります。

  • ブランチ指定を /mnt/data* のグロブにした — ディスクを増やすたびにコロン区切りのリストを書き換える必要がなくなりました
  • x-systemd.requires= を各データディスクに付けた — mergerfs がマウントされる前にメンバーディスクが揃っていることを systemd に保証させます。メンバーが未マウントの状態で mergerfs が立ち上がると、空のディレクトリの上にプールが乗ってしまうので、これは重要です

各ディスク側は defaults,noatime,nofail でマウントしています。


Zabbix で何を監視しているか#

前回に引き続き Zabbix で監視しています。今回はディスクが 6 台に増えたので、専用のダッシュボードを作りました。

設計方針は「ほとんどアクセスしないので、積極的にスピンダウンさせる」です。ケースファンも HDD の温度に連動させて、最低限しか回らないようにしています。ファンを回すこと自体がケース内部にホコリを吸い込むことになるので、回さないに越したことはありません。

スピン状態と温度#

Zabbix の「n4 HDD spin/standby」ダッシュボード。6 台の HDD のスピン状態と温度をヘキサゴンとグラフで表示

ドライブごとのスピン状態(1 = 回転中、0 = スタンバイ)を 1 日ぶん平均すると、こうなります。

ドライブ稼働率(1 日平均)温度(現在)温度(min / avg / max)
data10.3235℃31 / 36.1 / 39℃
data20.3234℃30 / 35.5 / 38℃
data31.0038℃38 / 39.6 / 42℃
data40.0236℃33 / 36.0 / 36℃
parity10.0440℃34 / 39.0 / 40℃
parity20.0438℃32 / 37.0 / 38℃

狙いどおりに効いています。

  • data4 とパリティ 2 台はほぼ寝ています(稼働率 0.02〜0.04)。パリティは snapraid sync のときしか触らないので当然です
  • data1 / data2 は 3 割ほど。既存データがここに載っているので、それなりに読み出しが走ります
  • data3 だけが稼働率 1.00、つまり回りっぱなしです。ここには RTSP でカメラから受けた動画ストリームを保存しているので、常に書き込みが発生しています

温度は全台 42℃ 以下に収まっています。回っていない 3 台は 40℃ 前後、常時回っている data3 が最高 42℃。HDD としてはまったく問題のない範囲です。

容量と I/O#

Zabbix のディスク容量と I/O 使用率のグラフ。各マウントポイントの使用率と、sda〜sdf の Disk utilization

容量の使用率は data1 / data2 が 32%、data3 が 3%、data4 が 0%、parity1 が 15%、parity2 が 23%。80% で warning、90% で critical のトリガーを仕掛けてあります。

I/O 使用率のグラフを見ると、初期の rsync でデータを流し込んでいた時間帯(左端)に sda が 100% に張り付いているのがわかります。それ以降は落ち着いていて、平常時はほぼ 0% です。

マザーボードの温度とファン回転数#

Zabbix のマザーボード温度とファン回転数のグラフ。CPU、PCH、VRM、System の温度と CPU Fan / Case Fan の RPM

マザーボード側のセンサーも拾っています。

センサー現在min / avg / max
CPU44℃41 / 46.9 / 97℃
CPU Socket43℃41.5 / 44.7 / 69.5℃
System46℃45 / 46.6 / 55℃
VRM MOS47℃45.5 / 48.8 / 68.5℃
PCH62℃62 / 63.8 / 68℃
PCIe x131℃30 / 30.5 / 31℃
M2_132℃31.5 / 31.5 / 31.5℃

PCH が 62℃ と、いちばん高いです。ただしチップセットの動作温度としては許容範囲で、しかも安定しています。CPU の max 97℃ は初期セットアップ時の瞬間的なスパイクで、平常時は 44℃ 前後です。

ファンの回転数はこうなっています。

  • CPU Fan:現在 776rpm、min 561rpm、平均 1011rpm、max 3200rpm
  • Case Fan:現在 665rpm、min 0rpm、平均 534rpm

ケースファンの min が 0rpm、つまり HDD が冷えているときは完全に止まっています。狙いどおりです。平均 534rpm ということは、ほとんどの時間ほぼ停止か極低速で回っていることになります。

静かで、ホコリも吸い込まない。木の箱がリビングに置いてあっても、動いていることに気づきません。


実運用のリソース状況#

Zabbix で 7 日間計測した実測値です。

  • CPU:平均使用率はほぼ 0%、User time の平均 1.34%。8 スレッドを完全に持て余しています
  • メモリ:14.8GB 中 3〜4GB 使用。8GB でも足りました
  • Load average:8 コアに対して平均 0.2 前後

結論:NAS としてはオーバースペック#

正直に書くと、NAS としては明確にオーバースペックです。i3-14100 の 8 スレッドはまったく使い切れていません。

省電力 SoC(Intel N100 / N305)ベースで組んだほうが「NAS らしい」構成でした。消費電力も下がったはずです。

ただ、今回はホームラボの母艦としての拡張余力と割り切っています。Immich の機械学習を CPU で回し、将来的に LLM でファイルの整理や分類をやろうとすると、N100 では厳しい。そこに賭けた構成です。

とはいえ、純粋に NAS が欲しいだけなら N100 を選ぶべきというのは、正直な反省点として書いておきます。


まとめ#

USB DAS ベースの NAS が壊れて、SATA 直結の自作 NAS に作り直しました。

  • USB DAS は「注意が必要」ではなく、常時稼働のストレージには向かない。 4 日で 73 回のリセット、ext4 の緊急 read-only、最終的にバスから消滅。全ベイが同時に落ちる時点で、犯人は個々のドライブではなく USB ブリッジです
  • SATA 直結にすると、この問題は根本から消えます。 マザーボードから組む手間はかかりますが、それだけの価値がありました
  • JONSBO N4 は「省スペースかつ安価に構築する」ための良い解でした。 HDD のマウント方式は簡素ですが、実用上まったく問題ありません。閉じてしまえばただの木の箱です
  • 問題は「中古」ではなく「動作未確認」でした。 メモリも NVMe も中古で組んで安定しています。ただし中古メモリを挿したら、OS を入れる前に memtest を回す。2 秒で終わる検査を後回しにして数日を失いました
  • ケースの物理制約は買う前に読む。 LLM に構成を相談しても、そこは見てくれません
  • データ 4 台 + パリティ 2 台に増強して、2 台同時故障まで耐えられる構成になりました
  • 積極的なスピンダウンとファン制御が効いています。 パリティ 2 台の稼働率は 0.04、ケースファンは止まっている時間のほうが長い。QNAP 時代に悩まされた「HDD が止まらない問題」からは完全に解放されました

実費は ¥78,601(HDD は流用)。ただし不良メモリを含めた総支出は ¥86,591 でした。約 9% を授業料として払ったことになります。

それでも、市販の 6 ベイ NAS を新品で買うことを考えれば安いですし、何より壊れたときに自分で理解して直せる構成になりました。前回の記事で書いた「壊れても理解できるストレージ」という思想は、ハードウェアを一段下のレイヤーまで自分で握ったことで、より徹底されたと思っています。

次は、いま素の RTSP で撮りっぱなしにしているカメラの録画を Frigate に載せ替える予定です。動体検知イベントのときだけ録画すれば、data3 も少しは眠れるようになるはずです。

この記事が役に立ったら
GitHub Sponsorsで応援できます

コメント