操作

Google File System

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

概要

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

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

設計

ファイル:GoogleFileSystemGFS.svg
Google File Systemの構成

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

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

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

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

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

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

関連事項

参照

  1. 英語版Wikipediaより
  2. Colossus: Successor to the Google File System (GFS)”. . 2018-1-1閲覧.
  3. 英語版Wikipediaより
  4. 4.0 4.1 4.2 The Google File System”. . 2018-1-1閲覧.
  5. 5.0 5.1 GFS: The Google File System”. . 2018-1-1閲覧.

テンプレート:ファイルシステム