分散ファイル システムの歴史
要約すると、分散ファイル システム (DFS) は、ファイルが複数のファイル サーバー間に分散されたファイル システムです。 分散ファイル システムでは、クライアントは、すべてのファイル システム サーバーのすべてのファイルを含む単一のグローバル名前空間を表示することに注意してください。 DFS では、クライアントがファイル サーバー全体で必要なファイルとファイル ブロックを検出できるように、メタデータ管理が必要です。 これらは通常、複数のファイル共有ノードにデプロイされ、複数のユーザーが同時に使用することを目的としています。 共有リソースと同様に、次に示す複数の設計上の考慮事項を考慮する必要があります:パフォーマンス、整合性、フォールト トレランス、可用性。
分散ファイル システムの起源と進化
ファイル システムは、ローカル ファイル システムとして使用されていた UNIX ファイル システムおよび BSD の高速ファイル システム (FFS) の影響を大きく受けています。 これらのファイル システムの主な目的は、高速で信頼性の高い方法でデータをディスク上に整理することであることを思い出してください。
NFS などのネットワーク ファイル システムは、ユーザーがネットワーク経由でファイルを共有できるようにするために登場しました。 NFS では、サーバーに保持されているデータを複数のクライアントと共有できるクライアント サーバー アーキテクチャが使用されます。 これは、ネットワーク経由でファイルを共有するために現在まで引き続き使用されている単純なプロトコルです。 NFS では、調整された方法でファイルを複数のサーバーに分散させることはできず、各サーバーで複数のファイルを単純に共有できます。 名前空間の一貫したグローバル ビューはありません。 クライアントでは、ローカル ファイル システム ツリー内の任意の場所に NFS 共有をマウントできます。 そのため、このアプローチは、数千台のクライアント/サーバーに拡張する能力が制限されており、ローカル エリア ネットワーク (LAN) 内での使用に限定されています。
Andrew ファイル システム (AFS) は、実際の分散ファイル システムの初期の例です。 AFS を使用すると、協調するホスト (クライアントとサーバー) は、ローカル エリア ネットワークとワイド エリア ネットワークの両方でファイル システム リソースを効率的に共有できます。 AFS は、1 つのまとまったファイル システムを提供するサーバーの管理グループであるセルで構成されます。 セルを結合して、1 つのグローバル名前空間を形成できます。 AFS からデータにアクセスするすべてのクライアントによって、最初にファイルがクライアントにローカルにコピーされます。 ファイルへの変更は、ファイルが開いている間はローカルで行われます。 ファイルを閉じると、AFS クライアントでは変更が再びサーバーと同期されます。 AFS の進化形は CODA です。これは、セマンティクスやレプリケーションの共有に関して特に AFS に改善を加えた分散ファイル システムです。 AFS と CODA は POSIX に準拠しています。つまり、既存の UNIX アプリケーションを変更せずに使用できます。
2003 年、Google は GFS2 と呼ばれる分散ファイル システムの設計を明らかにしました。これは汎用ハードウェアの大規模なクラスターを使用してデータへの効率的で信頼性の高いアクセスを実現するためにゼロから設計されたものです。 GFS は、とても大きなファイルをレプリケート形式で複数のサーバー (通常のサイズは 64 MB) にチャンクとして格納するように設計されています。 GFS には AFS のような単一のクライアント ビューが用意されていますが、ファイル チャンクの場所はユーザーに公開され、最も近くの利用可能なレプリカからファイルをフェッチする機会がクライアントに提供されます。 しかし、GFS は POSIX に準拠していないため、アプリケーションでは、GFS を操作するために特別な API を使用する必要があります。 Hadoop 分散ファイル システム (HDFS) は、GFS のオープンソースのバリアントです。これについては、このモジュールで詳しく説明します。
2006 年に、Ceph が初めて Weil 他によって論文に記載されました。1 Ceph は、ペタバイト単位のデータを格納しながら、数十万のコンピューターに拡張できる分散オブジェクト ストレージ サービスとして設計されています。 さらに、アプリケーションと Ceph の対話は、GFS のしくみに似たネイティブ API から、Ceph FS と呼ばれる POSIX 準拠のファイル システム API まで、さまざまな API を通じて行われます。 Ceph ではブロック デバイスの抽象化もサポートされているため、仮想マシン イメージの格納に適したファイル システムになっています。
その後、Google によって GFS が Colossus と呼ばれるシステムに進化しました3。
リファレンス
- Weil, S. A.、Brandt, S. A.、Miller, E. L.、および Maltzahn, C. (2006)。 Ceph: スケーラブルでパフォーマンスの高い分散ファイル システム 第 7 回 Symposium on Operating Systems Principles (OSDI) 307-320 の議事録
- Sanjay Ghemawat, Howard Gobioff, and Shun-Tak Leung (2003 年)。 Google ファイル システム (第 19 回) オペレーティング システムの原則に関する ACM シンポジウム
- McKusick, Kirk および Quinlan, Sean (March 2010)。 「GFS: 早送りでの進化」 ACM の通信