Google File System

Google File System（GFS、GoogleFS）は、Googleが自社のシステムのために開発した分散ファイルシステムである。大規模なデータセンターに特化した、効率的で信頼性の高いシステムとして設計されている。2010年には後継のColossusというファイルシステムが利用されている。

概要
Google File System（GFS）は、同社の主要なサービスである検索エンジンや各種サービスのデータストレージとして利用されている。創業者であるラリー・ペイジおよびサーゲイ・ブリンが同社の初期に開発したデータベースであるBigFilesから発展して生まれた。通常のファイルシステムと似ており、データは64メガバイトにサイズを固定（チャンクと呼ばれる）して分割し保存される。ファイルに上書きをすることはほとんど無く、通常は追記と読み込みを中心に利用される。

オープンソースのHadoop Distributed File System（HDFS）は、GFSとほぼ同じ仕組みを採用している。

設計

Googleでは、一般的に利用されている安価な、いわゆるコモディティなパーソナルコンピュータの部品を利用して大規模なデータセンターを構築している。このため、個々のサーバーが故障してもデータが損失せず、また自動的に復旧できるシステムとして設計されている。実際にGFSは複数のサーバ（ノード）から構成される。具体的には1台のMasterノードと複数台（10-1000台）のChunkサーバーである。

クライアントもしくはアプリケーションがGFS領域にデータを書き込むことを考える。データは前述の通りチャンクに分割される。Masterノードは、チャンクが生成された時、各チャンクに64 bitのユニークなIDを付ける。その後、LinuxがインストールされたChunkノードはローカルディスクにチャンクを書き込む。この時、可用性確保のために複数の別々のChunkノードに、同じチャンクを書き込む。デフォルトでは3つのレプリカを作成する。

次に、データの読み出しを考える。Masterノードはアクセスに必要な全てのメタデータ情報をメモリ上に蓄えている。例えば、「名前空間（ディレクトリ構造）」、「アクセス権限」、「原本ファイルとチャンクの対応表」、「チャンクが保存されているサーバの場所」等である。クライアントはまずMasterノードと通信し、チャンクのIDと場所を問い合わせる。続けてクライアントはChunkサーバーに直接アクセスし、チャンクを受け取る。最終的にデータを結合して元のファイルを復元する。

このように、メタデータがメモリにあるため高速な探索が可能であること、データの読み書きはクライアントとChunkサーバー間で直接行われておりキャッシュが介在しないこと、最終的なチャンク (データ) の記録にはLinuxのファイルシステムを利用していることが特徴と言える。

データの書き込みや読み出しはAPIを通して行われ、標準的な"Write"、"Read"、"Open"、"Close"、"Delete"等の命令が揃えられている。ただし、POSIX準拠ではない。オブジェクトストレージとは異なりディレクトリ構造もある。

Masterノードはメタデータ保持以外にも、Chunkサーバーの状態を監視する役目もある。

関連事項 
 Google
 BigTable
 Spanner (データベース)
 MapReduce
 エラー忘却型コンピューティング

参照

Google
OSのファイルシステム
分散処理