Linuxのファイルシステムの基本構造を理解する
LinuxやUNIX系のOSでは、すべてが「ファイル」として扱われます。
この世界観を支えているのが「ファイルシステム」という仕組みです。
今回は、以下のような疑問に答える形で、Linuxのファイルシステムの構造についてわかりやすく解説します。
- ファイルシステムってなに?
- inodeって何をしてるの?
- マウントってなぜ必要?
ファイルシステムとは?
ファイルシステムは、ストレージ(HDDやSSDなど)上にデータを整理して格納・操作するための仕組みです。
たとえば、以下のような役割を担っています:
- データをどこに保存するか決める
- ファイル名や作成日時などの情報を保持する
- ファイルやディレクトリを操作できるようにする
Linuxでは ext4
, xfs
, btrfs
などのファイルシステムがよく使われます。
ファイルシステムの内部構造
Linuxのファイルシステム(例:ext4)は、次のような領域に分かれています。
🔹 ブートブロック(Boot Block)
- ディスクの先頭に位置します。
- OSの起動に必要な情報が記録されています(MBR:マスターブートレコードなど)。
- ブートローダーなどがここに入っています。
🔹 スーパーブロック(Superblock)
- ファイルシステムの設定情報を保持する領域です。
- 例:
- 使用されているファイルシステムの種類(ext4など)
- ファイルシステム全体のサイズ
- 使用可能なinodeやブロック数 など
🔹 inodeテーブル
- すべてのファイルやディレクトリに対して1つのinodeが対応します。
- inode(index node)にはファイルに関する詳細情報が格納されています。
inodeに含まれる情報例:
情報項目 | 説明 |
---|---|
ファイルのID(inode番号) | 一意にファイルを識別 |
所有ユーザーID(UID) | 誰が所有しているか |
所属グループID(GID) | グループ権限情報 |
作成日時・更新日時 | 各タイムスタンプ |
アクセス権限(パーミッション) | 誰が読める/書けるか |
ファイルサイズ | バイト単位 |
データブロックへのポインタ | 実際のデータ位置 |
⚠️ inodeには「ファイル名」は含まれていません!
ファイル名はディレクトリエントリと対応づけられています。
🔹 データブロック(Data Block)
- 実際のファイルの中身(本文)や、ディレクトリの情報が格納される領域です。
- ファイルの実体そのものがここにあります。
マウントとアンマウントとは?
Linuxでは、USBメモリや外部HDDなどをそのままでは操作できません。
ファイルシステムに組み込む必要があります。それが「マウント」です。
🔹 マウント(mount)
- 認識されたデバイスを、ファイルシステムに接続する作業です。
- 指定したディレクトリにストレージを結びつけ、操作可能にします。
sudo mount /dev/sdb1 /mnt/usb
上記は /dev/sdb1 を /mnt/usb にマウントする例
🔹 アンマウント(umount)
マウントしたデバイスを切り離す操作です。
書き込みが完了していない場合があるので、正しくアンマウントしないとデータが壊れることがあります。
sudo unmount /mnt/usb