Building a Budget Homelab NAS Server (2022 Edition)

Michael Lynch

予算を抑えた自宅ラボ用NASサーバーの自作(2022年版)

原文は Michael Lynch により に公開されました。 このブログを購読する

今年、初めて自宅用のストレージサーバーを自作することにした。オープンソースソフトウェアを使い、個人用と仕事用のデータを保存する32TBのシステムだ。

サーバー本体は531ドル、ディスク4台が732ドルで、合計1,263ドルかかった。市販のストレージサーバーと同程度の価格だが、より高性能でカスタマイズ性も高い。

この記事では、パーツをどう選んだか、どんな失敗をしたか、そして自作に興味がある人へのアドバイスを紹介する。

小売パッケージに入ったNASサーバーのパーツの写真完成したサーバーの写真

2022年に自作したホームラボ用TrueNASサーバーのビフォーアフター

動画での解説がよければ、YouTubeに収録したものがある。

背景

なぜNASサーバーを作るのか

NASはネットワーク接続ストレージ(network-attached storage)の略だ。NASサーバーの主な役割は、データを保存し、ネットワーク上の他のコンピュータから利用できるようにすることにある。

では、なぜデータのためだけに専用のサーバーが必要なのか?どのコンピュータもデータを保存しているのに、と思うかもしれない。

私はデータ保存を他のシステムから切り離しておくと便利だと感じている。メインのワークステーションやノートPCは2〜3年ごとに買い替えるが、そのたびにデータを移行するのはいつも面倒だった。専用のストレージサーバーがあれば、そうした移行作業のほとんどが不要になり、システム間でのファイル共有も容易になる。

そもそも私はデータ量が非常に多い。いわゆるデータホーダーで、これまでに撮ったすべてのデジタル写真、過去20年間に送受信したすべてのメール、そして個人プロジェクトのすべてのソースコードを残している。現在の合計は8.5TBだ。

最も容量を食っているのはDVDとBlu-rayのコレクションだ。お気に入りのコンテンツをストリーミングサービス任せにしたくないので、今でも映画やドラマは物理メディアで購入している。新しいディスクを手に入れたら、すぐにrawイメージをリッピングし、ストリーミング用の動画ファイルも作成する。rawのISOとストリーミング用のMP4を合わせると、1枚で60GBのディスク容量を占めることもある。

DVDとBlu-rayを500枚収納したバインダー2冊の写真

2回目に観る可能性がある作品は、今でもDVDやBlu-rayの物理メディアで購入している。

「ホームラボ」とは?

「ホームラボ(homelab)」は、ここ数年で広まってきた口語的な言葉だ。

ホームラボとは、自宅の中に設けた、通常はオフィスやデータセンターにあるようなITハードウェアやソフトウェアを試せる場所を指す。新しいスキルを磨くための練習環境にもなるし、単に面白い技術で遊ぶ場にもなる。

なぜNASを自作するのか?

ホームラボの世界に入ったばかりだったり、PCの自作経験がなかったりするなら、NASの自作はおすすめしない

同等の機能を持ちつつ、もっと手軽に始められる市販品があるからだ。

自作のホームラボNASを作る前は、4ベイのSynology DS412+を7年間使っていた。正直、このSynologyはとても気に入っていた。これまでで最高の買い物の一つだ。NASサーバーの世界への優しい入り口となり、NASに興味があるならまずここから始めるのが良いと思う。

棚に置かれたSynology DS412+の写真

10TBのSynology DS412+は7年間しっかり働いてくれた。

数ヶ月前、Synologyが起動しなくなり、カチカチという音を立て始めた。背筋が寒くなる思いだった。この一台にどれだけ依存していたかを思い知らされたからだ。Synologyのサーバーはユーザーが修理できるようには作られておらず、保証期間後に部品が壊れれば筐体ごと交換しなければならない。しかも私のようにSynology独自のストレージフォーマットを使っていると、別のSynologyシステムがなければデータにアクセスできない。(追記:Hacker Newsのコメントで、Synology以外のシステムからでもSynology Hybrid RAIDボリュームを復旧できると教えてもらった。)

幸い、古いSynologyは内部を掃除してディスクを挿し直したら復活したが、重要な警告となった。そこで、オープンなストレージフォーマットをオープンソースで実装しているTrueNASに乗り換えることにした。

TrueNASとZFS

TrueNAS(旧称FreeNAS)は、ストレージサーバー向けOSとして最も人気のあるものの一つだ。オープンソースで、ほぼ20年の歴史があるため、信頼できる選択肢に思えた。

TrueNASのロゴ

TrueNASはZFSを採用している。ZFSはストレージサーバー専用に設計されたファイルシステムだ。NTFSやext4といった従来のファイルシステムは、低レベルのディスクI/Oを管理するボリュームの上で動作する。一方ZFSは、ファイルレベルの論理からディスクI/Oまでスタック全体を一括で管理する。この包括的な制御により、ZFSは他のファイルシステムよりも高い機能と性能を発揮する。

