Nano Pi M4でファンレスシングルボードSATA NASを作る


# はじめに

　きっかけは些細なことで。

　自宅の模様替えをしていたんですが、ふと今使っている古いReady NASが目に入りましてね。

https://www.amazon.co.jp/dp/B00CHABQRW

　長らく自宅用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を作るのであればアダプタにしたいところです。

　細かいことはここに書いてあります。

https://www.friendlyarm.com/index.php?route=product/product&product_id=254

　私は手元に12V/2Aのアダプタがあったので、合わなければ別途調達するか、位の認識で注文しませんでしたが、2AでよければFriendly Elecでも売っているので、一緒に買うという手もあります。

https://www.friendlyarm.com/index.php?route=product/product&product_id=233

## 発送

　私はEMS(発送料が$40ほど割高)で頼んだのですが、DHL預かりになって、6/2注文->6/7着荷でした。

　集荷が6/6だったので(注文から4営業日ぐらいで発送と書いてある)、発送だけ見るとだいぶ早く届きました。

　ChinaPostを使うともう少し遅いかもしれません。

# 現物
![IMG_20190608_091617.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/54795/57aba5d8-1111-99d3-5a51-7cc791b31b49.jpeg)


盛りだくさんで届きました。

### 本体

![IMG_20190608_092643.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/54795/a2eafe6b-259d-f211-e86b-ea7bbeeffa8c.jpeg)

### eMMC

![IMG_20190608_091734.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/54795/19478cba-7608-0901-b5c9-271edaf319da.jpeg)

### ヒートシンク

![IMG_20190608_091742.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/54795/ecc6eb79-688f-28c4-c543-a7504589ea4c.jpeg)


### USBアダプタ

![IMG_20190608_092652.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/54795/10583fa6-c20a-8148-b68a-2f52843839e6.jpeg)


### SATA Hat

![IMG_20190608_092747.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/54795/a55f0b96-bcd4-4238-4d0a-110587ea34f4.jpeg)

## 組み立て

　それほど迷わないとは思います。

　ヒートシンクは、付属のパッドをNano Pi M4のRK3399に貼り付けてから固定しましょう。

　あと、eMMCはHATを挿す前に固定しておきましょう。

　おそらく技適を通っていないと思うので、日本国内で使う場合、Wifiは使わない方がよいでしょう。このためアンテナを付ける必要はそれほどありません。

# OS

　6/15時点でNano Pi M4がサポートしているOSは7種類ありますが、SATA Hatがサポートしているのは3種類だけです。

　が、実はこれ以外のOSを使うことができるのを耳にしていまして。

https://forum.armbian.com/topic/10011-nanopi-m4-sata-hat/

　実はArmbianでもSATA Hatを使うことができる、と聞いたので、なるべく汎用のディストリビューションを使いたく思っていた私はArmbianを使うことにしました。

## Armbian?

 Raspbianばかり使っていた私も詳しく知らなかったのですが。

https://www.armbian.com/

　Armbianは、主としてArmのSBC(シングルボードコンピュータ)向けに作られているDebian/UbuntuベースのLinuxディストリビューションのことです。NanoPi M4に限らず、多くのシングルボード上で動作します。

## Armbianのインストール

### SDカードへの書き込み

https://www.armbian.com/nanopi-m4/

　Armbianはボードごとにサポートステータスがあって、Nano Pi M4は『Suitable for testing (WIP)』なのだそうですが、構わずダウンロードします。

　6/15時点ではBionicとStretchがあって、一応どちらでもSATA Hatは動きますが、今回はStretchを使うことにしました。

　『Armbian Stretch』をダウンロードし、Balena Etcher等でSDカードに書き込みます。

https://www.balena.io/etcher/

### 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を入れてしまう、という手もあるのですが。

https://www.openmediavault.org/

　私が使った際にはどうも安定して動作しなくてですね。アクセス中に突然NASサービスが止まってしまい、ファイルにアクセスできなくなる、という現象が多発しまして。

　代わりにSambaでファイル共有したら、まったく止まらなくなったので、おそらくOpenMediaVaultが悪さしていたのだと思っています。

　今は治っているかもしれませんので試すのも一興ですが、私はSambaでファイル共有しています。

(2019/9/18)

　OpenMediaVaultが動いたという報告を受けました。

<blockquote class="twitter-tweet"><p lang="en" dir="ltr"><a href="https://twitter.com/dimeiza?ref_src=twsrc%5Etfw">@dimeiza</a> just read your blog post on NanoPi M4 - I have a similar setup but OMV is working for me. Thanks for sharing!</p>&mdash; ImpatientMaker (@ImpatientMaker) <a href="https://twitter.com/ImpatientMaker/status/1174095642391535617?ref_src=twsrc%5Etfw">September 17, 2019</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

　今からこのNASを作るなら試してみてもいいかもしれません。

## Sambaのインストール

　これは特段代わり映えしないので、ここでは紹介しません。

　事例はたくさんあるかと思いますので探してみてください。

## DLNAサーバのインストール

　シングルボードNASのパワーだと、基本的にはminidlna（Readymedia)を使う所ですが。

https://wiki.archlinux.jp/index.php/ReadyMedia

　トランスコード機能がなかったりとか、多少不便なところがあって、どうしようかと考えていたら、ServiioというDLNAサーバ実装があることを知りました。

https://qiita.com/kojiita/items/a17ad87579bf1d177a7c

　今手元にあるのはRaspberry Pi 3B+の数倍の性能を持つNano Pi M4だし、メモリも4Gあるし、Java実装だけどここはパワーで押し切るか、とインストールを試みました。

https://serviio.org/

　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台接続して起動後、

https://wiki.archlinux.jp/index.php/RAID

　ソフトウェア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からのアクセスを確認して終了です。

## 完成図

　ちょっとケーブルが汚いですが。

![IMG_20190615_205507.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/54795/b80bf882-6ad0-871d-94fa-433c5aaa0acc.jpeg)

![IMG_20190615_205131.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/54795/10589c31-201c-d0c8-599f-d82ce3c1088c.jpeg)

　旧NASと違ってファンレスで、体積も小さくなり、小回りが利くようになったので置き場所が自由になりました。

　HDDからの熱についてはそれほどでもなかったので、後はケース等衝撃保護について考える予定です。

# おわりに

　楽しそう、という探求心に乗っかって作ってみたら、実用品を作りながら、いろいろと知らないことを学ぶことができ、大変良い経験になりました。

　若干のLinuxの知識と、Raspberry Piの一つ先へ進む勇気があれば、こうした強力なシングルボードを使ったNASに挑戦してみるのも、また一興かもしれません。