日記とか、工作記録とか

自分に書けることを何でも書いてゆきます。作った物、買ったもの、コンピュータ系の話題が多くなるかもしれません。

Raspberry pi 3 + USB HDD(6TB)でNASを作る

しばらく間が空いてしまいました。
最近は買い物する度にここでネタにしていますが、今回は自宅用のNASを作ろうという話です。

NASは別に自分で作らなくても、買うことができます。ただ結構お値段がするんですよね。RAIDを組むことができたりする利点はありますし機能に応じて値段も大きく変わるのですが、安くて数万円(HDDは別で)というところじゃないでしょうか。自宅用の軽い用途のものなので、本格的なストレージがほしいわけでもありませんし。Windows PCやRaspiやSurfaceなどいろいろ使うようになるにつれてファイルサーバの必要性が高まってきました。

で、今回もなるべく安く(できればHDDの値段に近いくらいの予算で)、低機能でもいいから…… ということで探しました。

f:id:WindVoice:20170115121419j:plain

もともと、NASの本体には組み込みのLinuxが入っていたりします。もちろんファイルサーバとしてふさわしいチューニングがされていたりもするのでしょうけど、Raspberry piがあるのですから自分で作ってもいいんじゃないかな。少しだけDIYしている感じですね。

買い物

今回の買い物のキモはこちら。SATAのHDDをUSB3.0に変換するケーブルです。Raspberry pi 3はUSB3.0ではありませんが、しかし互換性があるのであってもこまらないということでこちらにしました。電源アダプタがついているのでRaspberry piの動作が不安定になることもありません。

サンワサプライ SATA-USB3.0変換ケーブル 0.8m USB-CVIDE3

サンワサプライ SATA-USB3.0変換ケーブル 0.8m USB-CVIDE3

HDDとしては、Western DigitalNAS用HDD(Red)です。消費電力が少なめで常時起動に向いているタイプだそうです。容量は正直なところ6TBもいらないのですが、容量単価を計算するとこのあたりが魅力的なのかなということで選択しています。今回は26,000円ほど。

3.5インチのHDDを常時裸のままで放置しておくのもさすがにいかがなものかと思いましたので、ケースというかカバーも用意しました。シリコーンでできた柔らかいカバーです。なんと464円。買った時点では裸よりはマシというくらいの期待でした。放熱とかどうなのかなと思いましたが、今回使ってみて、書き込み続けてもさほど熱くならないのでWD Redとの組み合わせなら大丈夫そうです。

グリーンハウス 3.5インチHD用シリコンケース ホワイト GH-CA-HD35W

グリーンハウス 3.5インチHD用シリコンケース ホワイト GH-CA-HD35W

組み立て

説明無用かと思います。直感的につなぐだけ。アダプタをコンセントにつないだら、本体のスイッチをONにするとHDDの電源が入ります。
f:id:WindVoice:20170115152502j:plain

試行錯誤

NASに入れたいファイルは、WindowsのPCにあります。ざっと計ったら1.5TB。ネットで見かけた物とか動画なども捨てずにダウンロードしてため続けているのでファイルも小さいのや大きいのやさまざまです。ともかく、最初は単純にSambaext4で…… と思って作り始めました。

USB接続すると、普通に/dev/sdaとして認識しました。
この時点ではディスクラベルも記録されていないまっさらなHDDです。

pi@pi3:~$ sudo fdisk -l /dev/sda

Disk /dev/sda: 5.5 TiB, 6001175126016 bytes, 11721045168 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
pi@pi3:~$

fdiskは2TBまでのストレージしか扱えないそうで、最近はGPTというディスクラベルが使えるGNU Partedを使うんだそうです。ネットで探してパーティションを作ります。下の記録では無くなってしまっていますが、実際にはmklabelしてからmkpartでパーティションを作っています。

pi@pi3:~$ sudo parted /dev/sda
GNU Parted 3.2
Using /dev/sda
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) mkpart
Partition name?  []?
File system type?  [ext2]? ext4
Start? 0G
End? 6001G
(parted) p
Model: ASMT 2115 (scsi)
Disk /dev/sda: 6001GB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt
Disk Flags:

