Netatalkで「Time Machine」向けのストレージを作ってみる。 QNAPの場合はこちらApple/TimeMachine/QNAP
本家 http://netatalk.sourceforge.net/
firewallとselinuxは停止して、再起動
[root@c105 ~]# systemctl disable firewalld
[root@c105 ~]# sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/sysconfig/selinux
[root@c105 ~]# reboot
他、Netatalkのドキュメントから必要な追加パッケージをインストール
[root@c105 ~]# yum install libdb-devel libacl-devel tracker-devel libgcrypt-devel openssl-devel \
avahi-devel tcp_wrappers-devel quota-devel cracklib-devel openldap-devel dbus-glib-devel \
systemtap-sdt-devel pam-devel
Netatalkは yum でインストールを考えていたが、http://pkgs.org/search/netatalkを見るとCentOS7向けにはないみたい..
なので、本家からソースを取得して作る事にした。
[root@c105 ~]# mkdir /opt/src && cd /opt/src
[root@c105 src]# wget http://prdownloads.sourceforge.net/netatalk/netatalk-3.1.8.tar.bz2
[root@c105 src]# bzip2 -cd netatalk-3.1.8.tar.bz2 | tar xf - && cd netatalk-3.1.8/
[root@c105 netatalk-3.1.8]# ./configure --with-tracker-pkgconfig-version=1.0 --with-cracklib --with-acls \
--with-init-style=redhat-systemd \
--prefix=/opt/netatalk \
--sysconfdir=/etc \
--localstatedir=/var \
--datarootdir=/usr/share \
--docdir=/usr/share/doc/netatalk-3.1.8 \
--with-pam=/usr/lib64/security \
--with-pam-confdir=/etc/pam.d \
--with-uams-path=/usr/lib64/netatalk \
--with-dbus-sysconf-dir=/etc/dbus-1/system.d
(中略)
Configure summary:
INIT STYLE:
redhat-systemd
AFP:
Extended Attributes: ad | sys
ACL support: yes
Spotlight: yes
CNID:
backends: dbd last tdb
UAMS:
DHX (PAM SHADOW)
DHX2 (PAM SHADOW)
RANDNUM (afppasswd)
clrtxt (PAM SHADOW)
guest
Options:
Zeroconf support: yes
tcp wrapper support: yes
quota support: yes
admin group support: yes
valid shell check: yes
cracklib support: yes
ACL support: yes
Kerberos support: yes
LDAP support: yes
AFP stats via dbus: yes
dtrace probes: yes
Paths:
Netatalk lockfile: /var/lock/netatalk
init directory: /usr/lib/systemd/system
dbus system directory: /etc/dbus-1/system.d
pam config directory: /etc/pam.d
Documentation:
Docbook: no
[root@c105 netatalk-3.1.8]#
[root@c105 netatalk-3.1.8]# make && make install
/etc/afp.conf が用意される。とりあえずTimeMachine向けの領域として /share を掘った
[root@c105 ~]# mkdir /share
[root@c105 ~]# vi /etc/afp.conf
[Global]
log file = /var/log/netatalk.log
; [Homes]
; basedir regex = /xxxx
[My AFP Volume]
path = /share
time machine = yes
[root@c105 ~]#
コンパイルの際、「--with-init-style=redhat-systemd」としたので systemctl によってコントロールされる。
[root@c105 ~]# systemctl list-unit-files | grep netatalk
netatalk.service disabled
[root@c105 ~]#
起動させてみる
[root@c105 ~]# systemctl start netatalk
boot時に自動的に起動させるには
[root@c105 ~]# systemctl enable netatalk
とする。停止は
[root@c105 ~]# systemctl stop netatalk
で、boot時も停止させたままにするには
[root@c105 ~]# systemctl disable netatalk
とする。
起動後のログ確認は、設定ファイルで指定した「/var/log/netatalk.log」の他にもsystemctl由来からは
[root@c105 ~]# journalctl -u netatalk
とする。
っで、やっと目的のTimeMachine。
「システム環境設定」の中の「Time Machine」をダブルクリックする。
すると「Time Machine」が起動する。
このままではロックされた状態で、設定変更ができないので、左下の「鍵」のマークをクリックして編集可能にする。
その際、パスワード認証が求められ、管理者権限のアカウントとパスワードを入力して鍵を解除する。
「Time Machine」画面に戻り、左下の「鍵」マークが解錠され、設定変更が可能な画面になる。
ここで、「ディスクを選択...」ボタンを押下する。
新たな画面が表示され、タイムマシン向けのディスクを選ぶ。
ここでは先ほど設定したnetatalkで作ったボリューム「My AFP Volume」を選択して、「バックアップディスクとして使用」を押下する。
するとnetatalkマシンへの認証が求められます。TimeMachine向けの調整しか施していないので他ユーザは存在しない。
面倒なのでrootアカウントを使用したら「{auth.c:226} (error:AFPDaemon): login: root login denied!」と却下された。
ソースコードのauth.cを見たら、仕様的にそうしているようだ。
なので別のユーザをnetatalkマシンに作ってみた。
[root@c105 ~]# useradd netatalk
[root@c105 ~]# echo netatalk | passwd --stdin netatalk
[root@c105 ~]# chown -R netatalk:netatalk /share
っで、ユーザnetatalkでマシン認証を行ってみた。
認証が成功すると、
自動的に「入」になって、バックアップのカウントダウンが始まる。
っで、カウントダウンが終わり、バックアップが実行される。
暫くするとバックアップは完了する
netatalkマシンではフォルダが作成される。
[root@c105 share]# ls -l
合計 8
drwx--S---. 3 netatalk netatalk 4096 1月 24 15:15 lion.sparsebundle
[root@c105 share]#
フォルダ名からホスト名で分類されるようなので、一つのnetatalkマシンで複数の「Time Machine」が保存できそうである。