Coda

Coda は、カーネギーメロン大学の Mahadev Satyanarayanan らが1987年から続けている研究プロジェクトの一環として開発した分散ファイルシステム。Andrew File System (AFS) の直接の後継であり、機能的にも多くの類似点がある。Linux、NetBSD、FreeBSD で動作する。Coda に影響を受けたファイルシステムとして InterMezzo がある。Coda は現在も開発が続けられており、研究というよりも商用の頑健な製品を作ることに中心が移っている。
機能.
Coda にはネットワークファイルシステムにふさわしい機能が多くあり、その一部は独特のものである。
Coda は、ネットワークのコネクションが失われたとき、サーバデータへのアクセス手段としてローカルキャッシュを使う。通常の運用では、ユーザーのファイルシステムでの読み書きによって、クライアントはサーバとデータをやり取りし、ユーザーが重要と指定したデータを接続断に備えてキャッシュしておく。ネットワーク接続が途切れたとき、Coda のクライアントはローカルキャッシュを使って運用を続け、その間の更新を記録しておく。ネットワークが再び接続されたとき、クライアントは更新記録をサーバに送り、同期処理を行う。その後、再び通常の運用に戻る。
AFSとは、データのレプリケーション方法が異なる。AFSは悲観的レプリケーション戦略を採用していて、読み書きが可能なサーバは1台だけで、他はリードオンリーの複製になっていた。Coda では、どのサーバも読み書き可能になっている。このためAFSよりも可用性が大幅に向上している。
このような機能があるため、同じファイルやディレクトリでありながら、個々のクライアントやサーバが独自に更新を行って、いわゆるコンフリクトが発生することがある。Coda ではコンフリクトに手動または自動で対処するための各種ツールを用意している。