Technical Blog Post
Abstract
netatalk on POWER8
Body
Macで作ったファイルを、作業している人同士で共有するときには、ファイル共有のためのプロトコルAFP(Apple Filing Protocol)に対応したファイルサーバーを使うことが出来ます。
Windowsでは、SMB/CIFS、LinuxではSambaがよく使われますが、Macの場合はこのAFPを使うことが多いと思います。
Linux on Powerでは、Sambaを利用できることに加えて、AFPも使えるため、MacのファイルサーバーをLinux on Powerで作ることができるのです。
(AFPはこちら: http://ja.wikipedia.org/wiki/Apple_Filing_Protocol )
今回AFPサーバー機能を実現するnetatalkというソフトウェアを Linux on Powerで動作検証しました。
実は、Linux on Powerでファイルサーバーをつくると、止まりにくいファイルサーバーを作れます。
POWER8を搭載したサーバーには、FFDC(First Failure Data Capter)という、”ハードウェアエラー発生時にデータをキャプチャーして原因特定を早める”アーキテクチャーが実装されており、更にキャプチャーしたエラーデータを解析して、サービスプロセッサーという管理用のCPUが対処してくれるのです。
もうすこし深くご説明しましょう。
Linux on Power サーバーには、Chekerという、ハードウェアのエラーを検知する機能が大量に搭載されています。どれくらい大量かというと、ローエンドモデルでもIntel搭載サーバーの約6倍の3万個、ハイエンドモデルになるとなんと約59万個ものCheckerが入っているのです。
Checkerは、エラー状態を識別して、それをキャプチャーする機能をもつもので、プロセッサーの中の演算ユニットの入出力や、L1,2,3キャッシュの入出力、メモリーの入出力、ディスクI/Oアダプターの入出力など、マザーボード上のあらゆるところに配備されているのです。
そして更にCheckerでエラーを検知するだけに留まらず、「障害分離レジスター」とよばれる、障害対応用の特別なレジスターで、Chekerがキャプチャーした障害に関連するエラー・データを格納しています。ローエンドモデルからハイエンドモデルの全てに搭載され、さらにハイエンドモデルでは、このレジスターのビット数が多くなるため、より多くのエラー・データを格納できるのです。
そして管理プロセッサーが、FIRを読み取り、障害の事象に応じてリカバリー処理、自己修復機能の有効化、リソースの割当解除、仮想マシン(LPAR)もしくはシステムの単位でのリカバリー処理を実施してくれます。このレベルになると、もはやIntelプロセッサー搭載サーバーでは対処が難しいエリアです。
もっと詳しく知りたい!という方はこちらをご覧ください。ご要望がございましたら、追加してご案内したいと思います。
ということで、ファイルサーバーをつくるなら、信頼性の高いPOWERにすると安心!、とご理解いただけましたでしょうか。
ちなみにnetatalkのインストールは至って簡単ですが、ご参考までにこちらでご紹介します。
Linux on Power にインストールして ファイルサーバーを作ってみてください。
1.RHEL7 for POWERをインストール
RHELはどのバージョンでもよいのですが、今回はPOWER8の機能をフル活用できるRHEL7をインストールします。
ここではRHEL7そのもののインストール方法は割愛しますが、またご紹介したいと思います。
インストールがおわったら、今回は稼働検証のために、SELinuxとFirewallを停止しておきます。
# setenforce 0
といったコマンドで、SELinuxをPermissive モードにします。リブートしても無効化しておきたい場合は、/etc/selinux/config ファイルを編集しましょう。
Firewallの停止は、RHEL7から手順が変わりました。
# systemctl stop firewalld.service
といったコマンドで、サービスの停止ができます。リブートしても無効化しておきたい場合は、systemctl disableや、systemctl mask などを使いましょう。
2.netatalkのインストール
ここからは更に簡単です。このガイドの手順に従うだけでインストールできます。
今回は、検証時点で最新のバージョン netatalk-3.1.6-0.0.1.fc20.src.rpm をダウンロードして利用しました。
あとはもうひたすら手順に従うだけですが、rootユーザーで次のように実施しました。
まずsrc rpm をインストールします。これはソースコードがインストールされるだけですね。
# rpm -ivh netatalk-3.1.6-0.0.1.fc20.src.rpm
そして一旦バイナリーのRPMを生成しますので、そのために必要なrpm-buildパッケージを入れます。
# yum install rpm-build
そしてビルドします。
# cd /root/rpmbuild/SPECS/
# rpmbuild -bb netatalk.spec
ここで、パッケージが不足しているとエラーが出ますので、表示された、足りないパッケージを、適宜yumコマンドで追加導入します。
yumレポジトリーは、インターネット経由でRed Hat Networkを利用してもよいですし、RHELのインストールメディアで作成してもよいです。
# yum install glib2-devel cracklib-devel openssl-devel quota-devel libdb-devel pam-devel tcp_wrappers-devel libgcrypt-devel avahi-devel libacl-devel openldap-devel libevent-devel dbus-devel dbus-glib-devel systemtap-sdt-devel libtdb-devel tracker-devel mariadb-devel
そして気を取り直してビルドを再度試します。
# rpmbuild -bb netatalk.spec
あとは待つだけで、コンパイルしてバイナリーパッケージを作ってくれます。
終わると /root/rpmbuild/RPMS/ ディレクトリにバイナリーパッケージができているはずです。
# cd /root/rpmbuild/RPMS/
# ls
netatalk-3.1.6-0.0.1.el7.ppc64.rpm
netatalk-debuginfo-3.1.6-0.0.1.el7.ppc64.rpm
netatalk-devel-3.1.6-0.0.1.el7.ppc64.rpm
そしていよいよインストールですね。
# rpm -ivh netatalk-3.1.6-0.0.1.el7.ppc64.rpm
インストールがおわったら、バージョンを確認してみます。「3.1.6」と表示されていますね。
# /usr/sbin/afpd -V
afpd 3.1.6 - Apple Filing Protocol (AFP) daemon of Netatalk
This program is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free Software
Foundation; either version 2 of the License, or (at your option) any later
version. Please see the file COPYING for further information and details.
afpd has been compiled with support for these features:
AFP versions: 2.2 3.0 3.1 3.2 3.3 3.4
CNID backends: dbd last tdb mysql
Zeroconf support: Avahi
TCP wrappers support: Yes
Quota support: Yes
Admin group support: Yes
Valid shell checks: Yes
cracklib support: Yes
EA support: ad | sys
ACL support: Yes
LDAP support: Yes
D-Bus support: Yes
Spotlight support: Yes
DTrace probes: Yes
afp.conf: /etc/afp.conf
extmap.conf: /etc/extmap.conf
state directory: /var/netatalk/
afp_signature.conf: /var/netatalk/afp_signature.conf
afp_voluuid.conf: /var/netatalk/afp_voluuid.conf
UAM search path: /usr/lib64/netatalk//
Server messages path: /var/netatalk/msg/
3.設定
あとは設定ファイルを編集して、Macに公開するLinuxのディレクトリーなどを指定します。
# vi /etc/afp.conf
設定ファイルの書き方は、ガイドのURLなどをご覧ください。
これでMacのFinderの「移動」メニューから「サーバへ接続」を選ぶなどして、Linuxサーバーに接続します。
接続先の書き方は「afp://x.x.x.x」ですね。「x.x.x.x」はIPアドレスか、もしくはホスト名など、Linuxサーバーを指定するだけです。
UID
ibm16169785