こんにちは高知工科大Advent Calendar 2015の5日目担当です.
今日もansible書こうかなと思ってましたが二日連続はちょっとモチベーションたもてなかったので違う内容を書いていきます.
最近ワタクシPCの容量不足問題に悩まされております.
$ df -lh
Filesystem Size Used Avail Capacity iused ifree %iused Mounted on
/dev/disk1 233Gi 225Gi 7.6Gi 97% 59001738 1979508 97% /
OSもまだ`El Capitan`じゃなく`Mavericks`です.
なのでそろそろ一度clean installしたいなと思ってました.
clean installする前にバックアップをとりたいわけですがHDDを所有しておりません.
さてどうやってtime machine環境を作りましょう?となりました.
そしたら昨日ひらめいてしましました.
HDDないなら`Amazon S3`に置けばいいじゃない!
というわけで今回はAWSで構築するtime machine環境でやっていきます.
以下は今回使うものです.
- EC2 t2.micro
- Amazon S3
- Netatalk
- めげない心
まずEC2に適当なインスタンスを立ち上げます.
まぁ一番下のプランで大丈夫でしょう.
OSはAmazon Linuxで行きます.
こんな感じでできました.
EC2にマウントするためのS3の設定を作っていきます.
s3fsを使うために必要なパッケージをインストールします.
$ sudo yum -y install git automake gcc-c++ fuse fuse-devel libcurl-devel libxml2-devel openssl-devel
インストールできたらs3fsのソースコードを取得します.
$ git clone https://github.com/s3fs-fuse/s3fs-fuse.git
さてビルドしてインストールしましょう.
cd s3fs-fuse/
./autogen.sh
./configure --prefix=/usr
make
sudo make install
マウントポイントを作ります.
$ sudo mkdir /data
ここまでできたら次はS3のほうを触ります.
バケットを生成するわけですがこの時世界中の人々と被らない名前を設定する必要があります.
タイムマシンぽい名前にしておくといいと思います.
そしてS3にアクセスするためのアクセスを作ります.
やりかたはここを見るといいです.
アクセスキーができたらpasswd-s3fs
に記述していきます.
配置場所は/etc/passwd-s3fs
です.
$ echo "<Access Key ID>:<Secret Access Key>" | sudo tee -a /etc/passwd-s3fs
$ sudo chmod 640 /etc/passwd-s3fs
さてここまで出来たらマウントしましょう.
sudo /usr/bin/s3fs <Bucket Name> /data -o rw,allow_other,uid=<UID>,gid=<GID>,default_acl=private
マウントできたら/data
まで行ってファイルを作りs3の画面から作ったファイルが見えれば成功しています.
ちなみにdf -lh
でも確認できます.
$ df -lh
Filesystem Size Used Avail Use% Mounted on
/dev/xvda1 7.8G 1.3G 6.5G 17% /
devtmpfs 489M 56K 489M 1% /dev
tmpfs 498M 0 498M 0% /dev/shm
s3fs 256T 0 256T 0% /data
マウントの確認ができたらNetatalkを導入していきます.
必要なものを諸々インストールします.
$ sudo yum install -y db4-devel libgcrypt libgcrypt-devel avahi nss-mdns avahi-tools avahi-devel libacl-devel quota-devel rpm-build
rpmをダウンロードします.
$ wget http://www003.upp.so-net.ne.jp/hat/files/netatalk-3.1.7-1.2.fc24.src.rpm
rpmコマンドを使いインストールする.
$ sudo rpm -ivh netatalk-3.1.7-1.2.fc24.src.rpm
rpm-buildでrpmを作成する.
$ cd ~/rpmbuild
$ rpmbuild -bb SPECS/netatalk.spec
なんか怒られた.
error: Failed build dependencies:
bison is needed by netatalk-5:3.1.7-1.2.amzn1.x86_64
cracklib-devel is needed by netatalk-5:3.1.7-1.2.amzn1.x86_64
dbus-devel is needed by netatalk-5:3.1.7-1.2.amzn1.x86_64
dbus-glib-devel is needed by netatalk-5:3.1.7-1.2.amzn1.x86_64
docbook-style-xsl is needed by netatalk-5:3.1.7-1.2.amzn1.x86_64
flex is needed by netatalk-5:3.1.7-1.2.amzn1.x86_64
mysql-devel is needed by netatalk-5:3.1.7-1.2.amzn1.x86_64
openldap-devel is needed by netatalk-5:3.1.7-1.2.amzn1.x86_64
pam-devel is needed by netatalk-5:3.1.7-1.2.amzn1.x86_64
systemtap-sdt-devel is needed by netatalk-5:3.1.7-1.2.amzn1.x86_64
tcp_wrappers-devel is needed by netatalk-5:3.1.7-1.2.amzn1.x86_64
libtdb-devel is needed by netatalk-5:3.1.7-1.2.amzn1.x86_64
パッケージ足りてないので全部入れる.
$ sudo yum -y install bison dbus-devel dbus-glib-devel cracklib-devel docbook-style-xsl flex mysql-devel openldap-devel pam-devel systemtap-sdt-devel tcp_wrappers-devel libtdb-devel
無事ビルドできるようになったのでもう一度.
$ rpmbuild -bb SPECS/netatalk.spec
あとは生成されたRPMS/x86_64/netatalk-3.1.7-1.2.amzn1.x86_64.rpm
をインストールする.
$ sudo rpm -ivh RPMS/x86_64/netatalk-3.1.7-1.2.amzn1.x86_64.rpm
dbus-pythonが無いと怒られるので入れる.
installが完了したら設定ファイルを書いていく.
/etc/netatalk/afp.conf
にTime Machineの設定を書く.
timemachine
のところは好きな名前で
[timemachine]
path = /data
time machine = yes
起動する.
$ sudo service netatalk start
ログインユーザーはunixユーザーになるので適宜作ること.
あとはEC2側のファイヤーウォールの設定のみです.
afpで使用するポートは548なので548を開きます.
mac側でサーバーをマウントするには
$ open afp://ip address
できます.
後はTime Machineの設定項目からターゲットを指定するだけですね.
これでHDDの問題はほぼ解決しましたS3の料金はS3からのダウンロードで発生するのでバックアップ用に使うにすごく良いストレージだと思います.
あとはじめVPN経由でやろうと思ったけど認証周りは暗号化されてるみたいね.
パケットの転送は知らないので調べてね.
ダメそうならVPN経由の方法も書きます.
認証は暗号化されてるけどデータはされてないみたい.
なのでVPNに載せましょう.
AFPとかの仕様