ZFSの便利な機能には次のようなものがある:

  • 複数の物理ディスクを一つのファイルシステムに統合できる
  • データ破損を自動的に修復する
  • ディスク上のデータの特定時点のスナップショットを作成できる(OS XのTime Machineに似た機能)
  • 必要に応じてディスク上のデータを暗号化・圧縮できる

このシステムを作るまでZFSの経験はまったくなかったので、試すのが楽しみだった。

ストレージの計画

必要なストレージ容量の見積もり

Synology NASを買ったときは、最初に4TBドライブを3台入れて、4つ目のスロットは空けておいた。Synology Hybrid RAIDで実効容量は7TBだった。3年後に容量が足りなくなったので4台目を追加し、実効容量は10TBになった。

新しい自作でも同じ戦略を取ることにした。現在のニーズを満たしつつ、拡張の余地を残すシステムが欲しかった。ざっくりとした目標は、まず実効容量20TBでスタートし、後でディスクを追加して30TBまで拡張できるようにしておくことだった。

ZFSは既存のプールに新しいドライブを追加できないが、この機能は現在活発に開発中だ。ストレージを拡張する必要が出る頃には、TrueNASでも利用できるようになっていることを期待している。

追記(2025-01-25):この機能は現在利用可能で、最新バージョンのZFSに含まれているが、まだTrueNASで試す機会はない。

小容量ディスクを多数か、大容量ディスクを少数か?

ZFSはディスク障害に耐えるように設計されており、データの各ブロックを冗長に保存する。この仕組みにより容量計画は複雑になる。実効容量は各ディスクの容量を単純に足し合わせたものにはならないからだ。

ZFSはディスクの「プール」からファイルシステムを作る。プール内のディスクが多いほど、ZFSは容量を効率的に使える。例えば、10TBドライブを2台ZFSに渡した場合、総容量の半分しか使えない。一方、4TBドライブを5台使えば実効容量は14TBになる。総容量はどちらの場合も同じなのに、小さいドライブ5台の方が40%も多く使えるのだ。

NASサーバーを自作する際は、大容量ディスクを少数使うか、小容量ディスクを多数使うかを決める必要がある。小容量ドライブの方が1TBあたりの単価は安いことが多いが、運用コストは高くなる。4TBドライブ2台は、8TBドライブ1台の2倍の電力を消費する。

私はサーバーの物理的な設置面積を最小限にしたかったので、より大容量のディスクを少数使う方を選んだ。

raidz1、2、3のどれを選ぶか?

ZFSにはraidz1、raidz2、raidz3という冗長化の選択肢がある。主な違いは堅牢性だ。raidz1はディスク1台の故障に耐えられる。raidz2は2台同時の故障、raidz3は3台同時の故障に耐えられる。

堅牢性を高めるほど、実効容量は減る。4TBのHDDを5台使った場合、各ZFSモードでの実効容量は次のとおりだ:

ZFSタイプ実効容量総容量に対する割合
raidz115.4 TB77.2%
raidz211.4 TB57.2%
raidz37.7 TB38.6%

私はraidz1を選んだ。ディスクが数台程度なら、2台が同時に故障する確率はかなり低いからだ。

ZFSはバックアップ戦略ではないことを覚えておいてほしい。ZFSはディスク障害からは守ってくれるが、誤削除、マルウェア、盗難など、ZFSでは防げない脅威は他にもたくさんある。私は重要なデータはすべてresticで暗号化してクラウドにバックアップしている。

ZFSの価値は、1台が故障してもクラウドバックアップに頼らずに済むことにある。2台故障した場合はバックアップからの復旧が必要になるが、それは手間ではあるものの、raidz2のために実効容量の20%を犠牲にする価値はないと判断した。

物理ドライブの数が多いほど、ディスク障害には慎重になるべきだ。もし20台のプールなら、おそらくraidz2やraidz3を選んでいただろう。

同時故障を防ぐ

単純に考えれば、2台のディスクが同時に故障する確率は限りなく小さいように思える。Backblazeの統計によると、高品質なHDDの年間故障率は0.5〜4%だ。年4%のリスクは、1週間あたり0.08%の確率になる。2台同時故障は3万年に1度のはずだから、大丈夫なはずだ、と思うだろう?

問題は、ディスクの故障が統計的に独立ではないことだ。1台が故障すると、隣のディスクの故障リスクは大幅に高まる。特に同じモデル、同じ製造ロットで、同じワークロードを処理してきたディスクならなおさらだ。

さらに、ZFSプールの再構築(リビルド)は残ったすべてのディスクに異常な負荷をかける。通常使用ならあと数ヶ月は持ったはずのディスクが、リビルドの追加負荷で壊れることもある。

こうしたリスクを踏まえ、同時故障のリスクを減らすためにできることはやっておいた。異なるメーカーの2種類のモデルを選び、同じ製造ロットに当たる確率を下げるため、異なる販売店から購入した。どれほどの効果があるかは分からないが、コストもさほど増えなかったので、やらない理由はなかった。

異なるパッケージのSeagate IronWolfドライブを持っている私の写真

同じモデルのディスクを2つの異なる販売店から購入し、同じ製造ロットに当たる確率を下げた。

