Google File System (GFS 、GoogleFS )は、Google が自社のシステムのために開発した分散ファイルシステム である。大規模なデータセンター に特化した、効率的で信頼性の高いシステムとして設計されている[ 1] 。2010年には後継のColossus というファイルシステムが利用されている[ 2] 。
概要
Google File System(GFS)は、同社の主要なサービスである検索エンジン や各種サービスのデータストレージとして利用されている。創業者であるラリー・ペイジ およびサーゲイ・ブリン が同社の初期に開発したデータベース であるBigFilesから発展して生まれた[ 1] 。通常のファイルシステム と似ており、データは64メガバイト にサイズを固定(チャンクと呼ばれる)して分割し保存される。ファイルに上書きをすることはほとんど無く、通常は追記と読み込みを中心に利用される。
オープンソース のHadoop Distributed File System(HDFS) は、GFSとほぼ同じ仕組みを採用している。
設計
Google File Systemの構成
Googleでは、一般的に利用されている安価な、いわゆるコモディティなパーソナルコンピュータ の部品を利用して大規模なデータセンターを構築している。このため、個々のサーバーが故障してもデータが損失せず、また自動的に復旧できるシステムとして設計されている。実際にGFSは複数のサーバ (ノード )から構成される[ 3] 。具体的には1台のMasterノードと複数台(10-1000台[ 4] )のChunkサーバーである。
クライアント もしくはアプリケーション がGFS領域にデータを書き込むことを考える。データは前述の通りチャンクに分割される。Masterノードは、チャンクが生成された時、各チャンクに64 bitのユニークなIDを付ける[ 3] 。その後、Linux がインストールされたChunkノードはローカルディスクにチャンクを書き込む。この時、可用性 確保のために複数の別々のChunkノードに、同じチャンクを書き込む。デフォルトでは3つのレプリカを作成する。
次に、データの読み出しを考える。Masterノードはアクセスに必要な全てのメタデータ 情報をメモリ 上に蓄えている[ 4] 。例えば、「名前空間(ディレクトリ構造)」、「アクセス権限」、「原本ファイルとチャンクの対応表」、「チャンクが保存されているサーバの場所」等である。クライアントはまずMasterノードと通信し、チャンクのIDと場所を問い合わせる。続けてクライアントはChunkサーバーに直接アクセスし、チャンクを受け取る。最終的にデータを結合して元のファイルを復元する。
このように、メタデータがメモリにあるため高速な探索が可能であること、データの読み書きはクライアントとChunkサーバー間で直接行われておりキャッシュ が介在しないこと、最終的なチャンク (データ) の記録にはLinuxのファイルシステムを利用していることが特徴と言える。
データの書き込みや読み出しはAPI を通して行われ[ 3] 、標準的な"Write"、"Read"、"Open"、"Close"、"Delete"等の命令が揃えられている。ただし、POSIX 準拠ではない。オブジェクトストレージ とは異なりディレクトリ 構造もある。
Masterノードはメタデータ保持以外にも、Chunkサーバーの状態を監視する役目もある。
関連事項
参照
^ a b 英語版Wikipediaより
^ “Colossus: Successor to the Google File System (GFS) ”. 2018年1月1日 閲覧。
^ a b c “The Google File System ”. 2018年1月1日 閲覧。
^ a b “GFS: The Google File System ”. 2018年1月1日 閲覧。
ディスク
ネットワーク型 特殊用途
その他
カテゴリ