はじめに:Raspberry Piを“クラウド連携NAS”にする
Raspberry Piに外付けHDDを接続してNAS化する方法は有名ですが、
今回は クラウドストレージを直接マウント してみます。
利用するのは、S3互換ストレージを提供している
Wasabi Technologies のオブジェクトストレージ。
s3fsを使えば、S3バケットをLinuxのディレクトリとして扱えるため、
- ローカル保存感覚でクラウド利用
- 家庭内から共有フォルダとしてアクセス
- バックアップ用途にも最適
という構成が実現できます。
構成イメージ
Mac / Windows
│
│(SMB接続)
▼
Raspberry Pi
│
│(s3fs)
▼
Wasabi S3バケット
ステップ1:s3fsのインストール
まずはパッケージを更新し、s3fsをインストールします。
sudo apt update
sudo apt install s3fs -y
インストールが完了したら、バージョン確認を行います。
s3fs --version
以下のようにバージョン情報が表示されればインストール成功です。
Amazon Simple Storage Service File System V1.95 with GnuTLS(gcrypt)
Copyright (C) 2010 Randy Rizun <rrizun@gmail.com>
License GPL2: GNU GPL version 2 <https://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
ステップ2:Wasabiの環境を準備
Wasabi管理画面で以下を取得します。
- バケット
- ポリシー
- ユーザー
- Access Key
- Secret Key
- リージョン(例:ap-northeast-1)
ステップ3:認証情報の設定
echo 【ACCESS_KEY】:【SECRET_KEY】 > ~/.passwd-s3fs
chmod 600 ~/.passwd-s3fs
⚠ 権限は必ず600にしてください。
ステップ4:マウントポイント作成
sudo mkdir /data
sudo chown pi:pi /data
sudo chmod 755 /data
ステップ5:手動マウント
Wasabi東京リージョンの場合:
s3fs 【バケット名】 /data \
-o passwd_file=/home/pi/.passwd-s3fs \
-o url=https://s3.ap-northeast-1.wasabisys.com \
-o use_path_request_style \
-o uid=1000,gid=1000,umask=0022
リージョンのURLについてはこちらを確認してください。
マウント確認:
df -h
Filesystem Size Used Avail Use% Mounted on
・・・
s3fs 64P 0 64P 0% /data
ステップ6:自動マウント設定(/etc/fstab)
sudo nano /etc/fstab
末尾に追加:
proc /proc proc defaults 0 0
PARTUUID=5f248212-01 /boot/firmware vfat defaults 0 2
PARTUUID=5f248212-02 / ext4 defaults,noatime 0 1
s3fs#【バケット名】 /data fuse _netdev,allow_other,use_path_request_style,url=https://s3.ap-northeast-1.wasabisys.com,passwd_file=/home/pi/.passwd-s3fs,uid=1000,gid=1000,umask=0022 0 0
反映:
sudo systemctl daemon-reload
sudo mount -a
ステップ7:Sambaで共有フォルダ化
家庭内LANからアクセスできるようにします。
Sambaインストール
sudo apt install samba -y
設定ファイル編集
sudo nano /etc/samba/smb.conf
最下部に追加:
[data]
path = /data
browseable = yes
read only = no
guest ok = no
create mask = 0775
directory mask = 0775
Sambaユーザー追加
sudo smbpasswd -a pi
再起動:
sudo systemctl restart smbd
ステップ8:Macからアクセス
Finder → 「移動」→「サーバへ接続」
smb://RaspberryPiのIPアドレス
RaspberryPiはmDNSがデフォルト有効になっているため、【ホスト名】.localで同じネットワーク内であれば接続が可能になります。 これで /data にアクセス可能になります。
運用のポイント
- s3fsはFUSEベースのため、大量小ファイルは遅くなることがある
- キャッシュオプション追加で改善可能
- 定期的に再マウントすると安定
補足:.DS_Store ファイルについて
macOSでは、Finderがフォルダの表示設定(アイコン表示・ウィンドウサイズなど)を保存するために
.DS_Store という隠しファイルを自動生成します。
通常はローカル環境では問題ありませんが、s3fs経由でWasabiなどのオブジェクトストレージへ保存すると、不要なメタファイルまでクラウド上に保存されてしまいます。
回避方法(Mac側で無効化)
ネットワークドライブ上で .DS_Store を作成しない設定が可能です。
defaults write com.apple.desktopservices DSDontWriteNetworkStores -bool true
killall Finder
これで ネットワークドライブ上では .DS_Store が作られなくなります。
※ ローカルディスクには影響なし
元に戻す場合:
defaults delete com.apple.desktopservices DSDontWriteNetworkStores
killall Finder
回避方法(定期削除(サーバー側))
Raspberry Pi 側で削除:
find /data -name ".DS_Store" -delete
find /data -name "._*" -delete
トラブルシューティング
1GBのファイルをアップロードするとエラーになります。 おそらくRaspberryPIの限界になるかと思いますが、以下の設定を変更することでマルチアップロードすることができます。
sudo nano /etc/fstab
proc /proc proc defaults 0 0
PARTUUID=5f248212-01 /boot/firmware vfat defaults 0 2
PARTUUID=5f248212-02 / ext4 defaults,noatime 0 1
s3fs#【バケット名】 /data fuse _netdev,allow_other,use_path_request_style,url=https://s3.ap-northeast-1.wasabisys.com,passwd_file=/home/pi/.passwd-s3fs,uid=1000,gid=1000,umask=0022,multipart_size=64,use_cache=/tmp,parallel_count=2 0 0
変更したら以下のコマンドを順番に実行してください。
sudo fusermount -uz /data
sudo systemctl daemon-reload
sudo mount -a
まとめ:Raspberry Piが“クラウドNAS”になる
今回の構成で、
- ローカル共有フォルダのように使える
- 実体はクラウド保存
- ハードディスク障害リスクなし
という環境が実現できます。
外付けHDD不要で、 クラウド×自宅サーバーのハイブリッド構成が完成です。