
Mac OS X Snow Leopard (10.6) まではNFS経由でリモート Time Machine を行っていたが、Mac OS X Lion (10.7) では「バックアップを完了できませんでした。ネットワーク・バックアップ・ディスクは、必要なAFP機能に対応していません。」というエラーで実行できなくなってしまった。そこで、AFP経由でリモート Time Machine を行うように変更した。
HAT blog: netatalk 近状 によると、AFPはAFPでも、Lionからは AFP 3.3 がどうやら必須になってしまったようなので、3.3に対応した Netatalk 2.2.0 でAFPサーバーをまずは構築する。方法は 複眼中心: Scientific Linux 5.6 に Netatalk 2.2.0 をインストール を参考にしてほしい。
AFPサーバーが問題なく動いたら、Time Machine で使用するパーティションを作成する。Advanced Format Technology (AFT) を使用している場合は 複眼中心: Advanced Format Technology を使用したHDDをLinuxで正しくパーティション を参考にしてほしい。
作成したパーティションをフォーマットする。また、fsckが自動で実行されないようにし、予約ファイルシステム・ブロックを2%に変更した。
[root@charlie ~]# mkfs.ext3 /dev/sdd2 mke2fs 1.39 (29-May-2006) Filesystem label= OS type: Linux ...... This filesystem will be automatically checked every 22 mounts or 180 days, whichever comes first. Use tune2fs -c or -i to override. [root@charlie ~]# tune2fs -c 0 -i 0 -m 2 /dev/sdd2 tune2fs 1.39 (29-May-2006) Setting maximal mount count to -1 Setting interval between checks to 0 seconds Setting reserved blocks percentage to 2% (4884755 blocks)
マウント先を作成する。
[root@charlie ~]# mkdir /var/tm [root@charlie ~]# chmod 000 /var/tm
OS起動時にマウントするように/etc/fstabに設定を加える。user_xattrをつけると拡張属性 (EA) がext3のEAとして保存される。設定を変更したらマウントしよう。
[root@charlie ~]# echo "/dev/sdd2 /var/tm ext3 defaults,user_xattr 0 2" >> /etc/fstab [root@charlie ~]# mount /var/tm
Time Machine を使用するMacが2台あるので、それぞれのディレクトリを作成し、それぞれのユーザーに所有者を変更する。
[root@charlie ~]# mkdir /var/tm/evian [root@charlie ~]# mkdir /var/tm/akibk [root@charlie ~]# chown -R tats:tats /var/tm/evian [root@charlie ~]# chown -R akiko:akiko /var/tm/akibk
2つのディレクトリを Time Machine ディスクして共有する。allow:で読み書きできるユーザーを指定する。また、最近のNetatalkはoptions:tmと書くだけで Time Machine ディスクになるのでお手軽だ。さらに、volsizelimitを設定することでディスクの上限まで使わずに、その値以下でやりくりするようになるので、ボクは約700GBに設定した。
[root@charlie ~]# echo '/var/tm/evian "TMevian" allow:tats options:tm volsizelimit:700000' >> /usr/local/etc/netatalk/AppleVolumes.system [root@charlie ~]# echo '/var/tm/akibk "TMakibk" allow:akiko options:tm volsizelimit:300000' >> /usr/local/etc/netatalk/AppleVolumes.system
これでLinux側の設定は終わり。Netatalk 2.2 からは Time Machine ディスクをマウントしないでも、システム環境設定「Time Machine」の「ディスクを選択...」にディスクがリストされるので、今回作成したネットワーク・ボリュームを選択する。しばらくすると「Time Machine バックアップ」というディスクがマウントされ、バックアップが始まる。
……のだが、リストアのために「Time Machine に入る」を選択しても何もおこらない。Linux側の/var/log/messagesにも、Mac側のコンソールにも何も問題は起きてない。この問題は Bayashi's blog: 『Mac関連』Mac OS X Lionにしたら、samba上のDISKイメージにTime Machineのバックアップを作成できなくなった でも報告されているが、ボクの環境ではEAが有効な状態で何度再バックアップしても直らない。
原因調査のためにTMevian内に作成されたevian.sparsebundleを手動でマウントしてみる。すると、/Volumes/Time Machine バックアップ/Backups.backupdb/evian フォルダの権限が711になっており、一般ユーザーが中身を見られないことに気づいた。問題なく動くUSBハードディスクに作った Time Machine ディスクでは、ここは755になっている。というわけで、このフォルダの権限を755に変更しようとするが、このフォルダはACLで制限されており、さらに chmod -N がなぜか効かず、ACLが消去できない。
[tats@evian ~]$ ls -le /Volumes/Time\ Machine\ バックアップ/Backups.backupdb total 0 drwx--x--x@ 3 root staff 136 7 1 18:13 evian/ 0: group:everyone deny add_file,delete,add_subdirectory,delete_child,writeattr,writeextattr,chown [tats@evian ~]$ sudo chmod 755 /Volumes/Time\ Machine\ バックアップ/Backups.backupdb/evian chmod: Unable to change file mode on /Volumes/Time Machine バックアップ/Backups.backupdb/evian: Operation not permitted [tats@evian ~]$ sudo chmod -N /Volumes/Time\ Machine\ バックアップ/Backups.backupdb/evian chmod: Failed to clear ACL on file /Volumes/Time Machine バックアップ/Backups.backupdb/evian: Operation not permitted
chmod -N が効かない問題については daily memorandum 3.0.0: Time Machine ボリュームを直接操作する(2) が参考になった。Backups.backupdb内のファイルは Mandatory Access Control によって制御されていることが原因のようなので、以下のようにして権限を変更した。
[tats@evian ~]$ sudo mv /Volumes/Time\ Machine\ バックアップ/Backups.backupdb{,~}
[tats@evian ~]$ cd /Volumes/Time\ Machine\ バックアップ/Backups.backupdb~
[tats@evian Backups.backupdb~]$ ls -le
total 0
drwx--x--x@ 3 root staff 136 7 1 18:13 evian/
0: group:everyone deny add_file,delete,add_subdirectory,delete_child,writeattr,writeextattr,chown
[tats@evian Backups.backupdb~]$ sudo chmod -N evian
[tats@evian Backups.backupdb~]$ ls -le
total 0
drwx--x--x@ 3 root staff 136 7 1 18:13 evian/
[tats@evian Backups.backupdb~]$ sudo chmod 755 evian
[tats@evian Backups.backupdb~]$ ls -le
total 0
drwxr-xr-x@ 3 root staff 136 7 1 18:13 evian/
[tats@evian Backups.backupdb~]$ sudo chmod +a "group:everyone deny add_file,delete,add_subdirectory,delete_child,writeattr,writeextattr,chown" evian
[tats@evian Backups.backupdb~]$ ls -le
total 0
drwxr-xr-x@ 3 root staff 136 7 1 18:13 evian/
0: group:everyone deny add_file,delete,add_subdirectory,delete_child,writeattr,writeextattr,chown
[tats@evian Backups.backupdb~]$ cd
[tats@evian ~]$ sudo mv /Volumes/Time\ Machine\ バックアップ/Backups.backupdb{~,}
これにより、問題なく「Time Machine に入る」も実行できるようになり、無事に Mac OS X Lion 対応リモート Time Machine サーバーが構築できた。


[...] TimeMachineがAFP3.3しかサポートしない。おかげでI-OデータのNASがバックアップ用に使えなくなりましたが、そもそもI-Oデータにはあんまり期待してなかったので別にいいです。 縦書き対応 [...]
[...] で、対処法ですが、複眼中心 Mac OS X Lion 対応 Time Machine サーバー構築を参照に対応しました。パーミッションが711とな。それで、パーミッションを変更しようとしてもACLが働いているので・・・と言うことに。 [...]