パーツの選び方

マザーボード

最初に決めたのはマザーボードのサイズだった。Synology DS412+のコンパクトさは常に気に入っていた。mini-ITXマザーボードでPCを組んだことは一度もなかったので、良い機会だと思った。

次のような理由からASUS Prime A320I-Kを選んだ:

  • SATAポートを4つ備えており、4台のディスクをマザーボードに直接接続できる
  • Radeonグラフィックスに対応しており、別途グラフィックカードを買う必要がない
  • 価格が98ドルと手頃
ASUS Prime A320I-Kマザーボードの写真

ASUS Prime A320I-Kはmini-ITXフォームファクタでオンボードグラフィックスをサポートしている。

警告:このマザーボード選びは後悔している。詳細は後述する。

よく似たB450も検討したが、価格はほぼ2倍だった。主な利点はオーバークロック耐性が優れていることのようだったが、私には不要だった。

CPU

調べた限り、ZFSはそれほどCPUを必要としない。安価なDell OptiPlex 7040ミニPCにTrueNASを入れて簡単なテストをしたところ、CPUはほとんど使われなかったので、省電力な選択肢で十分だと判断した。

CPU選びで最も重視したのはRadeonグラフィックスのサポートで、A320マザーボードのオンボードHDMI出力を使えるようにすることだった。

AMD Athlon 3000Gの写真

AMD Athlon 3000Gは安価で、グラフィックス機能を内蔵している。

最終的にAMD Athlon 3000Gに決めた。わずか105ドルでコストパフォーマンスが良く、Radeonグラフィックスに対応し、ベンチマークもまずまずだ。

ケース

前回VMサーバーを自作したときはFractal Designのケースを使った。これまでで一番気に入っているケースなので、今回もFractal Designにした。

Fractal Design Node 304 Blackというコンパクトなmini-ITXケースを選んだ。タワー型よりキューブに近いデザインが気に入った。ドライブベイが6つあり、最初に十分な台数を載せつつ、将来の拡張の余地も残せる。

Fractal Design Node 304 Blackケース

Fractal Design Node 304 Blackは6台のディスクを収納できるmini-ITXケースだ。

ディスク(データ用)

ケースに6つのドライブベイがあるので、まずは8TBディスク4台で始めることにした。raidz1で実効容量は22.5TBになる。将来拡張が必要になれば、5台目で30.9TB、6台目で37TBまで増やせる。

8TBクラスでは7200回転未満のドライブはあまりなく、上は10,000回転までもある。私のNASでは、ボトルネックがネットワークなので7200回転以上の速度は意味がない。10,000回転のドライブは騒音も消費電力も大きいだけで、実用上の性能向上はない。

最初は故障しやすいディスクを避けるためにBackblazeのハードドライブ統計を調べたが、彼らが使っているのは高価格帯のドライブだった。一時は故障率0.5%という驚異的な低さに惹かれて400ドルのドライブも検討したが、数%故障率を下げるために2倍の金額を払うのは非合理的だと気づいた。

最後に避けるべき落とし穴は、瓦記録(SMR)方式だ。ZFSはSMRドライブでは性能が著しく低下するので、NASを組むなら既知のSMRドライブは避けるべきだ。CMRと表記されているものは従来型磁気記録(conventional magnetic recording)で、ZFSには問題ない。

Toshiba N300Seagate IronWolfを選んだ。どちらもTrueNASフォーラムやRedditで評判が良かった。どちらも180〜190ドルで、容量の割にコストパフォーマンスが良かった。

Toshiba N300Seagate IronWolf

Toshiba N300(左)とSeagate IronWolf(右)

ディスク(OS用)

Kingston A400

Kingston A400は120GB M.2 SSDでわずか32ドルと非常にお買い得だ。

TrueNASは専用のOS用ディスクを必要とするが、調べた限りではそこまで要求は高くない。OSは最低2GBの空きが必要だが、TrueNASはOSディスクへの読み書きを頻繁には行わない。

非常に安かったのでKingston A400にした。120GBのM.2ディスクで32ドルだ。M.2ディスクは大好きだ!ケーブルが不要で、マザーボードに差し込むだけで、ほとんど場所を取らず、二度と触る必要もない。

メモリ

調査の中で、「ZFSはシステムのディスク容量1TBあたり1GBのRAMが必要」という「定説」をよく見かけた。ZFS開発者のRichard Yaoによれば、これは迷信だ。重複排除のようなメモリを大量に消費する機能もあるが、ZFSはメモリが限られていても問題なく動作する

メモリ選びは正直とても退屈だ。もっと厳密な選び方ができればよかったが、信頼できるベンチマークやユーザーレポートが見つからなかった。私の選び方は次のとおりだ:

  1. ASUS A320I-Kマザーボードに対応するRAMのリストを確認する
  2. 32GBまたは64GBで、2枚構成のものに絞る
  3. 信頼しているブランド(Corsair、Crucial、G.SKILL、Kingston、Samsung、Patriot、Mushkin、HyperX)に絞る
  4. 150ドル以下のものに絞る

