書類の束モデルで理解するディスク用語
ディスク周りの用語は数が多く,それぞれを個別に覚えようとして混乱してます.
そこで,本ページでは 「書類の束」モデル を使って,全体像を一貫したイメージで整理します.
全体像
ディスク(書庫)
└─ パーティション(箱)
└─ ボリューム(箱の中身)
├─ PBR(説明書)
├─ ディレクトリ(クリアファイル)
│ └─ ディレクトリエントリ(付箋)
├─ FAT(索引表)
└─ データ領域
└─ クラスタ列
└─ セクタ列
この構造をそのままストレージ用語に対応させます.
用語対応表
ディスク = 書庫全体
パーティション = 段ボール箱
セクタ = 紙1枚
ブロック = 小さな紙束(OS単位)
クラスタ = ホチキス留めの束(FS単位)
ボリューム = 箱の中身全部
ディレクトリ = クリアファイル
ディレクトリエントリ = 付箋
FAT = 索引表
PBR = 箱の説明書
1️⃣ ディスク(=書庫全体)
HDDやSSDなどの物理的な保存装置そのものです.OSは通常,これを直接扱わず,パーティションやファイルシステムを通してアクセスします.
2️⃣ パーティション(=段ボール箱)
ディスクを論理的に分割した領域です.それぞれに異なるファイルシステムを適用することができます.
3️⃣ セクタ(=紙1枚)
ディスクが扱う最小単位 です.一般的に512Bまたは4KBです.
4️⃣ ブロック(=小さな束)
OSがストレージを読み書きするときに利用する単位 です.
セクタと同じ大きさの場合もあれば,複数のセクタをまとめた大きさになる場合もあります.
クラスタとは別の概念であり,実装によって一致する場合もあれば異なる場合もあります.
5️⃣ クラスタ(=ホチキス留めの書類)
ファイルシステムが管理する単位 です.FATなどのファイルシステムでは,ファイルはクラスタの連なりとして保存されます.
6️⃣ ボリューム(=箱の中身)
ファイルシステムが作られる論理的な記憶領域です.ユーザから見た「1つのディスク」として扱われます.「Cドライブ」「Dドライブ」みたいな.
7️⃣ ディレクトリ(=クリアファイル)
ファイルやサブディレクトリを整理するための領域です.
ディレクトリの中にはディレクトリエントリが格納されています.
8️⃣ ディレクトリエントリ(=クリアファイルにつけた付箋)
ファイル本体がどこに置いてあるかを書いた付箋です.
ファイル名やサイズ,先頭クラスタなどの情報を持ちます.
ファイル本体ではなく,「場所を指す情報」である点が重要です.
9️⃣ FAT(=索引表)
クラスタ同士のつながりを管理する表です.
例えば
5 → 9 → 12 → 終了
と記録されていれば,
ファイルはクラスタ5,9,12を順番に読んで復元されます.
🔟 PBR(=説明書)
パーティションの先頭にある情報で,ファイルシステムを解釈するための情報を記録しています.
OSはこれを読み取り,「この領域をどのように解釈するか」を決定します.
ファイルを開くとき
ファイル名を探す
↓
ディレクトリエントリを読む
↓
先頭クラスタを知る
↓
FATを辿る
↓
クラスタ列を読む
↓
ファイル完成
まとめ
ディスク = 書庫
パーティション = 箱
ディレクトリ = クリアファイル
ディレクトリエントリ = 付箋
FAT = 索引表
ファイル = 書類
クラスタ = ホチキス止めの束
PBRは「この箱の読み方が書かれた説明書」です.
この対応関係を押さえておけば,FATやブロックI/Oなどの概念も同じイメージの延長として理解しやすくなります.
感想
タイトルの答え合わせは調べていてもよく分かりませんでした.
少なくとも今回整理してみて分かったのは,
- セクタはディスクが扱う単位
- クラスタはファイルシステムが扱う単位
- クラスタはセクタの集まり
ということです.
ブロックについては文脈によって実装が変わるんだなぁと.