最近、仮想化技術の一つ、xen(-3.0.3)に触っていることもあってか、
linuxを支えている基本技術をきちんと学ぼうと思っている。
(つまりはトラブってるってこと...orz )
今回は、その基本技術の1つの『ファイルシステム(FS)』について。
普段は全く気にすることは無いが、
「ディレクトリの中に、ファイルを保存する」といったファイルに関する管理をしてくれるのが、
FSと呼ばれる、アーキテクチャである。
ファイルを管理するといっても、高速性を重視したもの、クラッシュ時の復旧のしやすさを重視したもの、と、管理手法にも色々あって、
それぞれ異なったアルゴリズムやインターフェイス(API)で出来上がっている。
主なFS例
- ext2
- ext3
- iso9660
- JFS
- XFS
そのため、ユーザ側は使用しているファイルが保存されているFSが何であるかに気を配る必要が生まれてしまう。
この煩雑さを解決してくれるのが、linux(などのOS)が提供してくれている『VFS』である。
VFSは、FS毎の差異を吸収し、ユーザ側からは一元的にファイル管理できるよう、
共通関数(ex. open())を提供し、マウントされているFSの固有関数(ex. ext2_open_file())への変換をおこなってくれる。
その他にも、非同期書き込み、書き込み権限確認なども行なってくれる。
(続く)