この手順でたどり着いたのが、CORSAIR Vengeance LPX 32GB CMK32GX4M2A2400C14(2 x 16GB)で、128ドルだった。

CORSAIR Vengeance LPX 32GB CMK32GX4M2A2400C14 RAMの写真

CORSAIR Vengeance LPX 32GB CMK32GX4M2A2400C14(2 x 16GB)はA320I-Kマザーボードに対応しており、32GBとしては手頃な価格だ。

電源ユニット(PSU)

電源容量という点では、基本的にどの民生用PSUでも十分だった。PCPartPickerによると、私のシステムの消費電力はわずか218Wだ。本当は300〜400WクラスのPSUを選びたかったが、低ワット数でセミモジュラー式の選択肢がなかった。そこで500WのEVGA 110-BQ-0500-K1にした。

EVGA 110-BQ-0500-K1

EVGA 110-BQ-0500-K1はセミモジュラー式のPSUだ。500Wあれば私の構成には十分すぎる。

90度SATAケーブル

90度SATAケーブルを持っている私の写真

ケースのスペースの制約上、90度SATAケーブルが必要だった

今回初めて買ったのが、90度L字のSATAケーブルだった。マザーボードとPSUの間に標準的なSATAケーブルを挿すスペースがないと気づくまで、必要だとは思っていなかった。このスリムな90度ケーブルで問題は解決した。

SATAポートと電源の間に90度SATAケーブルがぎりぎり収まっている写真

PSUとマザーボードの間があまりにも狭く、90度のスリムなSATAケーブルが必要だった。

省いたもの

価格、複雑さ、物理的なスペースの理由から、意図的に省いたコンポーネントがいくつかある。

グラフィックカード(GPU)

物理的なスペースもマザーボードのポートも限られているので、専用のグラフィックカードは使いたくなかった。外部カードなしでグラフィックス処理ができるマザーボードとCPUの組み合わせを選んだ。

ホストバスアダプタ(HBA)

多くのNAS自作ではホストバスアダプタ(HBA)が使われる。HBAはマザーボードのPCIスロットに挿すチップで、接続できるディスクの数を増やしてくれる。

ZFSではHBAのファームウェアを書き換える必要がある(追記:どうやら書き換えが必要なのはRAID対応のHBAだけらしい)。HBAはさらにストレージが必要になるまで見送ることにした。ASUS A320I-KはSATAポートを4つ備えており、当面のニーズには十分だ。将来HBAを追加できるよう、PCIスロットは空けておいた。

ECC RAM

さまざまなTrueNAS構成を調べる中で、データ破損を防ぐためにECC RAM(エラー訂正コード付きRAM)は必須だという投稿をいくつも見た。結局、私はECC RAMは見送り、通常の民生用RAMを使うことにした。

もちろんサーバーがRAM上でデータを破損してほしくはないが、30年間ECCなしのコンピュータを使ってきて、データ破損を感じたことは一度もない。一日中複数ユーザーが高負荷をかけるようなサーバーを組むならECC RAMを選ぶだろうが、家庭用途なら通常の民生用RAMで十分だと思う。

SLOGディスク

多くのZFS構成では、SLOG(separate intent log)と呼ばれる専用のSSDが別途用意される。

SSDへの書き込みは複数の回転ディスクへの書き込みより桁違いに速いというのが考え方だ。アプリケーションがデータを書き込むと、ZFSはまずSSDに素早く書き込み、アプリケーションに書き込み完了を返し、その後非同期でデータをストレージプールに移動する。SLOGは書き込み速度を大幅に向上させる

私はポートとドライブベイの制約からSLOGディスクは組み込まないことにした。SLOGを追加すると、唯一のPCIスロットか6つのドライブベイのいずれかを犠牲にすることになる。後で容量を拡張できる余地を残しておきたかった。

パーツリスト

カテゴリコンポーネント支払額
CPUAMD Athlon 3000G$105.13
マザーボードASUS Prime A320I-K*$97.99
グラフィックス不要 — マザーボードがネイティブにグラフィックスをサポート$0
ディスク(OS用)Kingston A400 120GB$31.90
メモリCORSAIR Vengeance LPX 32GB CMK32GX4M2A2400C14 (2 x 16GB)$127.99
電源EVGA 110-BQ-0500-K1 500W 80+ Bronze セミモジュラー$44.99
ケースFractal Design Node 304 Black$99.99
SATAケーブルSilverstone Tek 超薄型L字90度SATAケーブル (x2)$22.30
合計(ディスク除く)$530.29
ディスク(ストレージ)Toshiba N300 HDWG480XZSTA 8TB 7200 RPM (x2)$372.79
ディスク(ストレージ)Seagate IronWolf 8TB NAS Hard Drive 7200 RPM (x2)$359.98
合計$1,263.06

* 注意:このマザーボードはAMD Athlon 3000G CPUではそのまま動作しない可能性がある。詳細は後述する。

市販品との比較

比較のため、同価格帯の市販品をいくつか挙げる。

