最近、仮想化技術の一つ、xen(-3.0.3)に触っていることもあってか、
linuxを支えている基本技術をきちんと学ぼうと思っている。
(つまりはトラブってるってこと...orz )

今回は、その基本技術の1つの『ファイルシステム(FS)』について。

様々なFSとlinuxの抽象FS管理 VFS

普段は全く気にすることは無いが、
ディレクトリの中に、ファイルを保存する」といったファイルに関する管理をしてくれるのが、
FSと呼ばれる、アーキテクチャである。

ファイルを管理するといっても、高速性を重視したもの、クラッシュ時の復旧のしやすさを重視したもの、と、管理手法にも色々あって、
それぞれ異なったアルゴリズムインターフェイス(API)で出来上がっている。

主なFS例
  1. ext2
  2. ext3
  3. iso9660
  4. JFS
  5. XFS

そのため、ユーザ側は使用しているファイルが保存されているFSが何であるかに気を配る必要が生まれてしまう。
この煩雑さを解決してくれるのが、linux(などのOS)が提供してくれている『VFS』である。

VFSとは

VFSは、FS毎の差異を吸収し、ユーザ側からは一元的にファイル管理できるよう、
共通関数(ex. open())を提供し、マウントされているFSの固有関数(ex. ext2_open_file())への変換をおこなってくれる。
その他にも、非同期書き込み、書き込み権限確認なども行なってくれる。

(続く)