※サムネイル画像はChatGPTで生成されています。
Raspberry Pi 4のNAS化
私の家では複数のPCを運用しているのですが、共用のファイルサーバーがなかったので、データ転送にはクラウドのファイルサーバーを利用することが多かったです。
Google Driveを主に利用していましたが、複数ファイルをダウンロードすると.zip化されてしまったり、アップロードとダウンロードの速度が気になってきたので、家庭でのファイルサーバー構築に踏み切ることにしました。
ファイルサーバー自体はPCがあれば簡単にできますが、当方環境においては水温をラズパイのGPIO経由で収集してVercelのデータベースにアップロードするシステムが運用されており、ネットワーク上にファイルサーバーを構築する準備が整っていました。
OpenMediaVault→Samba
ネットで検索してみるとOpenMediaVaultの利用が一般的らしいですが、これはRaspberry Pi 4のLite版OSでの運用が前提となっています。
その為、今回はSambaの実装を行うことにしました。
Sambaはデスクトップ版でも利用可能なファイルサーバーなので、異なるプラットフォーム間で機能する為都合が良いです。
導入も割と簡単なので、大体30分程度で実装できました。
参考リンク
環境
- Raspberry Pi 4
- Revision : d03115
- Model : Raspberry Pi 4 Model B Rev 1.5
- 自生していたWestern Digital製のM.2 SSD
- UGREENのM.2 SSD用外付けUSBケース
全てありものなので、初期投資は0円。
嫁曰く、こんなものが家に転がっているのは「普通の家庭」ではないらしい。
設定手順
1. 前提条件
- OSのセットアップは既に済んでいるものとします。
- VNC Server等のリモートデスクトップ設定はここでは扱いません。
- 参考サイト↓
2. SSDのマウント状態確認
- ラズパイOS上で、ターミナルを開き、lsblkでボリュームのマウント状態を確認します。
lsblk
- USBでSSDを接続した状態で起動している場合は既にデスクトップ上にハードディスクのアイコンが表示されており、マウントされた状態になっています。
- lsblkで表示された/media/username/HOMEがSSDのディレクトリ名となっており、SSDをハード的に認識している名称がsda2となっています。
- mmcblk0はブートファイルが格納されているので、micro SDですね。
- 万が一マウントされていない場合は下記コマンドを実行します。
sudo mkdir -p /media/username/HOME
sudo mount /dev/sda2 /media/username/HOME
3. Sambaのインストール
- 下記コマンドをターミナルで実行してSambaをインストールします。
sudo apt update
sudo apt install samba samba-common-bin -y
- 共有するホームディレクトリを外部SSD上に作成します。
mkdir -p /media/username/HOME/nas_share
- ここでエラーになる場合、外部SSDに対してアクセス権限が付与されていない可能性がありますので、下記コマンドで権限を付与します。
ls -ld /media/username/HOME
sudo chmod 777 /media/username/HOME
4. Samba設定ファイルの更新
- /etc/sambaのディレクトリをファイルマネージャーで開き、smb.confファイルをテキストエディタで開きます。
- 一旦ファイルの内容を全て削除して、ファイルに下記を記入し、保存します。
[global]
workgroup = SHELLMAG
dos charset = CP932
unix charset = UTF8
[HOME]
path = /media/username/HOME
browseable = yes
writable = yes
guest ok = yes
create mask = 0777
directory mask = 0777
public = yes
5. Sambaユーザーの追加
- 下記コマンドを実行してユーザーを追加します。
sudo smbpasswd -a username
- ここはちょっとよく分からなかったのですが、Linuxのユーザーネーム(OSへのログインネーム)を登録した方が無難なようです。
- パスワードを要求してくるので好きなパスワードを設定してください。
- ここで入力した情報は、外部のPCからこのファイルサーバーにアクセスする際に使用します。
- 下記コマンドを実行してSambaを再起動します。
sudo systemctl restart smbd
- ラズパイ側の設定はこれで完了です。
6. Mac OSからのアクセス
- Finderを開きCommand + Kを入力して、サーバー接続画面を表示します。
- サインイン情報を求められるので、ラズパイのIPアドレスと、先ほど設定したSambaのユーザーネームとパスワードを入力します。
- ラズパイのディレクトリにアクセスできれば成功です。
- サーバーへ接続ウィンドウ左下の + ボタンでよく使うサーバーとして登録しておけます。
7. 不要かもしれない設定
- 立ち上げ後にファイルコピーできない不具合があって、色々設定をいじっていたのですが、直接的な原因はファイル名称に日本語が入っていることだったようです。
- また、外付けSSDに対して適切に権限が付与されていないとエラーの原因にもなるようです。下記のコマンドを参考にしてみてください。
sudo chmod 777 /media/username/HOME
- Macから接続する場合は下記リンクの設定も試してみてください。
- 外付けSSDが読み取り専用でマウントされていないかも確認してください。下記コマンドでマウント状態を書き換えることができます。
sudo umount /media/username/HOME
sudo mount -o rw /dev/sda2 /media/username/HOME
速度の検証
私の環境ではラズパイはWi-Fiで接続されているので、そこまでの速度は期待していないのですが、Google Driveよりは流石に早いのだろうと思い、検証してみました。
約2GBのファイルの転送時間は約3分と表示されています。う〜ん微妙。
爆速とはいかないですが、概ねOKとしましょう。