製品2022年版 予算NASSynology DS920+QNAP TS-473A-8G-US
ディスクベイ644
RAM32 GB4 GB4 GB
最大RAM32 GB8 GB8 GB
CPUベンチマーク447930024588
価格$530.29$549.99$549

自作の総コストは市販品と同程度だが、コストパフォーマンスは自作の方が高い。RAMは8倍あり、クローズドソースのベンダー独自OSに縛られることもない。

組み立て写真

小売パッケージに入ったパーツの写真

小売箱に入ったすべてのパーツ

ケースに取り付けられたマザーボードの写真

Fractal Designのmini-ITXケースへのマザーボードの取り付けは問題なかった。

M.2 SSDを取り付けたマザーボードの写真

M.2 SSDの取り付けは大好きだ。ケーブルもレールも不要で、ネジ1本で完了だ。

取り付けられたPSUの写真

PSUの背面がケースの外に露出しないシステムを組むのは初めてだった。代わりに、このケースは短いNEMA延長ケーブルで内部のPSUをケース外部の電源入力につないでいる。

PSUを取り付ける前のSATAケーブルの写真PSUの横にぎりぎり収まっているSATAケーブルの写真

マザーボードのSATAポートとPSUの間があまりにも狭く、特別な90度のスリムなSATAケーブルを買う必要があった。

すべての配線を終えたマザーボードの写真

マザーボードにすべてを接続した状態(CPUファンを除く)

机の上に置かれたNASサーバーの写真

完成した自作機

TinyPilotでサーバーを構築する

このブログの長年の読者なら、私がRaspberry Piを使ってサーバーの構築と管理のためのツールを作ったことを覚えているかもしれない。TinyPilotというものだ。これはTinyPilotで構築した3台目のサーバーで、新しいTinyPilot Voyager 2で初めて構築したものだ。

TrueNASサーバーの上に置かれたVoyager 2 PoEデバイスの写真

キーボード、マウス、モニタをTrueNASサーバーに直接つなぐ代わりに、TinyPilot Voyager 2でインストールを管理した。

手前味噌だが、Voyager 2でのサーバー構築はとても楽しかった!サーバーにキーボードもモニタもつなぐ必要がなかった。ビデオ出力の確認、BIOSの起動、TrueNASインストーラーイメージのマウントまで、すべてウェブブラウザから行えた。

すべての配線を終えたマザーボードの写真

TinyPilotなら、フラッシュドライブやキーボード、モニタを挿さなくてもTrueNASインストーラーISOをマウントできる。

一つだけうまくいかなかったのがBIOSのアップグレードだ。TinyPilotは.img.isoのようなディスクイメージはマウントできるが、生のファイルをターゲットコンピュータと共有する方法にはまだ対応していない。ASUSのBIOSアップグレード用の.CAPファイルを読み込む必要があったときは、不本意ながらUSBメモリを使ってしまった。次のBIOSアップグレードではTinyPilotだけで完結できるよう、近いうちに対応したい。

このBIOSバージョンは非対応?それとも私が愚かなだけ?

すべてのコンポーネントを取り付けて電源を入れても、画面に何も映らなかった。

まずい!マザーボードのオンボードビデオの要件を勘違いしたのか?いつもの診断を一通りやった。RAMを挿し直し、CPUを挿し直し、ケーブルも確認したが、結果は同じだった。

慌ててググってみると、ASUS Prime A320I-KはAthlon 3000Gを使う前にBIOSのアップグレードが必要だという記述が見つかった。パーツ選びのときにその警告を見た覚えがあったが、軽く流していたのだ。「BIOSアップデートはやったことがあるし、大したことないだろう」と思っていたのだ。

CPUなしでどうやってBIOSをアップグレードするのか、ということを考えていなかった。

幸い、2017年版ホームラボVMサーバーのRyzen 7 CPUがASUS Prime A320に対応していた。そのサーバーからCPUとGPUを借りてきて、新しいNASサーバーをなんとか起動させることができた!

バージョン2203のASUS BIOSのスクリーンショット

古い2017年版ホームラボVMサーバーのパーツを使ってBIOSをアップグレードできた。

奇妙なことに、借りてきたパーツで起動できた後、マザーボードはBIOSバージョン2203で動作していると表示していた。ASUSによればこのバージョンはAMD Athlon 3000G CPUに対応しているはずなのだ。それでも最新のBIOSである5862にアップデートした。

ASUS Prime A320I-Kはバージョン2203からAthlon 3000Gをサポートしていると書かれたASUSサポートページのスクリーンショット

ASUS Prime A320I-KのCPU対応表では、BIOSバージョン2203からAthlon 3000Gに対応しているとされている。

5862にアップグレードした後も、やはり起動しなかった。そこでようやく、HDMIケーブルをサーバーのDisplayPort出力に挿していたことに気づいた。

TrueNASウェブダッシュボードのスクリーンショット

なぜDisplayPortの設計者は、HDMIケーブルを間違って挿せてしまうような形にしたのだろう?

このパーツを借りて回る大騒ぎは果たして必要だったのか?考えられる可能性は二つだ:

  • 私が愚かで、BIOSをアップグレードした後までHDMIケーブルがマザーボードのDisplayPortに挿さっていることに気づかなかった。
  • ASUSが愚かで、Athlon 3000GがBIOSバージョン2203で対応していると誤って記載していた。

