I-8-6. ファイルシステムの操作

ファイルシステムの概念や構造、ファイルシステムの種類と各ファイルシステムの特徴について説明し、複数のディスクブロックをひとつのツリーとして扱う考え方とその方法を解説する。またディレクトリをプログラムから操作する方法や特殊なディレクトリについて説明する。

【学習の要点】

* ファイルシステムとは、コンピュータ内にある資源の操作や保護を実現する仕組みである。

* ファイルシステムは、木構造となっている。

* ファイルシステムの種類としては、ext2,ext3などが存在する。

図I-8-6. ファイルシステムの操作

【解説】

1) ファイルシステムの概念と構造

ファイルシステムは、ファイルやディレクトリなどコンピュータ内部にある資源を操作したり保護したりするための仕組みである。

* ファイルシステムの中に存在するもの。

データを保持するためのファイル、ディレクトリファイル、スペシャルファイルなどがある。

* ファイルシステムに関する情報の収集方法。

statfs関数により、スーパーブロック等の情報取得が可能である。

* ファイルシステムの使用方法。

ディスク上のパーティションを任意のディレクトリにmount・umountすることで、ファイルシステムへの追加や削除が可能となる。

mountするディレクトリのことをマウントポイントと呼ぶ。全てのマウントポイントの情報は、/etc/fstabファイル内に格納される。

* ファイルシステムの構造

ファイルシステムは、逆さまの木構造となっている。最上位には”/(ルート)”ディレクトリが存在し、その下には木の枝が伸びるように様々なディレクトリが用意されている。

ディスク内のパーティションがマウント済みの状態である場合、親のディレクトリや配下のディレクトリ(子供のディレクトリ、サブディレクトリなどと呼ぶ)は異なるパーティションにある可能性もある。ファイルシステムにより、データが複数のパーティションに分割されていることをユーザが意識せずに、操作を行うことが可能となる。

* ファイルシステムの種類

FAT,ext2,ext3,ReiserFS,NTFSなどが存在する。

* ファイルの管理方法

ext2/ext3ファイルシステムでは、ファイルを管理する場合にiノードと呼ばれる機能を利用している。iノードには個々のファイルの詳細情報が収められており、iノードテーブルと呼ばれる領域に納められている。個々のファイルにはiノード番号と呼ばれる情報があり、iノードテーブル内の場所を示している。

2) プログラムからの操作

プログラムから、個々のディレクトリへアクセスを行う場合には、以下に示す関数を使用する。

* ディレクトリのオープンとクローズ

opendir,closedir

* ディレクトリの読み込みと関連する関数

readdir,telldir,seekdir

3) 特殊ディレクトリ

ファイルシステムの中には、/procという名称の特殊ディレクトリが存在する。

* /procディレクトリは、実際にディスク上に作成されるディレクトリやファイルではなく、カーネルの認識している情報をファイルシステムのインタフェースを介して参照するための仮想ファイルシステムである。