Number  Start   End     Size    File system  Name  Flags
 1      1049kB  6001GB  6001GB  ext4

(parted) q
Information: You may need to update /etc/fstab.

pi@pi3:~$

で、そのあとはext4でフォーマットです。さらに/smbディレクトリに自動でマウントされるように設定します。

pi@pi3:~$ sudo mkfs.ext4 /dev/sda
mke2fs 1.42.12 (29-Aug-2014)
Found a gpt partition table in /dev/sda
Proceed anyway? (y,n) y
Creating filesystem with 1465130646 4k blocks and 183144448 inodes
Filesystem UUID: 72fa8af4-ea42-4319-9987-3e0be3cf542d
Superblock backups stored on blocks:
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
        4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968,
        102400000, 214990848, 512000000, 550731776, 644972544

Allocating group tables: done
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done

pi@pi3:~$ sudo mount -t ext4 /dev/sda /smb/
pi@pi3:~$ df -h
ファイルシス   サイズ  使用  残り 使用% マウント位置
/dev/root         28G  5.9G   21G   23% /
devtmpfs         459M     0  459M    0% /dev
tmpfs            463M     0  463M    0% /dev/shm
tmpfs            463M  6.6M  457M    2% /run
tmpfs            5.0M  4.0K  5.0M    1% /run/lock
tmpfs            463M     0  463M    0% /sys/fs/cgroup
/dev/mmcblk0p6    63M   21M   43M   33% /boot
tmpfs             93M     0   93M    0% /run/user/1000
/dev/mmcblk0p5    30M  398K   28M    2% /media/pi/SETTINGS
/dev/sda         5.5T   58M  5.2T    1% /smb
pi@pi3:~$
pi@pi3:~$ sudo vi /etc/fstab
pi@pi3:~$ cat /etc/fstab
proc            /proc           proc    defaults          0       0
/dev/mmcblk0p6  /boot           vfat    defaults          0       2
/dev/mmcblk0p7  /               ext4    defaults,noatime  0       1
/dev/sda        /smb            ext4    defaults        0       0
# a swapfile is not a swap partition, no line here
#   use  dphys-swapfile swap[on|off]  for that
pi@pi3:~$ sudo chown pi /smb

NASにするためにSambaを設定するわけですが、いつもここで躓きます。何が正しい設定かわからん……

試行錯誤の結果、とりあえず/etc/samba/smb.confはこんな風にして動いています。PCのWindVoiceユーザが/smbディレクトリにアクセスするとき\\pi3\nasというネットワークフォルダ名に見えます。アクセスするときはRaspberry piの内部ではpiユーザの権限で読み書きされます。ですから/smbディレクトリはpiユーザの所有権にしておくことが必要です。

[nas]
   comment = NAS Directories
   path = /smb
   browseable = yes
   read only = no
   valid user = WindVoice
   force user = pi
   public = yes

結果

ここまでで一応使えるようになるのですが、心配はしていたのですがやっぱり遅いですね。

Wi-Fiネットワークのせいなのか、USB2.0のせいなのかはっきりしませんが、書き込み速度が1.5MB/sec程度になっています。先ほども書いたのですが、ファイルはなんだかんだで1.5TBもあり(それを何とかしろということだとは重々承知しているのですが)、1.5MB/secでコピーしていては12日もかかってしまいます。これで動画読み取りとかできるのでしょうか……

しかたないので、上記の方法はいったん諦め、Windows PCにUSB3.0接続してNTFSフォーマットしたあと、ファイルをコピーしています。USB3.0接続なら大きいファイルの場合で50MB/Secから最大70MB/Sec程度の速度がでているので、今日のうちにはコピーが終わりそうです。

最近はLinuxでもNTFSがスムーズに使えるので、コピーが終わってからRaspberry piに接続してNASにしようと思います。便利な使い方はもう少し追求しないといけませんね。