UNIX/Linuxの部屋 用語集:ファイルシステム

TOP UNIX/Linuxの部屋 UNIX/Linuxコマンド一覧 用語集 新版 由来/読み方辞書 環境変数マニュアル Cシェル変数 システム設定ファイル システムコール・ライブラリ ネットワークプログラミングの基礎知識 クラウドサービス徹底比較・徹底解説




用語集 ファイルシステム UFS・ext2・ext3・FAT などの解説 このエントリーをはてなブックマークに追加

最終更新


ファイルシステムとは、HDD ・SSD・フロッピーディスク・CD-ROM などのどこにどのようなデータが格納されているかを管理する仕組みである。UNIX/Linux では ufs・ext3・ext4・zfs などのファイルシステムがある。



ファイルシステムの概要
生産されたばかりのディスクは白紙のノートのようなものだと思えばよい。罫線もなければページ番号もない。このままでも利用できなくはないが、不便である。ファイルシステムを作成するということは、白紙のノートに罫線やページ番号を記入するようなものである。

ファイルシステムには多くの種類があり、それぞれ
  • ファイル名の長さ
  • 格納できるファイル数
  • 最大ファイルサイズ
  • パーミッションなどの付属情報を格納できるかどうか
などが異なる。先ほどのノートの例で言えば、各ページの左上に日付記入欄があるノートもあれば、そのような欄がないノートもある、と言ったところか。

以下、UNIX/Linu 界隈で使われる主なファイルシステム一覧を紹介する。

UNIX 界隈で使用されるファイルシステム
UFS
UNIX File System。UNIX 初期のファイルシステム。
FFS
4.2BSD において開発された Fast File System。UFS のブロックサイズを倍にしたもの。
FFFS
4.4BSD において機能拡張された Fat Fast File System。FFS の後継。この FFFS が現在でも各種 UNIX のベースとなっている。まぎらわしいことに、この FFFS を指して UFS・FFS などの呼称が使われることが非常に多い。
UFS2
FreeBSD 5.0 において FFFS を機能拡張したファイルシステム。64bit 拡張を行なったため、1TB を越えるファイルシステムを構築可能。FreeBSD・NetBSD 界隈で使用されている。ファイルサイズ以外は UFS とほぼ同じ。これを UFS と呼ぶことも多い。
ZFS
Solaris10 で採用となったファイルシステム。ウリは 128bit のためエクサバイトレベルまでのサイズを扱えること、チェックサムによる訂正機能、RAID 機能を持つ、超高速なスナップショット機能と、ロールバック機能、などなど。当初は Sun Microsystems による開発であったが、現在は OpenZFS としてオープン化されている。

Linux 界隈で使用されるファイルシステム
ext2
Linux 界隈で使用されている。
ext3
Linux 界隈で使用されている。ext2 の後継。
  • ジャーナルファイルの採用により fsck に要する時間が短縮されている
  • ext2 より速い
などの利点はあるが、基本的には ext2 と同じである。2038年問題を持つ。
ext4
Linux 界隈で使用されている。ext3 の後継。
後方互換性を確保しつつ、ファイルサイズの拡張、最大ボリュームの拡張、高速化、2038年問題の解消などを行なった (が、ext4 は 2514年までらしい)。
XFS
SGI が開発したジャーナルファイルシステム。

Windows 界隈で使用されるファイルシステム
FAT
いわゆる MS-DOS フォーマット。8.3 形式のファイル名。1 クラスタのビット数により FAT12・FAT16・FAT32 という種類が存在する。

FAT12
クラスタのビット数が 12 ビット。よって、扱えるファイル数は 2^12=4096 弱である。そもそもはフロッピーディスク向けに作成されたファイルシステムなので、仕方があるまい。
FAT16
ファイルサイズの上限は 2GB。
FAT32
Windows 95 OSR2 でサポート。ファイルサイズの上限は 4GB。
VFAT
Windows 95 で採用されたファイルシステム。FAT のファイル名の 8.3 制限をなくして 255 文字までのファイル名を使用することができる。これを LFN (Long File Name) 拡張と呼ぶ。なお、VFAT (Virtual FAT) という名前の通り、実際には VFAT は仮想的なレイヤであり、実際にディスクに記録されるときには FAT に変換される。

つまり、
  • Windows95 では OS は VFAT のレイヤを挟んで FAT16 を操作している。
  • Windows95 OSR2 では OS は VFAT のレイヤを挟んで FAT32 を操作している。
ということだ。しかし FAT16 や FAT32 では 8.3 形式のファイル名しか扱えないため、実際には FAT 上に隠しファイルを作成し、その上に LFN 情報を格納するという、かなり無理矢理な方法をとっている。
NTFS
Windows NT で採用されたファイルシステム。ようやく FAT のしがらみを取り去った。UNIX のようなファイル属性を管理できる。

CD-ROM
ISO9660
CD-ROM 用のファイルシステムのための規格。ISO9660 には Level 1・2・3 という 3 つのレベルがある。Level 3 が制限が緩く (高機能)、Level 1 が最も制限が厳しい (低機能)。

Level 3
  • ファイル名の長さは 31 文字まで。
  • ファイル名には必ず「.」を含めなければならない。
  • ファイル名に使用できる文字は英大文字・数字・アンダーバー。
  • ディレクトリ階層の深さは 8 段まで。
Level 2
  • 1つのファイルは、連続したブロックに記録されていなければならない
  • ファイルを複数のセクションに分割しない。
  • それ以外は Level 3 と同じ。
Level 1
  • ファイル名は 8.3 形式。

しかし最も高機能な Level 3 でさえも実用のファイルシステムとしては機能が足りなさすぎる。そこで以下のような拡張方式が存在する。

ISO9660 RockRidge 拡張 (RockRidge Extension)
おもに UNIX 方面で使用される ISO9660 の拡張方式。UNIX のパーミッション・オーナー・グループなどを記録できる。
ISO9660 Joliet 拡張 (Joliet Extension)
おもに Windows 方面で使用される ISO9660 の拡張方式。

FreeBSD や Linux では RockRidge 拡張・Joliet 拡張に対応しており、
  • RockRidge 拡張で記録された CD-ROM は RockRidge 拡張でマウント。
  • そうでないなら、Joliet 拡張で記録された CD-ROM は Joliet 拡張でマウント。
  • そうでないなら、ISO9660 でマウント。
という挙動をするようになっている。よって、この辺の拡張方式についてはあまり気にする必要はないだろう。

関連コマンド等
ファイル名・ディレクトリ名などの最大サイズ・ファイル数上限などの細かな情報は「ファイル制限まとめ」の項を参照。

マウントする際、ファイルシステムの種類を指定する。

df コマンドで現在マウントされているファイルシステム一覧を表示できるが、-T オプションをつけるとファイルシステムの種類を表示する。

Linux での例:
% df -T
Filesystem     Type  1K-blocks     Used Available Use% Mounted on
/dev/vda3      ext4  100762004 48285348  47351488  51% /
tmpfs          tmpfs    509976        0    509976   0% /dev/shm
/dev/vda1      ext4     243823    77269    153754  34% /boot

FreeBSD での例:
% df -T
Filesystem          Type  1K-blocks     Used    Avail Capacity  Mounted on
zroot/ROOT/default  zfs    84263060  1271260 82991800     2%    /
devfs               devfs         1        1        0   100%    /dev
zroot/tmp           zfs    82991896       96 82991800     0%    /tmp
zroot/usr/home      zfs    93029100 10037300 82991800    11%    /usr/home
(略)