はじめに
きっかけは些細なことで。
自宅の模様替えをしていたんですが、ふと今使っている古いReady NASが目に入りましてね。
長らく自宅用NASとして活躍してくれたんですが、ちょっと大きいなぁと。
で、これの代わりにNUCを使ってNASの構築を試してみたんですが、どうも電源周りに問題があるらしくて安定稼働しなくて。
どうしようかなぁと思っていたら、LinuxシングルボードでNASを構築した事例がいくつか聞こえてきたので、せっかくだから遊びがてら組んでみようかな、と思った次第です。
ボード選び
いくつか選択肢があって。俎上に挙げたのはこの辺です。
Linuxボード | URL |
---|---|
Raspberry Pi 3 B+ | https://www.raspberrypi.org/products/raspberry-pi-3-model-b-plus/ |
RockPro64 | https://www.pine64.org/rockpro64/ |
NanoPi M4 | https://www.friendlyarm.com/index.php?route=product/product&product_id=234 |
Raspberry Pi
Raspberry Piは手軽だけあって、NASを作っている人も多かったのですが、USB 2.0というボトルネックがあるんですよね。
- Gigabit Ethernetの最大速度がUSB 2.0に制約される
- ストレージ接続先もUSBしかないので、同様にUSB2.0に制約される
RockPro64
他の事例を探していて見つけたのがRock64で、Raspberry Piに次いで事例が多かったんですが、さらに強力なRockPro64が出ているという話を聞いて。
このボード、Rockchip RK3399という特徴的なSoCを積んでいます。Raspberry Pi 3B+が搭載しているBCM2837よりも格段に速く、かつPCIeをインタフェースとして持っています。しかもGigabit Ether付きなので、これも悪い選択肢ではありません。
Nano Pi M4
RK3399のボードが何枚か出ていたので探していたら見つけたのが『NanoPi M4』でした。
私はこのボードを選択することになったのですが、決め手は以下でした。
1. Raspberry Piと同一サイズ。
RockPro64はRaspberry Piの2倍ぐらい大きいんですが、Nano Pi M4はRaspberry Piと同一サイズです。
(ただしPCIe用のPINが追加されているので、Raspberry Piのケースは使えない)
2. SATA I/Fを追加できる。
今回のストレージはHDDなので、USB 3.0でつないでも十分な速度とは思うのですが、最近発売されたこんなHATを見つけてしまったのです。
4x SATA HAT for NanoPi M4
https://www.friendlyarm.com/index.php?route=product/product&product_id=254
RK3399のPCIeをSATAに展開することができるHATが出ていまして。
これを見て『楽しそうだなぁ』と思ってしまったのです。
購入
購入自体はFriendly Elecのサイト(先ほど記述したURL)から行うことができます。
ここから先は英語必須なので頑張りましょう。
Raspberry Piと違って、機器構成についてもいろいろ気を付ける必要があります。私は以下のオプションを付けて購入しました。
選択したオプション | 備考 |
---|---|
DDR3 4GB RAM | RAM不足で困りたくなかったので奮発。 |
HeatSink | 底面に貼り付ける巨大なヒートシンクです。RK3399の発熱はかなりあるので必須。 |
32GB eMMC Module for NanoPi | eMMCスロットを持っているので、買っておくとSDカードなしに起動することが可能。 |
4x SATA HAT for NanoPi M4 | バラで買うこともできますが、一緒に購入可能です。 |
5V 4A Power Adapter | 後述の通りSATAを使う場合は不要だが、単体で使う場合のために。 |
High-Power Type-C to USB-A Male 2.0 Cable - 30cm | 同上。 |
その他はお好みで。ただし、電源には注意が必要です。
電源アダプタ
Nano Pi M4は通常USB TypeC(5V/3A)で動作しますが、SATA Hatを使う場合は別途ACアダプタが必要です。
最低でも12V/2A電源が必要ですが、SATA4つを3.5Inch HDDで動作させる場合は12V/5Aが必要となります。
コネクタにも注文がついていて、5.5 * 2.1 mmのロック機構が付いたアダプタであることを求められます。
一応PCのATX電源等でも代用はできるのですが、せっかく小さいNASを作るのであればアダプタにしたいところです。
細かいことはここに書いてあります。
私は手元に12V/2Aのアダプタがあったので、合わなければ別途調達するか、位の認識で注文しませんでしたが、2AでよければFriendly Elecでも売っているので、一緒に買うという手もあります。
発送
私はEMS(発送料が$40ほど割高)で頼んだのですが、DHL預かりになって、6/2注文->6/7着荷でした。
集荷が6/6だったので(注文から4営業日ぐらいで発送と書いてある)、発送だけ見るとだいぶ早く届きました。
ChinaPostを使うともう少し遅いかもしれません。
現物
盛りだくさんで届きました。
本体
eMMC
ヒートシンク
USBアダプタ
SATA Hat
組み立て
それほど迷わないとは思います。
ヒートシンクは、付属のパッドをNano Pi M4のRK3399に貼り付けてから固定しましょう。
あと、eMMCはHATを挿す前に固定しておきましょう。
おそらく技適を通っていないと思うので、日本国内で使う場合、Wifiは使わない方がよいでしょう。このためアンテナを付ける必要はそれほどありません。
OS
6/15時点でNano Pi M4がサポートしているOSは7種類ありますが、SATA Hatがサポートしているのは3種類だけです。
が、実はこれ以外のOSを使うことができるのを耳にしていまして。
実はArmbianでもSATA Hatを使うことができる、と聞いたので、なるべく汎用のディストリビューションを使いたく思っていた私はArmbianを使うことにしました。
Armbian?
Raspbianばかり使っていた私も詳しく知らなかったのですが。
Armbianは、主としてArmのSBC(シングルボードコンピュータ)向けに作られているDebian/UbuntuベースのLinuxディストリビューションのことです。NanoPi M4に限らず、多くのシングルボード上で動作します。
Armbianのインストール
SDカードへの書き込み
Armbianはボードごとにサポートステータスがあって、Nano Pi M4は『Suitable for testing (WIP)』なのだそうですが、構わずダウンロードします。
6/15時点ではBionicとStretchがあって、一応どちらでもSATA Hatは動きますが、今回はStretchを使うことにしました。
『Armbian Stretch』をダウンロードし、Balena Etcher等でSDカードに書き込みます。
SDカードからの起動
最終的にはSDカードからではなくeMMCから起動するので、SDカードはインストールメディア替わりなのですが、まずはSDカードを挿して電源を投入し、SDカードから起動します。
起動するとrootアカウントでのログインを求められます。Armbianのデフォルトに従ってrootログインします。
次に通常ユーザの登録を行うよう指示が出るので、ユーザ名、パスワードを設定。
ユーザ登録が完了すると、初めてログインできるようになります。
この辺はSDカードさえ挿せばウィンドウまで出るRaspbianとはまるで違うので気を付けましょう。
SDカードからの起動
ログインしたら、eMMCへArmbianをインストールするため、以下のコマンドを実行します。
$ sudo nand-sata-install
するとメニュー画面が出てきてインストール先を聞かれるので、"Boot from eMMC - System on eMMC"を選択します。
その後、大きく赤字でWARNINGが表示され、eMMCの内容が消去される旨の確認が出るので、"Yes"を選択。
後はしばらく待っていると、Power offするか確認のダイアログが出るので、いったんPower offした後ACアダプタを抜き、SDカードを抜いて再度電源を投入しましょう。
首尾よくいっていれば、SDカードを挿していない状態でもeMMCからArmbianが起動するはずです。
ファイル共有/DLNAサーバのインストール
ここまで来てしまえば、後は他のLinuxディストリビューションとさほど差はありません。
ネットワーク設定を行ったのち、各種サーバのインストールをしましょう。
OpenMediaVaultの罠
単にNASとして使うだけなら、OpenMediaValutを入れてしまう、という手もあるのですが。
私が使った際にはどうも安定して動作しなくてですね。アクセス中に突然NASサービスが止まってしまい、ファイルにアクセスできなくなる、という現象が多発しまして。
代わりにSambaでファイル共有したら、まったく止まらなくなったので、おそらくOpenMediaVaultが悪さしていたのだと思っています。
今は治っているかもしれませんので試すのも一興ですが、私はSambaでファイル共有しています。
(2019/9/18)
OpenMediaVaultが動いたという報告を受けました。
@dimeiza just read your blog post on NanoPi M4 - I have a similar setup but OMV is working for me. Thanks for sharing!
— ImpatientMaker (@ImpatientMaker) September 17, 2019
今からこのNASを作るなら試してみてもいいかもしれません。
Sambaのインストール
これは特段代わり映えしないので、ここでは紹介しません。
事例はたくさんあるかと思いますので探してみてください。
DLNAサーバのインストール
シングルボードNASのパワーだと、基本的にはminidlna(Readymedia)を使う所ですが。
トランスコード機能がなかったりとか、多少不便なところがあって、どうしようかと考えていたら、ServiioというDLNAサーバ実装があることを知りました。
今手元にあるのはRaspberry Pi 3B+の数倍の性能を持つNano Pi M4だし、メモリも4Gあるし、Java実装だけどここはパワーで押し切るか、とインストールを試みました。
Java8をインストールした後、Version 2.0をダウンロードしてインストールしたところ、特段問題なく動作しています。
RAIDの構成
ここまでの操作は、旧NASサーバからバックアップしたExt4の2.5Inch HDDをSATAでつないで構成していたのですが。
やはり2.5Inch HDDだと、
- 容量が少ない(今回は2T)
- 処理速度が低下する(最初は80MB/Sでコピーしていたが、しばらくすると10MB/Sぐらいに落ちる)
という現象が見られたのです。
旧NASサーバはRAID1構成していて、ReadyNASのFSはbtrfsだということが分かっているので、
ReadyNAS102のHDDをサルベージする
https://qiita.com/houmei/items/04edaf436e9bb2428fb9
NETGEAR Readynas 102 のディスクをPCでデータ吸出し
https://qiita.com/abeshi01/items/33588fd36b2f22f7cdf7
この辺の情報を元に、旧NASサーバのHDDをそのまま使えないかと考え始めました。
mdadmのインストールとRAIDの稼働
旧NASサーバでRAID1していたHDDを2台接続して起動後、
ソフトウェアRAIDをLinux上で使うために、mdadmをインストールします。
$ sudo apt install mdadm
mdadmからRAIDの構成を試みます。Ready NASのRAID0ディスクは3パーティションあって、3つ目に実データが入っています。
sudo mdadm —assemble /dev/md127 /dev/sda3 /dev/sdb3
構成できたらRAID0を起動。
sudo mdadm -R /dev/md127
mountとfstab
この状態で適当に作ったフォルダ(ここでは/nas)にマウントします。
sudo mount /dev/md127 /nas
とやってみたら、/nasから旧NASが保持していた実データにアクセスできたので、所有者を変更して、
sudo chown [ユーザ名]:[グループ名] /nas
SambaとServiioに共有してやったら、どちらもデータの共有ができるようになりました。
最後に、起動時に自動マウントするよう、/etc/fstabを変更。
/dev/md127 /nas btrfs defaults 0 0
btrfsでマウントするよう指示して再起動し、再起動後自動マウントと、NAS/DLNAからのアクセスを確認して終了です。
完成図
ちょっとケーブルが汚いですが。
旧NASと違ってファンレスで、体積も小さくなり、小回りが利くようになったので置き場所が自由になりました。
HDDからの熱についてはそれほどでもなかったので、後はケース等衝撃保護について考える予定です。
おわりに
楽しそう、という探求心に乗っかって作ってみたら、実用品を作りながら、いろいろと知らないことを学ぶことができ、大変良い経験になりました。
若干のLinuxの知識と、Raspberry Piの一つ先へ進む勇気があれば、こうした強力なシングルボードを使ったNASに挑戦してみるのも、また一興かもしれません。