読者です 読者をやめる 読者になる 読者になる

異国見聞私書録

異国から見たこと感じたこと気になったこと。そして時折テクノロジーのお話。

Raspberry Piを使ってTime Capsuleもどきを自作してみる

tech

 前回、簡単な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」として表示されてしまっている。

f:id:pukarix:20170115090446p:plain

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