前回は,ファイル・システムの概要とLinuxのファイル・システム機構について解説しました。アプリケーションなどで作成したデータはハード・ディスクなどの記録媒体にファイルとして保存しますが,実際にはファイルの形ではなく,データ・ブロックの形式に変換されて記録されます。この変換を行うのがカーネルのファイル・システム機構です。データ変換方式の違いにより,さまざまなファイル・システムが存在します。

 Linuxのファイル・システム機構は,図1のように階層化されています。VFS(Virtual File System)というレイヤーを用意することで,さまざまな種類のファイル・システムを統一的に利用できるよう工夫されているのが特徴です。各ファイル・システム特有の処理は,「ローカル・ファイル・システム」と呼ばれる部分が担当します。

図1●ファイル・システムとは何か
図1●ファイル・システムとは何か
ファイルという人間が扱いやすいデータ形式と,ブロックとの対応を管理し,相互変換するのがファイル・システムの役割です。

 今回はローカル・ファイル・システムの例として,Linuxで標準的に利用されているext2ファイル・システムを解説します。ファイルやディレクトリという構造がext2ではどのようにデータ・ブロックとして保存されているかを見てみましょう。

ext2ファイル・システム開発の経緯

 ext2ファイル・システムは,Linux用に設計されたファイル・システムです。UNIXの伝統的なファイル・システム*1である「FFS」(Fast File System)を参考に設計されており,構造がよく似ています。シンプルな構造である半面,いくつか構造上の欠点も持っています。

 Linuxの開発初期は,教育用の小規模UNIX系OS「MINIX」の標準ファイル・システム(MINIXファイル・システム)を利用していました。しかし,MINIXファイル・システムには,最大64Mバイトまでのディスク区画しか扱えない,ファイル名の最大長が32文字などの制限があり,本格的な利用には力不足でした。そこで,さまざまな拡張を取り入れたLinuxネイティブのファイル・システム「extファイル・システム」が開発されたのです。

 しかし,extファイル・システムには性能面で問題があり,すぐに改良を施したext2ファイル・システムが1994年に開発されました。それ以後今日まで,Linuxではext2ファイル・システムが標準ファイル・システムとして利用されています*2

この先は会員の登録が必要です。有料会員(月額プラン)は初月無料!

日経 xTECHには有料記事(有料会員向けまたは定期購読者向け)、無料記事(登録会員向け)、フリー記事(誰でも閲覧可能)があります。有料記事でも、登録会員向け配信期間は登録会員への登録が必要な場合があります。有料会員と登録会員に関するFAQはこちら