分散ファイルシステム

ウィキペディアから無料の百科事典

分散ファイルシステム (distributed file system) またはネットワークファイルシステム (network file system) とは、複数のホストがコンピュータネットワークを経由して共有しつつファイルにアクセスすることを可能にするファイルシステムである[1]。複数のマシン上で複数のユーザーがファイルやストレージ資源を共有できるようにする。

クライアントノードはファイルシステムを構成している二次記憶装置に直接アクセスすることはできないが、通信プロトコルを使ってネットワーク経由でやり取りする。その通信プロトコルがどう設計されているかにもよるが、アクセスリストまたはケーパビリティに基づいてクライアントとサーバの双方でファイルシステムへのアクセスを制限することも可能である。

これに対してクラスタファイルシステム英語版では、全ノードがファイルシステムを構成しているストレージ全体に一様に直接アクセスできる。その場合、アクセス制御はクライアント側の責任となる。

分散ファイルシステムには一般に、透過的レプリケーションフォールトトレラント性に関する機能がある。すなわち、ファイルシステムを構成するノード群の一部がオフラインになっても、データを失うことなくシステムとして機能し続ける。

分散ファイルシステムと分散データストアの違いはあいまいだが、分散データストアは一般にLANでの利用に特化していることが多い。

歴史と具体例[編集]

このようなファイルサーバは1970年代に開発された。1976年、DECDECnet Phase II の一部である Data Access Protocol 実装として File Access Listener (FAL) を開発したのが、世界初の広く使われたネットワークファイルシステムとなった。1985年、サン・マイクロシステムズが世界初の広く使われる Internet Protocol ベースのネットワークファイルシステムとなる Network File System (NFS) を開発した。他のネットワークファイルシステムとしては、Andrew File System (AFS) や Apple Filing Protocol (AFP)、NetWare Core Protocol (NCP)、Server Message Block (SMB)がある。

透過性[編集]

分散ファイルシステムは透過性を備えていることが多く、プログラムやユーザーから見ればネットワーク経由のファイルがローカルディスク上のファイルと全く同じに扱える。サーバや記憶装置の多様性と分散は隠蔽される。ファイルの配置やデータ転送はファイルシステムに任されている。

性能[編集]

ネットワークファイルシステムでは、処理にかかる時間も重要な課題である。通常のファイルアクセスならば、これはディスクアクセス時間と少しのCPU処理時間に相当する。ネットワークファイルシステムでは、分散構造であるが故の余分なオーバヘッドが必要となる。このオーバヘッドには、サーバに要求を届けるまでの時間、応答をクライアントまで戻すのにかかる時間などが含まれる。どちらの方向も情報転送時間だけでなく、通信プロトコルソフトウェアの実行にかかるCPU時間が含まれる。ネットワークファイルシステムの性能もある意味でネットワークファイルシステムの透過性の一部と言える。すなわち、理想的なネットワークファイルシステムの性能はローカルなディスクアクセスと同程度になる。

同時ファイル更新[編集]

ネットワークファイルシステムは複数のクライアントプロセスが同じファイルを同時に更新できるようにしなければならない。あるクライアントのファイル更新によって別のクライアントの参照や更新が妨害されてはならない。そのため並行性制御ロックをファイルシステムに組み込むか、追加プロトコルに組み込む必要がある。

分散データストア[編集]

分散データストアDistributed Data Store)とは、ユーザーが自身の情報を複数のノードに格納しておくことを指す概念で、分散データベースとして実装される場合と複数のユーザーがP2Pネットワーク上で情報を格納する場合がある。

分散データベース[編集]

分散データベースとしての分散データストアは関係データベースではなく、多数のノードがあるデータに素早くアクセスできる。例えば、GoogleBigTableがあるが、これは分散ファイルシステムあるいはP2Pネットワークに近い[2]。他にも、Amazon.comDynamo[3]Windows Azure Storage[4] などがある。

