2011-01-19
NetatalkとAvahiを使ってFreeBSDマシンをTime Capsuleとして使う
Mac OS XにはTime Machineというバックアップ機能があって、ローカル接続したHDDかネットワーク接続したファイルサーバに自動的にバックアップを作成してくれる。デスクトップ型ならローカル接続したHDDを使うのが、高速かつ確実だけど、ノート型の場合はいちいちHDDを接続するのが面倒で、そのうちバックアップを取らなくなる恐れがある。
Time Machineに使えるネットワーク接続したファイルサーバは、Apple純正のTime Capsuleがあるけど、内蔵のHDDが故障したらせっかく取得したバックアップがパーになるから、冗長化されたHDDを使いたい。
そこで、手元のFreeBSDマシンをTime Capsuleっぽく仕立てることにした。
Time Capsuleは、ディスク共有をAFP over TCP、サービス広告をBonjourで実現してるので、それらを適切に設定すればTime Capsuleっぽく動作させることができる。
インストール
portsから、net/netatalkとnet/avahiをインストールする。それぞれがAFP over TCPとBonjourを担当する。NetatalkでTime Machine対応を簡単に実現するには、Netatalk 2.0.5以上が必要である。net/netatalkは現在2.1.5だから問題なし。
Netatalkの設定
ユーザのホームディレクトリは共有せず、Time Machine用ボリュームの共有のみを行う設定とする。
まずはAFP over TCPを担当するafpdの設定を、/usr/local/etc/afpd.confに記述する。デフォルトではユーザごとのホームディレクトリを共有する設定になっているので、-nouservolを追加して共有しない設定にする。認証は、OSのローカルユーザアカウントを使うことにしてる。
(追記)ホームディレクトリの共有は、/usr/local/etc/AppleVolumes.defaultで指定されてるから、該当箇所をコメントアウトすればOK。afpd.confの編集は不要。id:K-HATさん、ご指摘ありがとうございました。
# The "~" below indicates that Home directories are visible by default. # If you do not wish to have people accessing their Home directories, # please put a pound sign in front of the tilde or delete it. # ~ ↑これをコメントアウトする
次はafpdで共有するボリュームの設定を、/usr/local/etc/AppleVolumes.defaultに記述する。
/path/to/backup "Time Machine" options:tm
options:tmがTime Machine対応のための設定である。Time Machineは、ディスク容量があればあるだけバックアップを作成するので、共用のボリュームの場合はlimitsizeも指定してTime Machineに使用するディスク容量を制限するとよい。今回はZFSのquotaを使ってディスク容量を制限するため、limitsizeの指定はしなかった。/path/to/backupは、接続の際使用するユーザで書き込み可能としておくこと。
Avahiの設定
/usr/local/etc/avahi/services以下に、広告するサービスの設定ファイルを設置する。以下はAFP over TCPの設定ファイルadisk.serviceである。
<?xml version="1.0" standalone='no'?> <!DOCTYPE service-group SYSTEM "avahi-service.dtd"> <service-group> <name replace-wildcards="yes">%h</name> <service> <type>_adisk._tcp</type> <port>9</port> <txt-record>sys=adVF=0x100</txt-record> <txt-record>dk0=adVN=Time Machine,adVF=0x81</txt-record> </service> </service-group>
adVF=0x81がTime Machine対応ボリュームの証。これでTime Capsuleディスクを探すときに、一覧に登場するようになる。
/etc/rc.confの設定
NetatalkとAvahiが起動時に起動するよう、/etc/rc.confに設定を追加する。
avahi_daemon_enable="YES" avahi_dnsconfd_enable="YES" netatalk_enable="YES" cnid_metad_enable="YES" afpd_enable="YES"
最後に手動でサービスを起動するか、サーバごと再起動するかする。その後、afpd、cnid_metad、avahi-daemonが起動しているかどうか確認する。
Time Machine環境設定から「ディスクを選択」を実行すると、設定した共有ボリュームが表示される。Time Machineボリュームを選択すれば、ネットワーク経由でTime Machineが実行可能。すばらしい。
参考
- 242 http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&cts=1331002326446&ved=0CCgQFjAA&url=http://d.hatena.ne.jp/mteramoto/20110119/1295445264&ei=0ntVT5FOgqqsB8qw2KIH&usg=AFQjCNEtk8ls_bvwIr1ZYoWkZ8FBtGrVAg
- 112 http://motoyuki.bsdclub.org/bsddiary/
- 96 https://www.google.co.jp/
- 74 http://tatsuya.info/wp
- 70 http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&source=web&cd=2&ved=0CC4QFjAB&url=http://d.hatena.ne.jp/mteramoto/20110119/1295445264&ei=pLRuT4iJJoqWmQXeyLSpBg&usg=AFQjCNEtk8ls_bvwIr1ZYoWkZ8FBtGrVAg
- 68 http://pipes.yahoo.com/pipes/pipe.info?_id=tDfBdGWF3RGl9XNm1L3fcQ
- 47 http://www.google.co.jp/search?q=netatalk&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:ja:official&client=firefox-a
- 43 http://tatsuya.info/wp/archives/9826
- 41 http://hatx.blog.so-net.ne.jp/netatalk_status
- 39 http://www.google.co.jp/url?sa=t&rct=j&q=freebsd netatalk&source=web&cd=3&ved=0CDcQFjAC&url=http://d.hatena.ne.jp/mteramoto/20110119/1295445264&ei=kS6kTqTuEI_JmQXA48SgCQ&usg=AFQjCNEtk8ls_bvwIr1ZYoWkZ8FBtGrVAg&cad=rja

