Building a Budget Homelab NAS Server (2022 Edition)

Michael Lynch

格安ホームラボ用NASサーバーを自作する(2022年版)

今年、初めて自宅用のストレージサーバーを自作することにしました。オープンソースソフトウェアを使った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のコレクションです。お気に入りのコンテンツを配信サービスの都合に左右されたくないので、今でも映画やドラマは物理ディスクで購入しています。新しいディスクを入手したらすぐにイメージをリッピングし、ストリーミング用の動画ファイルも作成します。元のISOとストリーミング用のMP4を合わせると、1枚で60GBを占めることもあります。

500枚収納のDVD・Blu-rayバインダー2冊の写真

今でも繰り返し観たい作品は、DVDやBlu-rayの物理ディスクで購入しています。

ホームラボとは

「ホームラボ(homelab)」は、ここ数年で広まってきた俗称です。

自宅の中に、通常はオフィスやデータセンターにあるようなIT機器やソフトウェアを試すための実験場を作ることを指します。仕事で必要な新しいスキルを練習する場にもなりますし、単に面白いテクノロジーで遊ぶ場にもなります。

なぜ自作NASを作るのか

ホームラボの世界に入ったばかりの方や、PCの自作経験がない方には、自作NASはおすすめしません

同等の機能を持ちつつ、より手軽に始められる市販品があります。

自作ホームラボNASを作る前は、4ベイのSynology DS412+を7年間使っていました。正直なところ、Synologyにはとても満足していました。これまでで最高の買い物の一つです。NASの世界への優しい入り口になってくれましたし、NASを試してみたい方にはまずここから始めることをおすすめします。

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

7年間活躍してくれた10TBのSynology DS412+です。