任意のクエリを可能にすることは可用性ほど重要視されないので、分散データストアは一貫性を犠牲にして可用性を向上させる設計を採用することが多い。しかし、高速な読み書きを可能にすると一貫性が低下するので、CAP定理で証明されている通り、一貫性、可用性、分断耐性を同時に保証することはできない。

P2Pネットワークによるデータストア[編集]

P2Pネットワークのデータストアでは、ユーザーは互いに自らのコンピュータをストレージノードとして提供し、同時に他者のコンピュータをストレージノードとして利用する。ある情報に他のユーザーがアクセスできるかどうかはネットワークの設計に依存する。

多くのP2Pネットワークは、各ユーザーのノードが常にネットワーク上にあるわけではないため、分散データストアを持たない。しかし、BitTorrentなどのシステムではこの区別があいまいとなる。というのも、あるノードがオフラインになってもその内容が相変わらず提供され続けるようになっているためである。なお、これは個々のファイルが再配布者に要求された場合であり、全てのコンピュータが全てのファイルを提供するようになっているFreenetなどのネットワークとは対照的である。

分散データストアでは、誤り検出訂正技法がよく使われる。場合によっては、ファイルの一部が壊れていた場合に前方誤り訂正技法で修復する。そうでない場合は、異なるミラーサイトから同じファイルを再度ダウンロードする。

主なプロトコル[編集]

分散ファイルシステムは、レプリケーションによるフォールトトレラント性強化を目指したもの、並列化による性能強化を目指したもの、両方を同時に実現しようと設計されたものがある。

分散ファイルシステム[編集]

分散フォールトトレラントファイルシステム[編集]

分散並列ファイルシステム[編集]

分散並列フォールトトレラントファイルシステム[編集]

SAN/クラスタファイルシステム[編集]

分散データストア[編集]

分散データベース[編集]

P2Pネットワークによるデータストア[編集]

脚注[編集]

  1. ^ Silberschatz, Galvin (1994). Operating System concepts, chapter 17 Distributed file systems. Addison-Wesley Publishing Company. ISBN 0-201-59292-4.
  2. ^ BigTable: Google's Distributed Data Store”. http://the-paper-trail.org/:+ Paper Trail. 2011年4月5日閲覧。 “Although GFS provides Google with reliable, scalable distributed file storage, it does not provide any facility for structuring the data contained in the files beyond a hierarchical directory structure and meaningful file names. It’s well known that more expressive solutions are required for large data sets. Google’s terabytes upon terabytes of data that they retrieve from web crawlers, amongst many other sources, need organising, so that client applications can quickly perform lookups and updates at a finer granularity than the file level. [...] The very first thing you need to know about BigTable is that it isn’t a relational database. This should come as no surprise: one persistent theme through all of these large scale distributed data store papers is that RDBMSs are hard to do with good performance. There is no hard, fixed schema in a BigTable, no referential integrity between tables (so no foreign keys) and therefore little support for optimised joins.”
  3. ^ Sarah Pidcock (2011年1月31日). “Dynamo: Amazon’s Highly Available Key-value Store”. http://www.cs.uwaterloo.ca/:+ WATERLOO. p. 2/22. 2011年4月5日閲覧。 “Dynamo: a highly available and scalable distributed data store”
  4. ^ Windows Azure Storage” (2011年9月16日). 2011年11月9日時点のオリジナルよりアーカイブ。2011年11月6日閲覧。
  5. ^ ChironFS - A filesystem must go on, even if it is hurt”. Furquim.org. 2012年6月15日閲覧。
  6. ^ The Plasma Project”. Plasma.camlcity.org (2011年10月2日). 2012年6月15日閲覧。
  7. ^ pNFS”. 2012年7月6日閲覧。
  8. ^ tahoe-lafs”. Allmydata.org. 2012年6月15日閲覧。

関連項目[編集]

外部リンク[編集]