Elsaの技術日記(徒然なるままに)

主に自分で作ったアプリとかの報告・日記を記載

MENU

rspberry PiにHDD接続の上NAS化してみる

ブログ作成始めてから1年経過しかつもう一つのブログも画像データたくさん用いるので、
そろそろデータ保管用のNASサーバ的なものが欲しいな!!と思っておりました。

ちょうど、ラズパイもあるので、、、
どうせならサーバ構築してしまおう!!と思い実施しました。

今回はNASサーバの立て方についてまとめようと思います。



NASとは??

Network Attached Storageの略でネットワーク上で接続できるハードディスクのことです。
NASを用いるとこちらのような構成が可能になります。
要するに、ネットワーク経由で複数のPCとのデータの共有が可能になります。
f:id:Elsammit:20210214172725p:plain

■ラズパイへのNASサーバ構築

では、ラズパイへのNAS構築のための設定を進めていきます。

まずはこちらのコマンドにてsambaを入れます。

sudo apt-get install samba samba-common-bin

【sambaとは??】
Linux上でWindowsのネットワーク機能を実現するソフトウェアです。Sambaを導入すると、Windowsのファイルサーバーと同じ役割を果たせる他、実際のWindowsファイルサーバーをLinuxから利用することもできます。つまりWindowsファイルサーバーのクライアント機能も持っています。
参考:https://www.atmarkit.co.jp/ait/articles/1612/01/news183.html

次に共有するためのフォルダを作成します。
今回は/var配下にsambaというフォルダを作成します。

sudo mkdir /var/samba

そして、共有フォルダアクセス用のユーザ名・パスワードをセットしていきます。
piユーザでも共有フォルダにアクセスするためのユーザ名として利用することが出来ますが、、、
家族にroot権限を持つユーザ名・パスワードを渡すとちょっとセキュリティ的にどうかな?と思うので別途用意します。
piユーザでよければこちらの手順は割愛可能です。
今回ユーザ名はhogeとします。

sudo useradd hoge
sudo passwd hoge
sudo chown hoge:hoge /var/samba
sudo pdbedit -a hoge

次に共有フォルダの公開設定を行います。
念のため、デフォルト設定ファイルのバックアップを取っておき、

sudo cp /etc/samba/smb.conf /etc/samba/smb.conf_back

/etc/samba/smb.confを編集していきます。

sudo vim /etc/samba/smb.conf

を実行し、

[share]
   comment = Share
   browseable = yes
   path = /var/samba
   public = yes
   writable = yes
   read only = no
   valid users = hoge
   force user = hoge

をsmb.confの末尾に新規追加します。

そして、sambaを再起動します。

sudo systemctl restart smbd

これで/var/samba配下でファイル共有が行えるようになっているかと思います。
試しにwindowsエクスプローラーにて、
\\ラズパイIPアドレス\share
と入力してみてください。
/var/samba配下のフォルダ、ファイルが閲覧できるかと思います。
また、エクスプローラーにてファイルやフォルダの作成やコピーなども行えるかと思います。

■共有フォルダをHDDに変更

先ほどの手順だとラズパイのμSD内に共有フォルダが作成されたことになります。
これでもよいのですが、出来ればHDDのような容量の大きなストレージで共有したいですよね。

ということで、共有フォルダ先をHDDに変更していきます。

ラズパイにHDDを挿入すると/media配下のパスに自動でHDDがマウントされるかと思います。
、、、がこちらだと

/media/デバイスID名

がマウント先になります。
こちらのパスを先ほどの共有フォルダバス(/var/samba)と置き換えてしまえばよいのですが、
HDDが変わる度にsmb.confを書き換える必要が出るのですよね。。。

そんなに頻度が多いわけではないのですが、、、ちょっと面倒。
ということで、別の方法でHDDに設定することにしました!!

やることは単純!!
起動時に

/media/デバイスID名

でマウントされるストレージを/var/sambaにマウントし直すだけです!!

起動時にスクリプトを実行するためには、
/etc/rc.local
に実行したいスクリプトを作成すればよいです。

まずはmntHDD.shのような適当な名前のスクリプト名を作成し、
ファイルに

#!/bin/sh

umount /dev/sda1
mount -w /dev/sda1 /var/samba
chmod 777 /var/samba

を記載します。
そして、こちらのmntHDD.shを
/usr/local/bin
配下に格納。
そして、
/etc/rc.local
をこちらのように編集。

mntHDD.sh

exit 0

これで、

sudo reboot

のようにラズパイを再起動すると、
共有フォルダ先がHDDに変化します。

これで大容量のストレージにデータを入れ込むことが出来るようになりました!!

■最後に

色々なPCにバラバラに格納されたデータをこちらの共有フォルダに移していきたいと思います。
フォルダ毎にロック掛けたりしたいな🤔
確か、やり方あったはずだからちょっと調べて設定してみようと思います!!
こちらも分かり次第記事に書いていきたいと思います!!