数か月前、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の主な特徴には次のようなものがあります。

  • 複数の物理ディスクを一つのファイルシステムにまとめられる
  • データ破損を自動で修復できる
  • ディスク上のデータの特定時点のスナップショットを作成できる(macOSの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は「プール」と呼ばれるディスクの集合からファイルシステムを作ります。プール内のディスク数が多いほど、効率よく容量を使えます。たとえば10TBドライブを2台ZFSに渡すと、使える容量は合計の半分だけです。一方、4TBドライブを5台使えば、使える容量は14TBになります。合計の物理容量は同じでも、小さいドライブ5台の方が使える容量が40%多くなります。

NASを自作する際は、少数の大容量ドライブを使うか、多数の小容量ドライブを使うかを決める必要があります。小さいドライブの方がTB単価は安い傾向にありますが、運用コストは高くなります。4TBドライブ2台は、8TBドライブ1台の2倍の電力を消費します。

私はサーバーの設置面積をできるだけ小さくしたかったので、少数で大容量のドライブを選びました。

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

ZFSにはraidz1、raidz2、raidz3という冗長性のオプションがあります。主な違いは耐障害性です。raidz1は1台の同時故障に耐えられます。raidz2は2台、raidz3は3台の同時故障に耐えられます。

耐障害性を高めるほど、使える容量は減ります。4TBのハードドライブ5台の場合、各モードでの使える容量は次のとおりです。

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

私はraidz1を選びました。ディスクが数台程度であれば、2台が同時に故障する確率はかなり低いと考えたからです。

ZFSはバックアップ戦略ではないことを忘れないでください。ZFSはディスク障害からは守ってくれますが、誤削除やマルウェア、盗難など、ZFSでは防げないデータ損失のリスクは数多くあります。私はresticを使って、重要なデータはすべて暗号化したクラウドバックアップに複製しています。

ZFSの価値は、1台のドライブが故障してもクラウドバックアップに頼らずに済む点にあります。もし2台が故障すればバックアップからの復旧が必要になります。手間はかかりますが、そのために使える容量の20%を犠牲にしてまでraidz2を選ぶ価値はないと判断しました。

物理ドライブの数が多いほど、障害への備えは厚くすべきです。もし20台のプールであれば、raidz2やraidz3を選んでいたでしょう。

同時故障を防ぐために

単純に考えると、2台のディスクが同時に故障する確率はごくわずかに思えます。Backblazeの統計によると、高品質なドライブの年間故障率は0.5〜4%です。年間4%のリスクは、1週間あたり0.08%の確率です。2台同時の故障は3万年に一度しか起きない計算なので、大丈夫そうに思えます。

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

さらに、ZFSプールの再構築は残りのすべてのディスクに普段以上の負荷をかけます。通常の使用ならあと数か月は持ったはずのディスクが、プール再構築時の追加負荷で故障することもあります。

こうしたリスクを踏まえ、同時故障のリスクを少しでも下げるためにできることをしました。メーカーの異なる2種類のディスクを選びました。同じ製造ロットに当たる確率を下げるため、購入先のベンダーも分けました。どれほど効果があるかはわかりませんが、コストもほとんど変わらなかったので、やらない理由はありませんでした。

異なるパッケージのSeagate IronWolfドライブを手に持った写真

同じモデルのディスクを異なるベンダーから購入し、同じ製造ロットに当たる確率を下げました。

パーツ選び

マザーボード

最初に決めたのはマザーボードのサイズです。Synology DS412+のコンパクトさが気に入っていたので、mini-ITXマザーボードで自作するのは良い機会だと思いました。

次の理由から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選びで重視したのは、A320マザーボードのHDMI出力を使えるよう、Radeonグラフィックスに対応していることでした。

AMD Athlon 3000Gの写真

AMD Athlon 3000Gは手頃な価格でグラフィックス機能を内蔵しています。

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

ケース

前回VMサーバーを自作した際はFractal Designのケースを使いました。私のお気に入りのケースだったので、今回もFractal Designを選びました。

コンパクトなmini-ITXケースであるFractal Design Node 304 Blackにしました。タワー型より立方体に近いデザインが気に入っています。ドライブベイが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と表記されていれば、従来型の垂直磁気記録方式なのでZFSでも問題ありません。

Toshiba N300Seagate IronWolfを選びました。TrueNASのフォーラムやRedditで評判が良かったからです。どちらも180〜190ドルで、容量に対する価格も手頃でした。

Toshiba N300Seagate IronWolf

Toshiba N300(左)とSeagate IronWolf(右)

ディスク(OS用)

Kingston A400

Kingston A400は120GBでわずか32ドルのM.2 SSDと、コストパフォーマンスに優れています。

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はセミモジュラー式の電源です。500Wあればこの構成には十分すぎる容量です。

L字SATAケーブル

L字SATAケーブルを手に持った写真

ケース内のスペースの都合上、L字型のSATAケーブルが必要でした

これまで買ったことがなかったのが、L字型のSATAケーブルでした。マザーボードと電源の間に標準的なSATAケーブルを挿すスペースがないことに気づくまで、必要だとは思っていませんでした。この薄型のL字ケーブルで問題を解決できました。

電源の横にギリギリ収まっているL字SATAケーブルの写真

PSUとマザーボードの間が非常に狭く、薄型のL字SATAケーブルが必要でした。

採用しなかったもの

価格や複雑さ、物理的なスペースの関係で、あえて採用しなかったパーツがいくつかあります。

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

物理的なスペースやマザーボードのポート数に余裕がなかったため、専用のグラフィックスカードは省きました。外部カードなしでも映像出力ができるよう、グラフィックス対応のマザーボードとCPUの組み合わせを選びました。

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

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

ZFSではHBAのファームウェアを書き換える必要があるという、手間がかかりそうで複雑な作業が必要(追記:どうやら書き換えが必要なのはRAIDタイプのHBAのみのようです)と聞いていました。ストレージを増やす必要が出るまでは見送ることにしました。ASUS A320I-KにはSATAポートが4つあり、当面のニーズには十分です。将来的なHBAのためにPCIスロットは空けておきました。

ECCメモリ

さまざまなTrueNAS構成を調べる中で、データ破損を防ぐにはECCメモリ(エラー訂正メモリ)が必須だという投稿をいくつか見かけました。最終的にはECCメモリは採用せず、通常のコンシューマー向けメモリを使うことにしました。

もちろん、メモリ上でデータが破損するのは避けたいですが、これまで30年間ECCなしのコンピューターを使ってきて、データ破損を意識したことは一度もありませんでした。複数ユーザーが一日中高負荷で使うサーバーを組むのであればECC対応にするでしょうが、家庭用途であれば通常のコンシューマー向けメモリで十分だと考えています。

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 Ultra Thin Lateral 90 Degree SATA Cables (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
メモリ32 GB4 GB4 GB
最大メモリ32 GB8 GB8 GB
CPUベンチマーク447930024588
価格$530.29$549.99$549

自作の総費用は市販品と同程度ですが、コストパフォーマンスは自作の方が優れています。メモリは8倍あり、クローズドなベンダー独自OSに縛られることもありません。

組み立て写真

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

すべてのパーツ、パッケージのまま

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

Fractal Designのmini-ITXケースへのマザーボードの取り付けは問題なくできました。

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

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

取り付けられた電源ユニットの写真

これまで自作してきた中で、初めて電源ユニットの背面がケースの外に露出しないシステムでした。代わりに、ケース内部の電源を外部の電源入力につなぐ短いNEMA延長ケーブルが備わっています。

電源取り付け前のSATAケーブルの写真電源の横にギリギリ収まっているSATAケーブルの写真

マザーボードのSATAポートと電源の間が非常に狭く、薄型のL字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バージョンは非対応? それとも私が愚かだった?

すべてのパーツを取り付け、電源を入れましたが、画面には何も映りませんでした。

まさか、マザーボードのオンボードビデオの要件を勘違いしたのか? いつもの診断を一通り試しました。メモリを挿し直し、CPUを挿し直し、ケーブルも確認しましたが、結果は同じでした。

慌てて検索してみると、ASUS Prime A320I-KはAthlon 3000Gを使う前にBIOSのアップデートが必要だという情報が見つかりました。パーツを選んでいたときにその注意書きを見かけた記憶がありましたが、軽く流していました。「BIOSアップデートならやったことがあるし、大したことないだろう」と思っていたのです。

CPUなしでどうやってBIOSをアップデートするのか、という点まで考えていませんでした。

幸い、2017年製ホームラボVMサーバーのRyzen 7 CPUが互換性がありました。そのサーバーからCPUとGPUを借りてきて、なんとか新しいNASサーバーを起動できました。

バージョン2203と表示されたASUS BIOSのスクリーンショット

古い2017年製ホームラボVMサーバーのパーツを使ってBIOSをアップデートできました。

不思議なことに、借りてきたパーツで起動できたにもかかわらず、マザーボードが報告するBIOSバージョンは2203で、ASUSによればこれはAMD Athlon 3000Gに対応しているはずのバージョンでした。それでも最新の5862にアップデートしました。

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

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

5862にアップデートしても、まだ起動しませんでした。そこでようやく、HDMIケーブルをサーバーのDisplayPort端子に挿していたことに気づきました。

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

なぜDisplayPortの設計者は、HDMIケーブルを間違えて挿せてしまうような形状にしたのでしょうか。

結局、この大がかりなパーツの借用は必要だったのでしょうか。考えられる可能性は2つです。

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

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

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

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

性能ベンチマーク

この記事を書いていて驚いたのは、NASの性能を測る良いベンチマークツールが見つからなかったことです。NAS本体上でローカルのディスクI/Oを測るツールはありますが、実際の使い方を反映しません。私の使い方のほとんどはネットワーク経由なので、ローカルベンチマークではネットワーク周りのボトルネックを捉えられないのです。

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

1つ目のファイルセットは1GBファイルを20個(計20GB)、もう1つは1MBファイルを3GB分です。暗号化ありと暗号化なしのそれぞれで3回ずつ計測し、平均を取りました。

性能は最大で111 MiB/s(931 Mbps)でした。これは1Gbpsに非常に近く、ボトルネックがネットワーク機器にあることを示しています。スイッチ、デスクトップ、NASのいずれも1GbpsのEthernetポートだからです。

読み込み性能

暗号化なしのボリュームでは、7年前の古いSynologyが新しいTrueNASを上回り、驚きました。Synologyは小さなファイルの読み込みで31%、大きなファイルで10%高速でした。

しかし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%も消費電力が多く、少し驚きました。電気代は1kWhあたり約0.17ドルなので、月あたり約7.20ドルのコストになります。

何が消費電力を押し上げているのか詳しくはわかりませんが、一つ考えられるのは電源ユニットです。Synologyはおそらく他のパーツにぴったり合った電源を搭載しているのに対し、私の500W電源は必要容量のわずか15%しか使わないため、効率が悪くなっている可能性があります。

まとめ

マザーボード

ASUS Prime A320I-Kに対する最大の不満は互換性の狭さでしたが、私の勘違いだった可能性もあります。

それ以外でも、BIOSにはあまり良い印象がありませんでした。アップデート機能は完全に壊れていました。最新バージョンを自動でダウンロードしてインストールできるはずなのに、試してみると最新だと表示されるのに実際は最新ではないのです。結局、ファイルをダウンロードしてUSBメモリから手動でアップデートする必要がありました。

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

ASUS EZ Flashユーティリティではバージョン2203が最新と表示されましたが、ASUSのウェブサイトではバージョン5862が公開されていたため、手動でアップデートする必要がありました。

また、A320I-Kの最大メモリが32GBであることも見落としていました。拡張が必要になるかはわかりませんが、もう少し余裕を持たせておけば良かったと思います。

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

マザーボードのEthernetアダプタが、ネットワークに高負荷がかかると時々停止することに気づきました。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クラスの電源にすればアイドル時の消費電力を抑えられたかもしれません。

ディスク(OS用)

Kingston A400は問題なく動作しています。TrueNASはOSディスクへの負荷が非常に小さいので、やることがほとんどありません。空き容量は90GBもあるので、さらに小さいドライブでも良かったかもしれません。

TrueNASのレポートを見ても、OSディスクへのアクセスはほぼゼロです。デフォルトの定期タスクである週1回のエラーチェックでわずかに読み込みが発生する程度です。

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

TrueNASは起動後、OSディスクにほとんどアクセスしません。

TrueNAS

私はより成熟したFreeBSDベースのTrueNAS Core 13を使っています。もう一つの選択肢であるTrueNAS ScaleはDebianベースで、ハードウェアやソフトウェアの互換性がより広くなっています。

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

TrueNASにもハッカー的な魅力はありますが、Synologyと比べると使い勝手は大きく劣ります。コマンドライン以外は軽視しているかのような設計に感じられます。

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

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

TrueNASでは、新しいボリュームを作成してネットワークで共有するまでに何度も試行錯誤が必要でした。いくつもの独立したメニューを行き来しなければならず、次に何をすべきかの手がかりもありません。Synologyでは、必要な設定をすべて案内してくれるスムーズなウィザードがあります。

サードパーティ製アプリのインストールもTrueNASでははるかに難しく感じました。私は映画やドラマのコレクションをストリーミングするためにPlex Media Serverを使っていますが、PlexはTrueNASのプラグインとして用意されているはずで、最も簡単にインストールできるアプリの一つのはずです。それでもドキュメントを探しながら1時間も試行錯誤しました。Synologyならウィザードを数回クリックして2分ほどで完了します。

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

ZFS

ZFSは素晴らしいですが、RAID以外の機能は今のところ必要性を感じていません。

スナップショットについて語る人をよく見かけますが、私は必要性を感じていません。すでにresticによるバックアップでスナップショットを取っています。決して使いやすいわけではありませんが、2年間使ってきてスナップショットからの復旧が必要になったのは一度だけです。

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

総評

全体として、新しいNASには満足しており、この自作から多くのことを学びました。もしこれが初めてのNAS体験だったら、混乱して嫌になっていたでしょう。しかし最初にSynologyを使ったことで、関係する技術について緩やかに学べました。補助輪が外れ、ZFSやTrueNASの高度な機能をいじれる準備ができたと感じています。

動画

2年半後の追記

2024年11月現在、このストレージサーバーを使い始めて約2年半が経ちました。この間の使用感を追記します。

今でもNASには満足

今でもNASには満足しています。Synologyの使い勝手は恋しいですが、TrueNASの方がより自分でコントロールできている感覚があります。

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

NASを組み立ててから約18か月後、Toshiba N300の1台がカチカチと音を立て始めました。SMARTテストでは異常は見つかりませんでしたが、そのまま使い続けるのは危険だと感じました。

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

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

NASを組み立ててから1年後、サーバーラックを購入し、すべてのインフラをラックへ移行し始めました。

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

Sliger筐体への移行に伴い、SFXおよびSFX-Lフォームファクタにしか対応していないため、新しい電源も必要になりました。SilverStone 300W 80 PLUS Bronze ST30SF-V2を選びました。システムの最大消費電力は約150Wなので、500Wから下げられて良かったです。

TrueNAS Scaleへ移行

TrueNAS Scaleの方が開発に力が入れられているように見えたので、TrueNAS Scaleに切り替えました。大きな違いは、CoreがFreeBSDベースなのに対し、ScaleはLinux Debianベースであることです。

切り替えてから大きな違いは感じていませんが、Scaleの方がウェブUIが少し良くなっています。また、普段はFreeBSDよりLinuxでの作業が多いため、ターミナル操作がより快適になりました。

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ポートが真上を向いているため、特殊なL字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インチドライブを6〜8台収納できるラックマウント筐体と、PCIスロットを複数備えるか、少なくともSATAポートを8つ備えたマザーボードを選ぶでしょう。


Blogging for Devsコミュニティのメンバーの皆様に、この記事の初期フィードバックをいただいたことに感謝します。

原文は Michael Lynch により に公開されました。

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