はじめに
チョット古いNAS(NetGear ReadyNas 4000 Ultra 4, RNDU4000-100JPS)を使っているのですが、ハードウェア保証がすでに期限切れてしまっているので、動いているうちにバックアップをしたい!でも、8TBのデータ量をどこに保存するかのも問題があり、HDD単発やRAID1環境にコピーするにも安全性に不安が残る。
どうせバックアップに手間がかかるなら、NASからAWS S3に移動してしまおう!
RaspberryPi経由ではなくNAS上で実行すればいいのでは?
ReadyNasはsshでも接続できるけど、今使っているNASとしての機能が使えなくなるのは困る。また、NAS用にカスタマイズされているので追加のパッケージを簡単に導入することができないため、Raspberry Piを踏み台にしてNAS → RaspberryPi → AWS S3にデータコピーしてしまおうというのが目的です。
※Raspberry Piでgoogysを使おうとしたところ、ARM環境ではコンパイルできず断念(2018/09/28時点)。
設定
Raspberry Pi インストール
- アップデート
$ sudo apt update
$ sudo apt upgrade
$ reboot
- s3fs関連のインストール
$ sudo apt install git fuse
$ sudo apt install s3fs
AWS設定
- S3バケットを作成 (リージョンをメモること)
- IAMユーザーの作成、作成したS3バケットへの権限設定
s3fs設定
AWSのユーザー・パスワードを保存
$ sudo echo AKIxxxxx:password > /etc/passwd-s3fs
$ chmod 640 /etc/passwd-s3fs
mount先 作成
sudo mkdir /mnt/s3.bucket
実行してみる
テスト
パーミッションのタグが設定されていないファイルは、piユーザーの権限で見れるようにする。
$ sudo s3fs s3bucketname /mnt/s3.bucket/ \
-o passwd_file=/etc/passwd-s3fs -o use_path_request_style \
-o rw,allow_other,use_cache=/tmp,uid=1000,gid=1000 \
-o endpoint=ap-northeast-1 -o url=http://s3.ap-northeast-1.amazonaws.com/ \
-o enable_content_md5 \
--debug -f
/mnt/s3.bucket/にファイルを作ったり消したりしてみる。そのとき、画面上に[CRT][ERR]などが表示されていないことを確認。
起動時にマウントされるように設定
/etc/fstab
に追加。
s3fs#s3bucketname /mnt/s3.bucket fuse _netdev,allow_other,uid=1000,gid=1000,passwd_file=/etc/passwd-s3fs,endpoint=ap-northeast-1,url=http://s3.ap-northeast-1.amazonaws.com/ 0 0
sudo mount -a
でfstabをテスト。df
でs3fs
が追加されていればOK。
ファイルコピー
古いNetgearのReadyNasにログインするとき、鍵認証でsshログオンしても、必ずパスワードを聞かれてしまうのでsshpass
などを使用してログイン時のパスワードを自動入力させる。そして、sshpass
を使うことでバックグラウンド実行可能。
あとは、rsyncでもscpでもお好みのコマンドでファイルを/mnt/s3.bucket/
にコピーしてください。
$ sshpass -p "netgear1" rsync -av rn4000:/c/document /mnt/s3.bucket/ > /home/pi
/rsync.log &
その他
パフォーマンス
Raspberry Pi 3Bで動かしてみましたがCPU使用率 2%程度なので、他のアプリと共存させても大丈夫そうです。
転送量
8TBをS3に転送するためにかかる時間を大まかに計算
eth0 / traffic statistics
rx | tx
--------------------------------------+------------------
bytes 3.13 GiB | 3.15 GiB
--------------------------------------+------------------
max 93.72 Mbit/s | 96.87 Mbit/s
average 15.82 Mbit/s | 15.89 Mbit/s
min 0 kbit/s | 0 kbit/s
--------------------------------------+------------------
packets 3301274 | 2928216
--------------------------------------+------------------
max 7998 p/s | 8378 p/s
average 1986 p/s | 1761 p/s
min 0 p/s | 0 p/s
--------------------------------------+------------------
time 27.70 minutes
- 約30分で3GBでした。10分あたり1GB。1分で100MB
- 1日=1440分、1440 * 100MB = 144GB/日
- 8TB = 8192GB. 8192GB / 144GB = 56.8日
プロバイダから警告が来ないことを祈りたい。