ファイルシステムとは
- 記憶装置をファイル形式で管理するために用いられるOSの機能の一つ
- ファイルシステムがないと、データを読み出す際に「586732セクタを取ってきて」のような指示をしなければならない
- ファイルシステムは、「どこにどのデータがあるか」、「空き容量はどのくらいあるのか」など全てのデータを管理している
ファイルシステム構成
-
スーパーブロック
…… 下記の4つの領域がどこにどのくらいの容量で保存されているかを管理する領域。HDDの先頭に配置する。 -
ユーザーデータ領域
…… ユーザーが作成したデータを記録しておくための領域 -
inode管理領域(inodeテーブル)
…… ファイル、ディレクトリのメタ情報を管理する。また、ユーザデータが管理されているブロック情報も管理する領域 -
ディレクトリデータ領域
…… ディレクトリが管理するファイル名をinode番号と紐づけて管理する領域 -
空きデータ管理領域
…… inode管理領域、ディレクトリデータ領域、ユーザーデータ領域で、未使用の領域を管理する領域
inodeとは
- ファイル・ディレクトリ1つごとに作成される。
- ファイルを管理するメタデータのこと。
- 高画質の画像や動画であるとファイルサイズが1ブロックに収まらないため複数ブロックを参照する必要がある
- inodeは、数に限りがあるため、全て使うと、ファイルを作成できなくなる。詳しくは、下記資料を参照してください。
inodeにおけるメタデータとは
メタデータとして下記のものが挙げられる
-
inode番号
…… inodeを識別するためのユニークな識別番号 -
作成時間
…… ファイル及びディレクトリが作成された時間 -
ファイルの被リンク数
…… ファイルをリンク先としているファイルの数 -
最終更新時間
…… ファイルの最終更新時間 -
ユーザデータのポインタ(ブロック番号)
…… ユーザーが作成した実データがどこにあるかを示すデータ -
ファイルのパーミッション情報
…… ファイルの権限情報 -
ファイル所有者名
…… ファイルを所有するユーザー名 -
ファイル所有者の所属グループ
…… ファイルを所有するグループ名
##ディレクトリデータ領域
ディレクト内のファイル名とそのファイルのinode番号を紐づけた状態で管理する領域
実際の挙動
Hello Worldと記述されたfile1.txtを catコマンドで出力する場合の挙動は下の図のようになる
1.ディレクトリデータ領域から、ファイル名と紐づいているinode番号を取得
2.inode領域に取得したinode番号を探す
3.inode番号に紐づく、ブロック番号を取得
4.取得したブロック番号を参照
5.出力
参考資料