Raspberry Piを使ってTime Capsuleもどきを自作してみる
前回、簡単なBTRFSを使ったRAID構築を紹介した。
せっかくBTRFSでストレージを作成したので、それを有効活用しない手はない。今回はBTRFSで作成したストレージプールを使って、macOSをバックアップするためのTime Capsuleもどきを自作してみた。
まず今回使用したデバイスは以下。
- Raspberry Pi
できれば最新版であるRaspberry Pi 3のほうがよい。前バージョンと比べてパワーアップしているので、RAID1の構築など少し早い。 - microSDカード
Raspberry Pi用のOS、Raspbianをインストールするためのもの。Raspberry Piに対応したカードが望ましい。 - 余っているHDD
できれば複数台あったほうが冗長性を高められる。BTRFSでフォーマットし、上記方法でRAID1を構築しよう。 - HDD接続機器
外付けでHDDを接続するためのデバイス。Raspberry PiへはUSB経由でつなぐので、USB接続に対応したもの。ここの製品などが参考になる。
Mac OS 拡張フォーマットである「HFS+」でHDDをフォーマットすることを勧める記事をよく見かけるが、どうせならBTRFSでフォーマットし、NASとして構築してしまったほうがHDDのファイルシステムを気にする必要がないので便利である。
「HFS+」でフォーマットし、USBに直つなぎしてデータ転送するほうが確かに早いが、NASとしてHDDを使ったほうが多目的で利用できるのでお勧めしたい。筆者は本物のTime Capsuleを使ったことがないのでなんとも言えないが、おそらく今回紹介する「BTRFS+NAS」として構築したほうが、条件によっては安上がり、かつ耐障害性に優れたものができ上がる。
Raspberry Pi上の準備
Raspberry PiへOSインストールする方法はほかでも多く紹介されているので、そちらを参考にしていただきたい。今回はRaspbian OSがインストールされていること、また同一LAN内にRaspberry Piが接続されていることを前提に記載しています。
まずはnetatalkをインストールする。
sudo apt-get install netatalk
次にBTRFSストレージプールのマウント先を作成。アクセス権限も忘れずに付与。
sudo mkdir -p /mnt/raid1/TimeMachine
sudo chmod 777 /mnt/raid1/TimeMachine
BTRFSストレージプールをマウント (下記例ではストレージプールが/dev/sdaにあるとき)。自動デフラグ (autodefrag)、圧縮オプション (compress=lzo)も下記例では付与している。
sudo mount -o autodefrag,compress=lzo /dev/sda /mnt/raid1
netatalkにどこのディスクを使用するか定義する。下記では「Time Machine」という名称でmac上に表示される設定。
sudo echo "/mnt/raid1/TimeMachine \"Time Capsule\" options:tm" >> /etc/netatalk/AppleVolumes.default
netatalkを再起動する。
sudo service netatalk restart
ここまで行えばmac上でTime Machineを使う準備は整った。ちなみにfstabを使って、Raspberry Piを再起動後に自動でストレージプールをマウントする方法は、なぜか筆者の環境下ではうまくいかなかった。
理由はつかめていないがRaspberry Piがフリーズするので使用していない。代わりに、多少面倒であるが、簡単なスクリプトを組んで再起動後に手動で実行している。一度起動すれば頻繁に実行するものでもないので、この面倒臭さは目をつむることにした。
sudo mount -o autodefrag,compress=lzo /dev/sda /mnt/raid1
sudo service netatalk restart
mac上の設定
システム環境設定からTime Machineを選び、「バックアップディスクを選択」をクリック。すると下記のように自作した「Time Capsule」が表示される。※下記例では「Time Machine」として表示されてしまっている。
Raspberry PiへログインするためのIDとPasswordを入力すれば、Time Machineとして接続完了である。
また、macbookシリーズを使われている方は、システム環境設定→省エネルギーのPower Napを使うことをお勧めしたい。筆者は充電中にバックアップが取られるように設定している。これは人にもよるだろうが、筆者は基本的に充電中はmacbookを使用していないので勝手にバックアップが取られており、その頻度もちょうどよい。
これには当然Raspbery Pi側は常時稼働させておく必要があるが、ほかにもNASとして利用しているのであれば特に問題ないだろう。
Raspberry PiとBTRFSを組み合わせることで、安くかつ無駄なくストレージリソースが利用できる。興味ある方はぜひ試していただきたい。
参考サイト:
https://www.raspberrypi.org/forums/viewtopic.php?f=36&t=47029