普通なら自分のせいだと認めるところだが、ASUSのBIOSはあまりにも不安定だったので、ASUS側の問題だった可能性もある。いずれにせよ、借り物のパーツなしでNASを起動できてほっとした。

Athlon 3000Gを搭載して初めて起動した瞬間の動画のスクリーンショット

Athlon 3000Gを搭載してようやく起動画面が表示された瞬間

性能ベンチマーク

今回記事を書いていて驚いたのは、NASの性能を測る良いベンチマークツールが見つからなかったことだ。NAS本体でローカルのディスクI/Oを測るツールはあるが、実際の使い方を反映していない。私の使い方のほとんどはネットワーク経由なので、ローカルのディスクベンチマークではネットワークスタックのボトルネックを完全に見逃してしまう。

そこで自分で簡単なベンチマークを作った。ランダムなファイルデータを2セット生成し、robocopyを使ってメインデスクトップとNAS間の読み書き速度を計測した。決して厳密なテストではない。隔離されたネットワークでやったわけでも、デスクトップ上の他のプロセスを止めたわけでもない。比較のために、古いSynology DS412+でも同じテストを行った。

一つ目のファイルセットは1GBファイル20個で計20GiB、もう一つは1MBファイルで計3GiBだ。暗号化されたボリュームと暗号化されていないボリュームの両方で3回ずつ試行し、平均を取った。

性能は最大で111 MiB/s(931 Mbps)に張り付いたが、これは1Gbpsに不自然なほど近い。スイッチもデスクトップもNASもすべて1Gbpsのイーサネットポートなので、ボトルネックはネットワーク機器であることを示唆している。

読み込み性能

暗号化されていないボリュームでは、7年前の古いSynologyがピカピカの新しいTrueNAS自作機を上回ったのには驚いた。Synologyは小さなファイルの読み込みで31%、大きなファイルで10%速かった。

Synologyの栄光は長くは続かなかった。暗号化では完全に失速したのだ。Synologyの読み込み速度は暗号化ボリュームで67〜75%低下したが、TrueNASでは暗号化の影響はなかった。その結果、暗号化ボリュームではTrueNASが小さなファイルで2.3倍、大きなファイルで3倍もSynologyを上回った。私はほとんどのデータを暗号化ボリュームに置いているので、こちらのテストの方が普段の使い方に近い。

書き込み性能

古いSynologyは読み込みではTrueNASを上回ったが、書き込みではそうはならなかった。暗号化されていないボリュームでも、TrueNASは小さなファイルで77%速く、1GBファイルでは両者は同程度だった。

ここでも暗号化を持ち込むとSynologyの書き込み性能はがた落ちする。暗号化を有効にすると、TrueNASは小さなファイルで5.2倍、大きなファイルで3.2倍も速かった。

消費電力

Kill A Watt P4460メーターを使って、古いSynologyと新しいTrueNASサーバーの消費電力を計測した:

Synology DS412+2022年版NAS
アイドル時38 W60 W
負荷時43 W67 W

新しいサーバーは古いSynologyより60%も電力を消費し、少し驚いた。電力単価は約0.17ドル/kWhなので、サーバーのランニングコストは月約7.20ドルだ。

何が消費電力を押し上げているのかはよく分からないが、一つの可能性はPSUだ。Synologyはおそらく他のコンポーネントにぴったり合わせたPSUを積んでいるのに対し、私の500W PSUは必要容量のわずか15%しか使わない領域では効率が悪いのだろう。

最終的な感想

マザーボード

ASUS Prime A320I-Kで一番不満だったのは対応範囲の狭さだが、これは私の勘違いかもしれない。

それ以外では、BIOSがあまり好きではなかった。アップグレードユーティリティが完全に壊れていたのだ。最新BIOSをダウンロードしてインストールできるはずなのに、アップグレードを試すと最新ですと言われてしまう。結局、ファイルをダウンロードしてUSBメモリから手動でアップデートしなければならなかった。

ASUS EZ Flashが2203のBIOSが最新だと表示しているスクリーンショットASUSのウェブサイトでBIOSバージョン5862が公開されているスクリーンショット

ASUS EZ Flashユーティリティは、バージョン2203が最新だと主張した。ASUSのウェブサイトにはBIOSバージョン5862があったので、手動でアップデートしなければならなかった。

A320I-Kは最大32GBまでしかRAMをサポートしていないことも見落としていた。メモリを増設する必要が出るかは分からないが、もう少し余裕を持たせておけばよかった。

Realtekネットワークドライバの修正

マザーボードのイーサネットアダプタが、ネットワークに高負荷がかかると時々死んでしまうことに気づいたが、Redditの/u/trevaar氏が理由を親切に教えてくれた。どうやらA320I-KのRealtek NIC用FreeBSDドライバには安定性の問題があるらしいが、次の回避策で公式ドライバを読み込むことができる:

  1. TrueNASのウェブダッシュボードで、System > Tunablesに移動する
  2. 次の2つの設定を追加する:
    変数タイプ
    if_re_loadYESloader
    if_re_name/boot/modules/if_re.koloader

