Raspberry Piはとにかくガジェット心をくすぐるアイテムなのですが、実際のところ買ってから「何に使えば良いのだろう?」となるのがパターンです。もちろんただ「いじってみたい」というのも立派な動機ですが、どうせなら何かに役立てたいですよね。そんなRaspberry Piの定番の使い道としてNASがあります。今回はLinuxのファイル共有サーバーの定番Sambaのセットアップや外付けHDDのマウントの仕方と、消費電力やパフォーマンス的に実用に足るものなのかをご紹介します。
Raspberry Piの初期セットアップは下の記事を参考にしてください。
【最新版】この通りやれば出来る!Raspberry PiのOSインストールから初期セットアップ |
外付けHDDは下の記事で紹介しているものを使用しました。
信頼のWD製!USB3.0 外付けHDD「Elements Desktop WDBWLG0040HBK-JESN」レビュー |
外付けHDDのフォーマットはexFATで
2018/12/02 追記
ファイルが壊れることがあったのでフォーマットをNTFSに変更しました。頻度が極端に低いのでexFATが悪かったのかははっきりしませんが、気になる方は下の記事を参考にしてください。
Rapberry PiへNTFSの外付けHDDのマウント方法 |
Raspberry PiでNASを構築する場合は外付けHDDを使うことになりますが、まずRaspberry PiのUSBから供給できる電源には限りがありますので、外付けHDD自体に電源があるものが良いでしょう。もしポータブルHDDなどでUSBから電源供給を受けるタイプの場合はセルフパワーのUSBハブをかませる必要があります。セルフパワーというのはUSBハブ自体に電源を供給するACアダプタが付属しているもので、USBからの電源供給が弱くても電力消費の多いUSB機器を動作させることができるものです。初期のRaspberry PiはUSBからの電源供給が非常に弱くて無線マウスのドングルを挿しただけで電力不足になったりしていたので必須でした。私は下記の製品を使っています。
今回のRaspberry Pi 3 + ACアダプタ付きの外付けHDDの構成では必要ありません。
また、自動停止機能のある外付けHDDが良いです。一応Raspberry PiからHDDをスピンダウン(停止)させるコマンドはありますが、HDDによって動いたり動かなかったりしますのでHDD自体が自立的に自動停止するようになっていれば確実です。
外付けHDDのフォーマットはいくつか選択肢がありますが
1. WindowsでもMacでも直接USBに接続して使用できる
2. 2TB制限などがない
3. もちろんRaspbian(Linux)でアクセスできる
の条件を考慮してexFATにしました。大量のファイルをコピーしたい場合は直接WindowsやMacに繋いで転送しています。
Windowsの場合は普通にエクスプローラーで右クリックメニューの「フォーマット」でexFATを選択できます。一応クイックフォーマットのチェックは外しておきましょう。テラバイトクラスだと数時間かかりますが寝る前に実行する感じで。
Macの場合もディスクユーティリティから普通にexFATを選択できます。
Raspberry Piから中を見たときに分かりやすいようにフォルダやファイルを入れておきましょう。
これで外付けHDDの準備完了です。Raspberry PiのUSBポートに外付けHDDを接続してRaspberry Piの電源を入れましょう。
外付けHDDのマウント
LinuxにはCドライブとかDドライブとかいう概念はなく、HDDを追加したときはディレクトリ構造のどこかに繋げるようなことをします。これを「マウント」といいます。
まずはRaspberry PiでexFATを扱えるようにするためのドライバーをインストールします。ターミナルで次のコマンドを入力してください。
sudo apt-get install exfat-fuse exfat-utils
次に外付けHDDを一意に識別する為のUUIDを調べます。次のコマンドを入力してください。
sudo blkid
すると、下のスクリーンショットの赤枠のところにUUIDが表示されますので控えておきます。HDDのラベルがElements(フォーマットの時のスクリーンショットを参照)で、exfatであることも表示されています。OS上では「/dev/sda1」という名前で認識されています。これも控えておいてください。
設定ファイルを変更して起動時に自動的にマウントするように設定します。設定ファイル(/etc/fstab)をエディタで開きます。
sudo nano /etc/fstab
最終行に下を追加してください。
UUID=”C2C2-DC1A” /mnt/hdd/usbhdd exfat-fuse async,auto,dev,exec,gid=65534,rw,uid=65534,umask=007 0 0
UUIDでHDDを指定して/mnt/hdd/usbhddにマウントします。「usbhdd」は任意の名前で良いです。UUIDはもちろん自分で調べたUUIDに書き換えてください。
「ctrl+x」→「y」→「Enter」でセーブしてエディタを終了します。次のコマンドを入力してRaspberry Piを再起動します。
sudo reboot
再起動したら、次のコマンド入力してマウントされているかを確認します。
sudo df
/mnt/hdd/usbhddにマウントされているのが見て取れます。あらかじめ作っておいた「NAS」フォルダや、その中の「みえてるかい?.txt」が見えていますね。ちなみに「ls」というのはWindowsでいうところのdirコマンドです。
NAS以外にも他のフォルダが見えますが、「$RECYCLE.BIN」「System Volume Information」はWindowsが勝手に作る隠しフォルダです。Macに繋ぐとMacも勝手に隠しフォルダを作ります。鬱陶しい。「Temp」フォルダは他の目的で私が作ったフォルダですので無視してください。
これで無事マウント終了です。外付けHDDがRaspberry Piで使えるようになりました。
Sambaのセットアップ
ここまででRaspberry Piで外付けHDDを使えるようになりました。今度はこの外付けHDDのフォルダ(今回は「NAS」)を公開して他のPC等からアクセスできるようにします。Windowsならばエクスプローラーで右クリックして共有すれば良いのですが、LinuxではSambaという仕組みを設定する必要があります。
まずは次のコマンドを入力してSambaをインストールします。
sudo apt-get install samba
途中なにか聞いてきたら「y」を入力してください。
次に設定ファイル「/etc/samba/smb.conf」に設定を追加します。以下のコマンドを入力してエディタで開いてください。
sudo nano /etc/samba/smb.conf
末尾に以下を追記します。
[NAS]
comment = USBHDD
path = /mnt/hdd/usbhdd/NAS
read only = no
guest ok = yes
force user = pi
unix extensions = no
「ctrl+x」→「y」→「Enter」でセーブしてエディタを終了します。
今回は外付けHDDのルートフォルダではなく、予め作っておいた「NAS」フォルダを公開します(ルートフォルダを公開しても構いません)
Raspberry Piを再起動します。次のコマンドを入力してください。
sudo reboot
Raspberry Piが再起動したら他のPCからアクセスしてみましょう。まずはWindowsです。エクスプローラーのアドレスに「\\raspberrypi」と入力してください。
「raspberrypi」はデフォルトのホスト名です。アクセスできない場合は「raspberrypi」の代わりにIPアドレスでも試してみてください。Enterキーを押すとNASフォルダが見えます。
Macの場合はFinderで「Command + k」を押してサーバーアドレスに「smb://raspberrypi」と入力して「接続」をクリックします。
ログインユーザーを聞いてきますので「ゲスト」を選択して「接続」をクリックします。
「NAS」フォルダを選択して「OK」をクリックします。
「NAS」フォルダがFinderに表示されます。
これで他のPCからアクセスできるNASが完成しました。
WindowsからNASに大きなファイルをコピーするとネットワークエラー(0x8007003B)になる時の対処
WindowsからNASに2TBとかの大きなファイルをコピーすると「予期しないエラーのため、ファイルをコピーできません。」「0x8007003B: 予期しないネットワークエラーが発生しました。」のようにエラーになる事があります。これはRaspberry PiやSamba特有の問題ではなく、単にWindowsのファイルアクセスのタイムアウトが45秒であることが原因です。市販のNASなどでも起こりえます。
対策としてはWindowsのレジストリを変更してタイムアウトを変更します。ファイル名を指定して実行に
regedit
と入力して起動したレジストリエディタの左側のツリーを
HKEY_LOCAL_MACHINE → SYSTEM → CurrentControlSet → Services → LanmanWorkstation → Parameters
と辿っていきます。「Parameters」に新しく「SessTimeout」を追加します。「Parameters」の上で右クリックメニューを表示させて「新規 → DWORD(32ビット)値」を選択して「SessTimeout」と入力してください。もし既に「SessTimeout」が存在する場合はこの操作は不要です。
追加した(予めあった)「SessTimeout」をダブルクリックして表示されたダイアログに以下のように入力してください。値はタイムアウト秒です。ここでは300秒(5分)にしています。
OKボタンでダイアログを閉じてレジストリエディタを終了させれば終了です。
パフォーマンスと消費電力
まずパフォーマンスですが、ファイルコピー時の速度の実測値は大体11MB/秒ちょいくらいです。一般的に表記されるbpsだと90Mbps程度です。少し遅いのですがこれはRaspberry Pi 3の内蔵有線LANが100Base-TXだからです。理論値で100Mbpsですのでほぼ規格上の性能は出し切っています。この時Raspberry PiのCPU使用率は全然余裕があります。ちなみに初期のRaspberry PiではSambaによるファイルアクセスでCPUパワーを使い切ってしまい5MB/秒程度しか速度が出ません。
11MB/秒での使い心地は、ちょっと遅いけど充分に使えるといったところです。ではUSB接続のギガビット対応のLANアダプタを使用すればどうか?といえば今度はRaspberry Pi 3のUSBはUSB2.0ですのでそこがボトルネックになります。実は既に下のLANアダプタによるギガビットLANの転送を試していますが、結論から言えば20MB/秒程度の速度です。
ギガビットLANの理論値から言えばかなり低い値ですが、それでもRaspberry Pi内蔵LANの100Base-TXの倍の速度になりますのでおすすめです。設定方法など詳しいことは下のレビューを。
Raspberry PiやLinuxのギガビットLANアダプタはコレ一択!PLANEX「USB-LAN1000R」レビュー |
消費電力はファイルコピー中で2.5W程度です。
アイドリングが2Wを切るくらいですのでNASとして24時間運用してもRaspberry Piの電気代は1ヶ月で30円少々といったところでしょう。今回使用した外付けHDDは省電力モード時が0W、HDDアクセス中の消費電力が7W程度でしたので毎日5時間使用(Raspberry PiもHDDも24時間電源は入れっぱなしで5時間HDDにアクセスするという意味)するとしてもRaspberry Piと合わせたNASシステム全体での1ヶ月の電気代は60円程度の計算です。素晴らしい省電力性能のNASができました。
Raspberry PiでNASは実用的か?
実は過去に初期のRaspberry PiでNASを作って「だめだこりゃ」と諦めていたのですよね。しかし今回Raspberry Pi 3で試したところ充分に使えるNASができました。速度面で少々物足りないのは確かですが、消費電力が少なく電気代を気にすることなく電源つけっぱなしにできるのは良いです。
ただし注意点はあります。まずOSのLinux(Raspbian)は初心者お断りのOSです。最近はUbuntuなど「初心者でも使えますよ~」みたいな雰囲気ですが普通に無理です。今回は一応「この通りやればできる」ように記事を書いていますが、なにかトラブった時には全くの素人では対処するのは困難です。またRaspberry Pi 3本体、ケース、電源、ギガビットLANアダプタなどを揃えると1万円弱になります。それならばもう少し足してSynologyなどのNASキットを購入した方が無難でしょう。
ネットを見てみると「Raspberry PiでNASは簡単にできて安くておすすめ!」みたいなノリですが、ただ単に「安くできるから」みたいな人にはとてもおすすめできません。ただ、こういったものはガジェット心に刺さりますし、いじっていて単純に楽しいです。「Raspberry Piでやってみたい!」という人は多少の苦労は折り込んで突撃しましょう!
ではまた!
Raspberry Pi 記事まとめ | |
ジャンプスターターにもなるモバイルバッテリーは半年後にエンジンを掛けることができるか? | |
気になるAmazon Echoの電気代は?実際に消費電力を計測してみました。 |