Andrew File System ( AFS ) は、信頼できるサーバーのセットを使用して、すべてのクライアント ワークステーションに均一で場所を透過するファイル名空間を提供する分散ファイルシステムです。これは、Andrew プロジェクトの一環としてカーネギー メロン大学によって開発されました。[ 1 ]元々は「Vice」という名前でしたが、[ 2 ]「Andrew」はアンドリュー カーネギーとアンドリュー メロンに由来しています。主な用途は分散コンピューティングです。現在も主にOpenAFSとして使用されています。
AFS [ 3 ]は、従来のネットワークファイルシステムに比べて、特にセキュリティとスケーラビリティの面でいくつかの利点があります。AFS は認証にKerberosを使用し、ディレクトリに対してユーザーとグループのアクセス制御リストを実装します。各クライアントは、同じファイルに対する後続のリクエストの速度を向上させるために、ローカルファイルシステムにファイルをキャッシュします。これにより、サーバーのクラッシュやネットワーク障害が発生した場合でも、ファイルシステムへのアクセスを制限できます。
AFS は弱い一貫性モデルを使用します。[ 4 ]開いているファイルに対する読み取りおよび書き込み操作は、ローカルにキャッシュされたコピーにのみ向けられます。変更されたファイルが閉じられると、変更された部分がファイル サーバーにコピーされます。キャッシュの一貫性はコールバックメカニズムによって維持されます。ファイルがキャッシュされると、サーバーはこのことを記録して、他のユーザーによってファイルが更新された場合にクライアントに通知することを約束します。コールバックは破棄され、タイムアウトを含むクライアント、サーバー、またはネットワークの障害の後には再確立する必要があります。コールバックの再確立にはステータス チェックが含まれますが、ファイル自体を再読み込みする必要はありません。
ファイルロック方式を採用した結果、AFS は大規模な共有データベースや、クライアントシステム間で共有されるファイル内のレコード更新をサポートしていません。これは、大学のコンピューティング環境のニーズを考慮した意図的な設計上の決定です。例えば、Andrew Project の元の電子メールシステムである Andrew Message System では、mboxのようにメールボックスごとに 1 つのファイルを使用するのではなく、maildir のようにメッセージごとに 1 つのファイルを使用しています。共有データベースの処理については、「AFS とバッファリング I/O の問題」を参照してください。
AFSの重要な機能の一つはボリュームです。ボリュームはファイル、サブディレクトリ、およびAFSマウントポイント(他のAFSボリュームへのリンク)のツリー構造です。ボリュームは管理者が作成し、AFSセル内の特定の名前付きパスにリンクされます。ボリュームが作成されると、ファイルシステムのユーザーはボリュームの物理的な場所を気にすることなく、通常どおりディレクトリやファイルを作成できます。ボリュームには、使用容量を制限するためのクォータを割り当てることができます。必要に応じて、AFS管理者はユーザーに通知することなく、ボリュームを別のサーバーやディスクの場所に移動できます。この操作は、ボリューム内のファイルが使用されている最中でも実行可能です。
AFSボリュームは、読み取り専用のクローンコピーに複製できます。読み取り専用ボリューム内のファイルにアクセスする場合、クライアントシステムは特定の読み取り専用コピーからデータを取得します。そのコピーが何らかの理由で利用できなくなった場合、クライアントは残りのコピーを検索します。繰り返しになりますが、データの利用者は読み取り専用コピーの場所を知りません。管理者は必要に応じて、そのようなコピーを作成および移動できます。AFSコマンドスイートは、すべての読み取り専用ボリュームが、読み取り専用コピーが作成された時点の元の読み書き可能なボリュームの正確なコピーを含んでいることを保証します。
Andrewワークステーションのファイル名空間は、共有ファイル名空間とローカルファイル名空間に分割されています。共有ファイル名空間(通常、Unixファイルシステムでは/afsとしてマウントされます)は、すべてのワークステーションで同一です。ローカルファイル名空間は、各ワークステーション固有のものです。ローカルファイル名空間には、ワークステーションの初期化に必要な一時ファイルと共有ファイル名空間内のファイルへのシンボリックリンクのみが含まれます。
Andrew File Systemは、Sun Microsystemsの人気ネットワークファイルシステム(NFS)バージョン4に大きな影響を与えました。さらに、AFSの派生版であるDCE Distributed File System(DFS)は、1989年にOpen Software Foundationによって分散コンピューティング環境の一部として採用されました。最後に、AFS(バージョン2)はCodaファイルシステムの前身となりました。
オリジナルの他に、いくつかの実装が開発されました。OpenAFS は、 2000 年にTransarc ( IBM )が公開したソースコードに基づいています。[ 5 ] Transarc ソフトウェアは非推奨となり、サポートが終了しました。Arlaは、1990 年代後半から 2000 年代初頭にかけてストックホルムの王立工科大学 で開発された AFS の独立した実装です。 [ 6 ] [ 7 ]
Linuxカーネルのソースコードには、少なくともバージョン2.6.10以降、AFSクライアントの4番目の実装が存在する。 [ 8 ] Red Hatによってコミットされたこの実装は、 2024年1月時点ではまだ未完成の、かなりシンプルなものである。 [ 9 ]
以下のアクセス制御リスト(ACL)権限を付与できます。
ファイルとサブディレクトリに影響を与える権限には、以下のものがあります。
さらに、AFSにはファイルへのアクセスに影響を与えないアプリケーションACL(A)~(H)が含まれています。
OpenAFSはAFS のオープンソース実装です。2000年 8 月 15 日にLinuxWorldで IBM は[ 10 ]商用 AFS 製品のバージョンをIBM Public Licenseの下でリリースする計画を発表しました。これが OpenAFS となりました。現在、OpenAFS は、 AIX、MacOS、Darwin、HP-UX、Irix、Solaris、Linux、Microsoft Windows、FreeBSD、NetBSDなど、幅広いオペレーティングシステムファミリー向けに活発に開発されています。
多くのオリジナルソースファイルの著作権はIBMおよびその他の貢献者に帰属します。ソースの大部分はIBMパブリックライセンス[ 11 ]でカバーされていますが、ツリー内のいくつかのファイルは大学のバニティライセンスでカバーされています。
2026年2月5日、ブラッド・トポル(IBM)は[ 12 ] [ 13 ]、IBMがIBM Developerworks OpenAFS 1.0のライセンスをIBM Public LicenseからGPLv2に変更することを承認したと発表した。
OpenAFS Foundation [ 14 ]は、OpenAFS の安定性と成長を促進することに専念する非営利団体として、 2013 年 5 月 20 日に設立されました[ 15 ]。OpenAFS ユーザーのコミュニティを引き付けて拡大し、OpenAFS の専門家コミュニティを育成し、OpenAFS の進化を育むことによって、これを実現しています。[ 16 ] [ 17 ]
OpenAFSのリリース情報は、OpenAFS Announcementsメーリングリストで発表されます。[ 18 ] 現在のリリースはOpenAFS 1.8です。
AFSは、アンドリュー・カーネギーとアンドリュー・メロンにちなんで名付けられたアンドリュー・プロジェクト[ 36 ]の一環として、カーネギーメロン大学で誕生しました。開発は1983年頃(一部の情報源では1980年代半ばとされています)に始まり、当初は「Vice」 [ 2 ]という名前でした。このプロジェクトは、クライアントキャッシュ、サーバーあたり多数のクライアントへの拡張性、Kerberosベースの認証などの機能を重視し、キャンパス全体のコンピューティング環境向けに、拡張可能で場所を問わない分散ファイルシステムを作成することを目的としていました。
初期の作業にはIBMとの協力が含まれていました。AFSバージョン1(ITC分散ファイルシステムと呼ばれることもあります)に続いて、1980年代後半に再設計されたAFSバージョン2(または単にAFS)が登場し、スケーラビリティとキャッシュの一貫性が向上しました。 [ 37 ]
1988年か1989年に、カーネギーメロン大学の職員によってAFSの商業化を目的としてTransarc Corporationが設立された。Transarcは複数のオペレーティングシステム向けにサーバーおよびクライアントのコードを開発・サポートし、研究プロジェクトを商用製品へと転換させた。
Transarcは1994年にIBMに買収され[ 38 ]、その後IBMピッツバーグ研究所の一部となった(1999年頃)。IBM/Transarcの下で、AFSは継続的な開発を伴う商用製品として存続した。
2000年8月15日、LinuxWorldにおいて、IBMは商用AFS製品のソースコードをIBM Public License(IPL 1.0、OSI承認のオープンソースライセンス)の下で公開する計画を発表した。コードは2000年11月に公開され(オープンソース化の取り組みは2000年11月1日に開始されたとされることが多い)、プロジェクト名はOpenAFSとなった。これにより、コードベースはコミュニティによる開発と保守に利用可能となった。OpenAFS 1.0はその後間もなく、2000年11月4日に最初のリリースが行われた。カーネギーメロン大学(CMU)の関係者を含むボランティアやAFS愛好家のグループが、保守とさらなる開発を引き受けた。
OpenAFSは、オープンソース化以来、ボランティア、企業、機関からの貢献を受け、コミュニティ主導のプロジェクトとして開発されてきました。様々なUNIX/Linux系OS、macOS、Windowsなど、幅広いプラットフォームをサポートしています。開発は、AFSプロトコルとの互換性を維持しながら、バグ修正、セキュリティ強化、カーネルサポート(特にLinux)、パフォーマンス向上、機能追加に重点を置いています。
リリースは、1.0(初期)、1.2、1.4、1.6、および現在の1.8シリーズなどのシリーズで追跡されます(メンテナンスリリースは2026年まで継続され、例えば2026年5月には1.8.16がリリースされます)。
OpenAFSは、セキュリティと互換性の更新を含むAFSのオープンソースリファレンス実装として、現在も積極的にメンテナンスされています。成熟した分散ファイルシステムを必要とする学術、研究、企業環境において、引き続き利用されています。