Andrew File System (AFS) の詳細解説
Andrew File System (AFS) は、
カーネギーメロン大学で開発された分散
ファイルシステムです。大学創設者の
アンドリュー・カーネギーと
アンドリュー・メロンの名にちなんで名付けられました。主に
分散コンピューティング環境で使用され、高いセキュリティとスケーラビリティが特徴です。
AFS の主な特徴
AFS は、従来のネットワーク
ファイルシステムと比べて、セキュリティとスケーラビリティにおいて大きな進歩を遂げました。主な特徴は以下の通りです。
堅牢なセキュリティ: ケルベロス認証システムによる認証と、ディレクトリ毎のアクセス制御リスト (ACL) を用いたアクセス制御により、高いセキュリティを実現しています。
優れたスケーラビリティ: クライアント側でのファイルキャッシュにより、サーバへの負荷を軽減し、大規模な環境への対応を可能にしています。キャッシュの一貫性は、callback機構によって維持されます。サーバやネットワーク障害発生時にも、影響を最小限に抑えることができます。
効率的なデータアクセス: ファイルへの読み書きは、まずローカルキャッシュに対して行われます。変更は、ファイルクローズ時にサーバに書き戻されます。この仕組みにより、アクセス速度の大幅な向上が実現されています。callback機構による再試行によって、システムの安定性も確保されています。
ボリューム管理: AFSでは、ボリュームと呼ばれる単位で
ファイルシステムを管理します。ボリュームはディレクトリツリーと、他のAFSボリュームへのリンクから構成され、物理的な位置を意識せずにファイル操作が可能です。管理者はボリュームの移動も容易に行え、ユーザへの影響はありません。リードオンリーレプリケーションもサポートし、可用性を高めています。
ファイル名空間の分離: Andrew ワークステーション上では、共有ファイル名空間とローカルファイル名空間が分離されています。共有ファイル空間は全ワークステーションで共通で、ローカルファイル空間は各ワークステーション固有です。
ファイルロック: ファイル単位でのファイルロックを採用しているため、
データベースのように複数のクライアントが一つのファイル内のレコードを同時に更新するような用途には適していません。これは、大学のコンピュータ利用形態を考慮した設計上の決定です。
AFS の実装
AFSにはいくつかの実装が存在します。
トランザーク版 (IBM): 既にサポートは終了しています。
OpenAFS: オープンソースとして広く利用されています。
Arla: 別のAFS実装です。
Linuxカーネル 2.6.10 以降: レッドハットが開発した実装がありますが、完全な実装とは言い切れません。
カーネギーメロン大学では、後継
ファイルシステムとしてCodaが開発されています。
AFS のパーミッション
AFSのACLには、以下のパーミッションが設定されます。
ディレクトリに対するパーミッション:
Lookup (l): ディレクトリの内容表示とサブディレクトリへのアクセス可否の確認
Insert (i): 新規ファイルやサブディレクトリの追加
Delete (d): ファイルやサブディレクトリの削除
Administer (a): ディレクトリのACL変更。ユーザは自身のホームディレクトリに対してこのパーミッションを保持します。
ファイルとサブディレクトリに対するパーミッション:
Read (r): ファイルの内容参照やサブディレクトリ一覧表示。通常のUNIXファイルパーミッションとの併用が必要です。
Write (w): ファイルの更新。通常の
UNIXファイルパーミッションとの併用が必要です。
*
Lock (k): flockを使ったプログラム実行
さらに、アプリケーション用の設定など、通常のファイルアクセスとは関係のないパーミッションも存在します。
AFS の歴史的影響
AFS は、
サン・マイクロシステムズのNetwork File System (NFS) バージョン4に影響を与えました。また、1989年にはOSFがAFSをベースにDCE/DFSを開発しています。AFSは、現代の分散
ファイルシステムの発展に大きく貢献した重要なシステムと言えるでしょう。