データベースで使われるKVSの仕組みをそのままファイルシステムに使ったら? okuyamaの開発者たちがファイルシステムを実装してみたらこうなった。
このたび、3回にわたって筆者が開発している分散キーバリューストア(以下KVS)「okuyama」を使って実装したファイルシステムokuyamaFuseという内容で連載を執筆する岩瀬です。どうぞよろしくお願いします。
キーバリューストアでファイルシステム??
いまいちピンとこないと思いますが、ごく簡単に紹介すると「ファイルシステムに保存されるデータが全てKVSに保存されている」というものです。なぜKVSでファイルシステムを作ることにしたのか、本連載ではその背景から、具体的な実装の仕組み、性能、使い方までを紹介します。
本稿ではまず、本題である「okuyamaFuse」を紹介する前に、そもそもファイルシステムとは何か、という点について少しおさらいをしておきましょう。
ファイルシステムをすこし堅めの言葉で表現するならば「記憶装置に記録されているデータを管理する方式」と言えます(注1)。
日々読者の皆さんが使われているものでいうとWindowsであればNTFSですし、LinuxであればExt3、Ext4、xfsなどです。以下はWikipediaに載っていたファイルシステムの一覧ですが、すごく多くの種類があることが分かります。
注1 ここではIT用語辞典 e-Wordの定義を引用しています。
表1を見ても分かるように、ファイルシステムの種類はいろいろとありますが、「記憶装置に記録されているデータを管理する」という同じ目的で開発されたものです。では、具体的にどういった仕組みなのかを改めて見ていきましょう。
ファイルシステムはコンピュータを使う上であまりに身近なものであるために普段仕組みまで意識することは少ないと思います。しかし、皆さんも知らず知らずのうちに複数のファイルシステムを使われていると思います。一番身近なファイルシステムは、皆さんが使っているPCに搭載されているローカルのファイルシステムでしょう。会社などであれば、ファイルサーバなどの、ネットワーク越しに操作可能なNASが導入されていたりもするでしょう。NASであれ、ローカルのファイルであれ、ユーザーの皆さんから見ると同じような操作で扱えます。
では、なぜ明らかに異なるこういった仕組みを同じような操作で扱えているのでしょう。
それは、ファイルシステムが利用ユーザーと実際にデータを保存する記憶装置の間を取り持ち、決められた操作のみを利用ユーザーに提供しているからです。現在、最も主流な記憶装置はハードディスク(以下、HDD)ですが、普段HDDがどのようにデータを記録しているかは気にしないことがほとんどです。
Windows環境であれば、エクスプローラでファイルをコピーすれば同じデータを簡単に複製でき、HDD上でもきっちり実態となるデータが複製されています。このように、ファイルシステムは、主にユーザーの動作を記憶装置の動作に変換する役目を担っています。
ユーザーの動作と記憶装置の間をつなぐ役割を果たすファイルシステムは、実際には記憶装置上でどのようにデータを管理しているのでしょうか? ここでは記憶装置を「配列」に例えて簡単に仕組みを紹介してみます。
Copyright © ITmedia, Inc. All Rights Reserved.