- 古いOpenWRTルーター型ネットワークドライブを SBC+HDD構成 に置き換え、samba、git、rsyncd、dnf repoを維持しつつボトルネックを減らそうとした実験
- Libre Computer AML-S805X-ACは、20ユーロのボードで4コアARM Cortex-A53、1GB RAM、USBブート、Debian対応を提供するが、LANは100Mb、2つのUSB-AはUSB 2.0にとどまる
- HDDを除いた総費用は約 43ユーロ と低いが、HDDエンクロージャーと電源、micro-USBケーブル、オプションのTTL-to-USBドングルまで必要
- 公式のDebian 12ベースのイメージは、MBR内のEFIパーティションとbtrfsルートパーティションを使い、初回起動時の自動リサイズはUSBドングルでは 不安定で遅く 動作する
- JMicron JMS578 HDDエンクロージャーでUASエラーを回避して遅延はなくせたが、ext4基準で約 23.95MB/s 程度のため、省電力のような強い理由がなければ勧めにくい
OpenWRTルーターからSBC NASへ置き換え
- 既存機器はHDDを接続した古いルーターで、OpenWRTを入れたあと、ルーターではなく ネットワークドライブ として使っていた
- 新しい機器は、samba、git、rsyncd、dnf repoをそのまま維持しながら、より高速に動作する必要があった
- 既存ルーターはCPUが非力で、SSH越しの
rsync が厳しかった
- RAMが不足しており、15MBを超えるバイナリを含む
git push コミットで詰まっていた
- 候補はLibre Computerの AML-S805X-AC ボードだった
- LANポートはあるが 100Mb までしか対応しない
- 2つのUSB-Aポートは USB 2.0 のみ対応
- 4コアARM Cortex-A53、1GB RAM、USBブート、最新Debian対応
- 特別な調達難なしに購入可能
低いネットワーク仕様と実際の用途
- 100Mbネットワークは現在の基準では低い仕様だが、主な用途は約 20万個の小さなファイル があるディレクトリのコピーを維持することだった
- SBCがUSB 3.0に対応していたとしても、1Gbネットワークで同期速度が大きく上がることは難しかっただろうと見ている
- ボードだけではNAS構成は完結せず、追加部品が必要だった
- ボードのUSB-Aポートは各ポート最大 900mA を供給する
- 外部電源付きのHDDエンクロージャーが必要だった
- 最低3Aの電源と、3Aを扱えるmicro-USBケーブルが必要だった
43ユーロの構成と物理的な組み立て
- HDDを除いた総費用は 43ユーロ だった
- SBC: 20ユーロ
- HDDエンクロージャー: 12ユーロ
- 3A電源: 5ユーロ
- micro-USBケーブル: 3ユーロ
- ボルト4本とナット12個: 0ユーロ
- TTL-to-USBドングル: 3ユーロ、ボードにHDMI出力があるためオプション
- HDDは費用に含めず、余っているHDDがある前提で計算した
- HDDエンクロージャーは2.5インチ用の小さなプラスチックケースだと思って買ったが、実際には 3.5インチ用の箱 だった
- ケース内のスペースの都合で、SBCもHDDエンクロージャーの中に一緒に入れることにした
ブートとDebianイメージの粗い部分
- ボードのGPIOにTTL-to-USBドングルを接続し、
screen で接続した
$ sudo screen /dev/ttyUSB0 115200
- 初期出力にはLibre Computer AML-S805X-AC、Amlogic Meson GXL、
DRAM: 512 MiB (effective 1 GiB) が表示された
- その後、Debian 12イメージをフラッシュドライブに
dd で書き込むと、free(1) は1GBを認識した
- Libre Computer公式OSイメージはstock Debianベース
- ディスクイメージは2.25GiB
- MBRレイアウト内にEFIパーティションがある
- 2番目のパーティションは btrfs で、初回起動時に残りの領域を埋めるよう自動リサイズされる
- USBドングルでの自動リサイズは安定していなかった
- 使用可能なUSBドングル3つのうち1つはリサイズ中に永続的に停止した
- 別の1つは処理を終えたが、その後非常に遅くなった
- OSイメージ作成に使われるリポジトリが公開されていない点も問題として残る
- 関連説明では、distribution builderは顧客IPと統合を含むproprietary commercial offeringであるため公開できない、という内容になっている
- 標準ディストリビューションからいくつかの設定以外は変更していないため、イメージを分析するにはbootstrap後にdiffを見るように、という助言も含まれている
HDDエンクロージャーのエラーと最終性能
- HDDエンクロージャーをボードに接続したあとの処理はUSBドングルよりはるかに速かったが、それでも任意の地点で予期しない遅延があった
- ログイン直後、カーネルで
uas_eh_abort_handler エラーが発生した
lsusb の結果、エンクロージャー内部は JMicron JMS578 SATA 6Gb/s デバイスだった
Bus 001 Device 002: ID 152d:0578 JMicron Technology Corp. / JMicron USA Technology Corp. JMS578 SATA 6Gb/s
- 解決策は、カーネルコマンドラインに
usb-storage.quirks=152d:0578:u を追加して UASを無効にすること だった
- この対応後、遅延は消えた
- ベンチマーク数値は印象的ではなかった
- USB 2.0接続で
dd により524MBを書き込み、sync まで含めた結果は real 0m21.876s だった
- ext4パーティション基準の計算値は 23.95MB/s
- 最終的に、この構成は勧めにくい
- SBCを選んだ理由の1つは消費電力の削減だった
- 同様の制約がないなら、扱いにくい低価格デバイスで苦労する理由はほとんどない
1件のコメント
Hacker News の意見
秘密のコツは古い Fujitsu デスクトップ/NUC PC。ドイツでは多くの企業が定期的に入れ替えるため、eBay の中古価格が安い。
消費電力が重要なら
"$model energy consumption white paper"で検索すると、アイドル時電力などかなり正確な資料が出てくる。例は https://sp.ts.fujitsu.com/dmsp/Publications/public/wp-energy...。ある NUC は、PDF では 9W とされていたが、Linux で SATA コントローラの省電力機能を有効にした後、アイドル時電力が5Wまで下がった。
任意のシングルボードコンピュータより実際の PC を使うほうが、接続性、拡張性、ソフトウェアサポートがはるかに優れている。多くのシングルボードコンピュータは発売当時の出来の悪いカーネルに縛られ、ベンダーに放置された Armbian フォークを古いカーネルと混ぜて、最新ディストリビューションのように見せかける必要がある。
不思議なことに、安いコンピューティング資源は断りにくい。
欠点は 2.5/3.5 インチディスクを複数台入れるスペースがないことだけだが、これも好みの問題に近い。
今リース終了で出ている Dell は、Intel 第8世代 CPU、TPM、USB-C といった現代的な機能も備えている。
Raspberry Pi 系の NAS 試作は、特に電源アダプタを複数使い、ケースを削るようなやり方だと疑問に感じる。どれも手間がかかりすぎて遅いのに、「そこまで安くもない」感じがする。
重要な個人データを USB ドライブに保存するのも、やや危険に思える。家を燃やすことはないだろうが、それでも気持ち悪い。
本当の利点は小さなフォームファクタと「低い」消費電力だが、全体で43ドルだとしても、数ドルを節約するために 100Mbit ネットワークを受け入れるのか、150ドル払って 2.5Gig を使うのか悩むことになる。
代替案は多く、Fujitsu Futro S920(中古75ドル未満、約10W)、FriendlyElec NanoPI R6C(150ドル未満、約2W、https://www.friendlyelec.com/index.php?route=product/product...)、FriendlyElec Nas Kit(150ドル未満、約5W、https://www.friendlyelec.com/index.php?route=product/product...)、Dell T20/T30(中古100ドル未満、約25W)、Fujitsu Celsius W570(中古100ドル未満、約15W)などがある。
個人用 NAS/ホームサーバーは Fujitsu D3417-B、Intel Xeon 1225v5、64GB ECC RAM、WD SN850x 2TB NVMe、Pico PSU 120 という構成で、より高価ではあるが安定して強力で、アイドル時電力は10W未満。
すべてが順調に動いているときは、誰もがストレージの専門家だ。何かが壊れると、RAID アレイにハードディスクをもう1台入れておけばよかった、バックアップ用 NAS をもう1台置いておけばよかった、データを送る外部サイトをもう1つ用意しておくべきだった、と感じるようになる。
今では安物には行かない。それでも魅力は理解できる。
ディスクがもっと必要なら買い足せばいいし、バックアップ用 NAS が必要ならもう1台買えばいい。オフサイトコピーが必要なら容量を買うか、外部設置用の NAS とディスクを買えばいい。
機器の価格帯がここで何かを変えるわけではない。
仕事の文書、会計記録、家族写真なら安全に保管したいはず。
だが NAS に 20TB の海賊版映画やテレビ番組しか入っていないなら、いちばん安いドライブを買って様子を見るほうがずっと気楽だ。
Freefilesync のようなツールを使えば簡単で速く、誤って削除したものも目で確認できる。
とても安価で、10年以上よく持ってくれた。ドライブ故障、ユーザーのミス、意図しないソフトウェアのバグ/エラーによるデータ損失も経験したが、問題なかった。
このようなNASを構成した場合、ファイルにはどうアクセスするのか気になる。NFSなのかSFTPなのか?
家の外からはどうアクセスするのかも気になる。常時接続しておくVPNなのか、NATホールパンチングをうまくやる方法があるのか?
Syncthingは、すべてのコンピュータがどんなネットワーク上にあっても同じファイルを同期できるという点では望んでいるものに近いが、常に全ファイルをコピーしようとする。望んでいるのは、ファイルはNASにだけ置き、どこからでもアクセスできることだ。
Nextcloudも望んでいるものに近いが、以前使ってみたときは不安定で信頼しにくそうに見え、不要な機能をあまりに多くやっているようだった。
リモートアクセスには、Tailscaleで公開したSSH bastionを使っている。VPNではあるがWireGuardベースなので、それほど気にはならない。ただしアップロードがギガビットなので、環境によって違うかもしれない。
NASには28TBの容量があり、バックアップ戦略はまだ検討中。今はDropboxと、失っても構わない雑多なファイルだけが入っている。
ほかのサービスとしてはDropboxをかなり使っているが、最近では2TBはそれほど大きくない。しかもファイル数が50万を超えていて、挙動が神経質になることもある。
これは個人の設定で、人によってかなり違うと思う。
自宅とオフィスに1台ずつ、計2台使っているが、唯一の不満は少し「バカよけ」が行き過ぎている点。それでもWebベースのGUIはすばらしい。
NATと動的IPを越えられる無料ソフトウェアもあり、ちゃんと動く(quickconnect.to)。主にSFTPとメディアサーバーとして使っている。
LANでは単にSMBを使っており、自分の用途には十分。
リモートでLinux ISOコレクションにアクセスするときはPlexを使っている。
以前はWebDAVやFTPも使っていたし、具体的な用途によって変わる。
家の外からはVPNが必須。最近はポートフォワーディングだけにしておくには危険すぎる。
usb-storage.quirks=152d:0578:uをカーネルコマンドラインに追加してUASを無効にしなければならない、という箇所で、自分ならそのままゴミ箱に放り込んで諦めていたと思う。こういう問題を最後までデバッグする忍耐力を、人々がどうやって持てるのか分からない。このプロジェクトの目的が安く単純に作ることだというのは分かるが、時間コストは高いし、まったく単純ではない。
このボードのイメージビルダーはかなり怪しく見える。
「ディストリビューションビルダーは多くの顧客IPと統合を含むため公開できない独占的な商用提供物」という説明は、サプライチェーン注入器のように感じる。
UEFIを搭載して一般的なイメージをそのまま使えるというのは大きな利点だが、標準イメージ、とくにファームウェアを独占的なプロセスにしているのは非常に大きな危険信号で、全体が疑わしく見えてくる。
ファームウェアが自由・オープンソースで、自由・オープンソースの入力だけから自分でビルドできるなら問題ないかもしれない。ただ、その議論を見る限りでは明確ではない。
UEFIのおかげで一般的なイメージをサポートできるのは大きな利点だが、それがデフォルトではないという事実が、会社の価値観と文化を疑わせる。
無知な質問かもしれないが、なぜNASサーバーをECCメモリなしで作るのか気になる。
エンタープライズサーバーでも、ECCが本当に必要かどうかは議論の余地がある。
かなり良い。該当するユースケースにはよく合っていそう。自分ならもう少し出してギガビットポートがあるものを選ぶと思う。
Jeff Geerlingの動画を見ると、こうした小型のシングルボードコンピュータでも、かなり性能の良いNASを構成できるように見える。
Pi 4やPi 5、RK3566またはRK3588を使ったRockchipボードなら、USBハードディスク/SSDを接続できるし、最近の多くはM.2ドライブやSATAハードディスク/SSDアダプタを追加できる。1Gbps、ときには2.5Gbpsでも、RAIDを大きな問題なく動かせる。
OpenMediaVaultを使う人もいて、それも悪くない。自分のNAS群は、素のDebian上にAnsible + ZFSで構成しており、自分にはその方式のほうが管理しやすい: https://github.com/geerlingguy/arm-nas
Raspberry Piにしないなら、RadxaかLibre Computerを選ぶと思う。どちらも最近のボード向けイメージは悪くないが、HDMI出力の問題はほぼ必ず経験するので、SSHやシリアルコンソールで設定する準備が必要。
このスレッドの他の内容と同じく、中古市場に出回るリファービッシュ品の SFF オフィス向け PC のコストパフォーマンスは本当に大きい
以前、HP Ultradesk 系を非常に安く買ったことがあるが、届いてみると中古ではなく余剰在庫で新品であり、小売価格の 20% 程度だった。とても静かで電力効率も優れている
CPU は最上位ではないが、第10世代や第11世代なので、メディアサーバー用のハードウェアエンコードには完璧
RAID と複数のハードディスク向けのハードウェアがすべて揃っているわけではないが、NVMe ブートディスク 1 台と 16TB ハードディスク 1 台があれば自分の用途には十分。メディアなので失っても気にしない
こうしたボックスは安いので、1つの「デプロイ」の中に、それぞれ別の役割を担う複数台を置ける。一時期は NAS 用、メディアサーバー用、CCTV IP カメラ用、homeassistant 用のボックスをそれぞれ置いて、どれもうまく動いていた
幸い、複数の機器を一緒にオーケストレーションする Kubernetes のようなものを試すほどマゾヒストではなかった
これは当然、ホームラボ/個人用途が前提。より本格的な用途にはおすすめしない。ただ、こうしたマシンは普通によく動くし、標準的な x86 PC なので、より特殊なプラットフォームで遭遇するハードウェア設定や互換性の問題をかなり取り除いてくれる
Libre Computer と名乗りながら、ユーザーが自分のイメージを作れるツールを公開していないというのは皮肉だ