OpenAFS (Introduction)

OpenAFSとは?

AFS(Andrew File System)は分散型ファイルシステム(Distributed File System)の一種です。1983年にカーネギーメロン大学が開発を開発し、商用化・販売するのにTransarc社(後のIBM Pittsburg Labs)が設立され、オープンコミュニティーでも利用できるようにしたものがOpenAFSです。現在は大学などの教育機関、大企業、行政などで広く使われています。Network File Server(NFS)は単一のサーバーでファイルを管理・共有するのに対し、DFSは複数のファイルサーバーで同期を取りながらファイルを共有することができるためSPOFになる心配もなく、大量のホストで同じバイナリ―を共有して分散型システムを構築したり、他部署とのミドルウェアの共有などにも使用することが出来ます。

AFSの特徴はいくつかありますが、代表的な特徴をいくつか挙げると

クロスプラットフォーム
  • クライアントはMac, Linux, Windowsに対応している
  • どのプラットフォームのホストからも同一パスでファイルを参照することができる
  • 特殊シンボリックリンク(@sys)を使って、特定アーキテクチャでしか動かせないバイナリ―も同一パスで扱うことができる

バイナリ―に関しては、アーキテクチャーの差異も吸収できるので、例えばruby/python/javaも一回そのアーキテクチャ用にコンパイルさえしておけば、どのホストからも利用できるので、新サーバーのミドルウェアの設定が飛躍的に楽になります。

特殊シンボリックリンク(@sys)はかなり強力な機能で、例えばLocalのMacでテストしたrubyスクリプトもshebang行のパス情報も変えることすらなく、いきなり違うアーキテクチャーのホスト本番Linuxサーバーで実行することが出来ます。(後述します)

スケーラビリティ
  • NFSの場合だとそのホストのキャパシティーに依存してしまうが、OpenAFSの場合Volumeという単位でディレクトリを分解することができるため、あるパスの容量が不足したら、そのパスだけ別のボリュームサーバーに移動したり、パス内をさらに小さいVolumeに分解したりしていくらでも増やすことが出来る。
  • 参照頻度の高いファイルはMaster Slave方式で分散させることもできる。(更新頻度の高い地域に合わせてMasterの地理的場所を移動させる等のウルテクも可能です)

事前のキャパシティープラニングなどしなくても、後追いでいくらでも設定変更が可能ということです。

セキュリティ
  • 認証システムはKerberosを利用している。
  • どのユーザが(またはどのグループのユーザが)リスト権限、アクセス権限、書き込み権限、ロック権限をもつかが細かく設定できる。(フォルダに対してもファイルに対しても)これによりプロダクション用のパスワードが入ったファイルはプロダクション用IDしか読めない、とすることが出来る。(もちろんパスワードをファイル管理する運用はおすすめしませんが、MySQL等Kerberosをネイティブで対応できないミドルウェアも多数あるので)

ボリュームの概念図
f:id:panda4126:20130205100850j:plain

OpenAFSを使う前に

OpenAFSをインストールする前に色々と準備しておかないといけません。NTP, DNS, LDAPは一般の社内ネットワークなら十分整備されていると思いますが、Kerberosはあまりメジャーではないように思えます。

NTP

全ホストの時間を同期させる必要があります。主にはKerberos認証を正しく動作させるためですが、運用上はログのタイムスタンプ、DBサーバーならアプリケーションにおいて「取引時間の記録」等正確に記録する必要があるので、一般的にもホストの時間の同期は必須です。

DNS

ホストがQualified Nameでないとホスト認証が出来なくなり、結果Kerberosコマンドが使えなくなってしまいます。

http://panda4126.hatenablog.com/entry/installing-djbdns

Kerberos

KerberosのKの文字を見ただけで暗い顔をされる人もいるようですが、Kerberosをうまく使いこなせれば、統合ログインやSingle Sign-Onの基盤にもなりえますし、今後色々な成長業界にかかる色々な情報技術系の規制にも柔軟に対応できるでしょう。統合認証にActive Directoryを採用されている企業は多く、Active Directoryなら統合認証プロトコルにKerberosVを採用しているので、これで代用できるらしいのですが、まだ自分も実験中です。

LDAP

OpenAFSには必須ではないですが、Kerberosでホストへのログインを統合認証させたらユーザの管理はLDAPで行うべきでしょう。LDAPのホームディレクトリ設定を利用して、どのホストにログインしても、同じホームディレクトリがアクセスできる、というウルテクも可能です。