ケース

Fractal Design Node 304にはがっかりした。VMサーバーをFractal Design Meshify Cで組んだときは、ケースが次々と嬉しい工夫で驚かせてくれたのに、今回は逆だった。「なぜこのケースではこれが問題になるのか、今まで一度も問題になったことがないのに」と何度も思った。

外観はきれいだが、作業性は窮屈だった。ドキュメントはほとんどなく、ケースの機構の一部は直感的ではなかった。

初めてのmini-ITX自作で、ケース設計者は小型化のために犠牲を払わざるを得ないことも分かるので、厳しすぎる評価かもしれない。

CPU

Athlon 3000Gには満足しているが、結果的に私の用途には大幅にオーバースペックだった。TrueNASダッシュボードによると、過去1ヶ月間のCPU使用率は99%アイドル状態だった:

3月のCPU使用率のグラフ。ほとんどが10%未満を示す

TrueNASはCPU容量をほとんど使わない。

CPUについて最も重要だったのは、AMDのRadeonビデオ技術に対応しており、GPUが不要だったことだ。105ドルでとても良い買い物だった。

ディスク(データ用)

ディスクの評価はまだ時期尚早なので、5年後くらいにまた見てほしい。今のところは順調だ。

一番心配だったのは騒音だが、まったく聞こえない。唯一音が聞こえたのは性能ベンチマークを実行しているときだった。興味深いことに、最もうるさかったのは読み書き時ではなく、テストの合間にファイルを削除しているときだった。

電源ユニット(PSU)

システムがアイドル時60Wだと知って、もっと容量の小さい電源にすべきだったかと考えている。500Wは必要容量の2倍以上なので、300〜400WクラスのPSUならアイドル時の消費電力を下げられたかもしれない。

ディスク(OS用)

Kingston A400は問題なく動いている。TrueNASはOSディスクへの負荷が極めて小さいので、やることがほとんどない。90GBも空きがあるので、さらに小さいドライブでもよかったかもしれない。

TrueNASのレポートでは、OSディスクのアクティビティはほぼゼロだ。デフォルトの定期タスクであるエラー checkingのために毎週わずかな読み込みがある程度だ。

OSディスクのディスクI/Oのグラフ。アクティビティが最小限であることを示す

TrueNASは起動後、OSディスクにほとんど触れない。

TrueNAS

私はより成熟したFreeBSDベースのTrueNAS Core 13を使っている。もう一つの選択肢はDebianベースのTrueNAS Scaleで、こちらはハードウェアやソフトウェアの対応範囲が広い。

TrueNASを使い始める前から、SynologyのウェブUIを超えるのは難しいと分かっていた。ネットワーク機器のUIとしてこれまで見た中で最も洗練され、直感的だ。基礎となるファイルシステムの技術的な詳細をエンドユーザーに見せない、きれいなUIをよく作り込んでいる。

TrueNASにもハッカー的な魅力はあるが、Synologyと比べると使い勝手は大幅に劣る。コマンドライン以外を軽視する人が設計したかのようなインターフェースだ。

SynologyウェブダッシュボードのスクリーンショットTrueNASウェブダッシュボードのスクリーンショット

Synologyのウェブインターフェース(左)はTrueNAS(右)よりはるかに優れている。

TrueNASでは、新しいボリュームを作成してネットワークで共有するまでに何度も試行錯誤が必要だった。いくつもの分断されたメニューを飛び回らなければならず、次に何をすべきかのヒントもない。Synologyでは、必要な設定をすべて案内してくれるスムーズなUIフローがある。

TrueNASではサードパーティ製アプリのインストールもはるかに難しかった。私は映画やドラマのコレクションをストリーミングするためにPlex Media Serverを使っているが、PlexはTrueNASで事前設定されたプラグインになっている。最も簡単にインストールできるアプリの一つのはずなのに、ドキュメントを調べながら1時間も試行錯誤した。対してSynologyでは、ウィザードを2分ほどクリックするだけでPlexをインストールできる。

それでもTrueNASを使い続けるのは、プラットフォームのロックインを何よりも避けたいし、オープンソースソフトウェアを応援したいからだ。思想的にそこまでこだわらない友人にNASを勧めるなら、Synologyを勧めるだろう。

ZFS

ZFSはクールだが、RAID以外の機能のほとんどは今のところ必要性を感じていない。

スナップショットについて語る人をよく見かけるが、私は必要性を感じていない。すでにresticのバックアップでスナップショットを取っている。さほど便利ではないが、resticを2年間使ってきて、スナップショットからデータを復旧する必要があったのは一度だけだ。

面白い機能の一つに、暗号化されたスナップショットがある。データボリュームを復号せずにスナップショットを取れるのだ。暗号化したままにしておきたいが、頻繁にアクセスする必要はないデータがあるので、復号せずに定期的にバックアップできるのは便利だろう。

全体として

全体として、新しいNASには満足しており、この自作から多くのことを学んだ。これが初めてのNAS体験だったら、混乱して悲惨なことになっていただろうが、最初にSynologyを使ったことで技術への優しい入り口を得られた。補助輪が外れ、ZFSやTrueNASの高度な機能をいじる準備ができたと感じている。

動画

2.5年後のアップデート

2024年11月現在、このストレージサーバーを約2.5年間使ってきた。この間の所感を記す。

今でもNASには満足している

今でもNASには満足している。Synologyのユーザー体験は恋しいが、TrueNASの方がより自分でコントロールできている感覚がある。

Toshiba N300の1台がカチカチ音を立て始めた

NASを構築してから約18ヶ月後、Toshiba N300の1台がカチカチと音を立て始めた。SMARTテストでは問題は検出されなかったが、カチカチ音がするディスクを使い続けるリスクは冒したくなかった。

別の8TB Seagate IronWolfに交換して以来、問題は起きていない。

ラックマウント筐体に移行した

NASを構築してから1年後、サーバーラックを購入し、すべてのインフラをラックに移行し始めた。

NAS用にはSliger CX3701 10ベイサーバーシャーシを購入した。この筐体は気に入っており、マザーボード唯一のPCIスロットをSATAポート増設に使うことが確実ならおすすめできる。PCIスロットをグラフィックスや10Gネットワーキングに使う必要がある場合、mini-ITXマザーボードは通常SATAポートが4つしかないため、10ベイのうち4つしか使えない。

Sligerのサーバーシャーシに切り替える際、SligerがSFXおよびSFX-LフォームファクタのPSUしかサポートしないため、新しいPSUも必要になった。SilverStone 300W 80 Plus Bronze ST30SF-V2を選んだ。500Wから下げられてよかった。システムのピーク時消費電力は約150Wしかないからだ。

TrueNAS Scaleに切り替えた

TrueNAS Scaleの方がTrueNAS Coreより投資が進んでいるように見えたので、TrueNAS Scaleに切り替えた。主な違いは、CoreがFreeBSDベースなのに対し、ScaleはLinux Debianベースであることだ。

切り替えてから大きな違いは感じていないが、ScaleのWeb UIの方が少し優れている。そしていつもLinuxで作業しているので、FreeBSDよりもターミナルの操作に慣れている。

10Gbps光ファイバーNICを追加した

サーバーラックを組んだとき、10Gbpsポートを備えたスイッチを選んだので、NAS用に10Gbps NICを購入した。

残念ながら、そのNICは動作せず、他に2つ試したがどれも動作しなかった

結局、マザーボードの非互換性しか考えられないと思い、Gigabyte B550I Aorus Proにアップグレードしたところ(後述)、ようやくMellanox ConnectX-3 EN CX311A NICが動作した。

10Gbps NICでTrueNASを設定するのにも苦労した。常にマザーボードのオンボードLANが優先されてしまうのだ。NASの固定IPを10Gbps NICに移そうとすると、KubernetesがすでにそのIPアドレスを使用していると文句を言われた。固定IPの割り当てをアトミックに移行する方法が見つからなかったので、BIOSからマザーボードのLANを無効にしなければならなかった。それでもIPを移せなかったので、結局NAS用に新しい固定IPを選ぶことにした。

Gigabyte B550I Aorus Proマザーボードに切り替えた

上記のとおり、10Gbps NICとの互換性問題を克服するため、Gigabyte B550I Aorus Pro AXマザーボードにアップグレードした。

このマザーボードは問題ない。ASUS Prime A320I-Kより少し気に入っている:

  • 長所
    • 独自のI/Oシールドが付いているのが良い。
    • SATAポートが真上を向いているので、特別な直角SATAコネクタが不要だ。
    • RAMスロットが使いやすい。
    • CPUマウントが扱いやすい。
    • ファンピンがより便利な位置にある。
  • 短所
    • これまで見た中で最も分かりにくいM.2スロットで、説明書にも全く説明がない。YouTubeで動画を探さなければならなかった。
    • BIOS起動がASUS Prime A320I-Kよりかなり遅いように感じる。

後悔:mini-ITXは拡張性を制限する

一番の後悔は、ケースとマザーボードにmini-ITXフォームファクタを選んだことだ。

mini-ITXマザーボードはPCIスロットが1つしかない。ほとんどがSATAポート4つまでで、オンボードグラフィックスにも対応しつつそれ以上を備えたものは見たことがない。つまり、4台以上のディスクを追加するためにHBAを使いたい場合、PCIスロットの空きがなくなってしまう。

私の場合、10Gbpsネットワークカードを搭載したかったが、その結果、今は4台のディスクで足止めされている。筐体とマザーボードを丸ごと買い替えない限り増設できない。

もしやり直せるなら、3.5インチHDDを6〜8台収納できるラックマウント筐体と、複数のPCIスロットか、少なくとも8つのSATAポートを備えたマザーボードを買っていただろう。


Blogging for Devsコミュニティのメンバーの皆さん、この記事への初期フィードバックをありがとう。

この記事は「muse-spark-1.2-contributor」を使用して翻訳されました。

コメント