ファイルシステム
データの組織化と管理
ファイルシステムとは
ファイルシステムは、データをファイルとディレクトリの階層構造で管理する仕組みです。 ブロックデバイス上のデータの配置、メタデータの管理、アクセス制御を担当します。
主要なファイルシステム
ext4
- • Linuxの標準ファイルシステム
- • 最大ファイルサイズ: 16TB、最大ボリューム: 1EB
- • ジャーナリング対応で信頼性が高い
- • エクステントベースのブロック管理
XFS
- • 大容量・高性能向け
- • RHEL/CentOS 7以降のデフォルト
- • 並列I/Oに強い
- • オンラインでの拡張が可能
Btrfs
- • 次世代ファイルシステム
- • スナップショット、RAID内蔵
- • チェックサム検証
- • 実験的機能あり(本番は注意)
ZFS
- • 高信頼性、エンタープライズ向け
- • スナップショット、圧縮、重複排除
- • Linuxではカーネルモジュールで対応
- • メモリ使用量が多い
inode
inodeは、ファイルのメタデータ(サイズ、権限、タイムスタンプ、データブロックの位置など)を 格納するデータ構造です。ファイル名はディレクトリエントリに保存され、inodeを指します。
inodeに含まれる情報
- • ファイルタイプ
- • パーミッション
- • 所有者/グループ
- • サイズ
- • タイムスタンプ(atime, mtime, ctime)
- • データブロックへのポインタ
inodeに含まれないもの
- • ファイル名
- • ファイルの内容
→ ハードリンクで同じinodeを複数の名前で参照可能
1 # inode確認 2 ls -i filename 3 4 # inode詳細 5 stat filename 6 7 # inode使用状況 8 df -i 9 10 # 特定inodeのファイル検索 11 find / -inum 12345
ジャーナリング
ジャーナリングは、メタデータの変更を先にジャーナル領域に記録し、 その後実際のファイルシステムに反映する仕組み。クラッシュ時の整合性を保護します。
data=journal
データとメタデータ両方をジャーナル。最も安全だが遅い
data=ordered
デフォルト。データ書き込み後にメタデータ
data=writeback
メタデータのみジャーナル。最も速いが危険
マウントオプション
1 # マウント 2 mount -t ext4 /dev/sdb1 /mnt 3 mount -o ro /dev/sdb1 /mnt # 読み取り専用 4 5 # 重要なマウントオプション 6 # noatime - アクセス時刻を更新しない(パフォーマンス向上) 7 # nodiratime - ディレクトリのatime更新なし 8 # noexec - 実行不可 9 # nosuid - setuidビット無効 10 # nodev - デバイスファイル無効 11 12 # /etc/fstab 例 13 # /dev/sdb1 /data ext4 defaults,noatime 0 2 14 15 # マウント確認 16 findmnt 17 cat /etc/mtab 18 19 # ファイルシステム作成 20 mkfs.ext4 /dev/sdb1 21 mkfs.xfs /dev/sdb1
SRE/インフラ観点
ファイルシステム選択
- • 一般用途: ext4(安定性重視)
- • 大容量・高I/O: XFS
- • スナップショット必要: Btrfs/ZFS
トラブルシューティング
- •
fsckでファイルシステムチェック(マウント解除必要) - •
tune2fs -lでext4のパラメータ確認 - •
xfs_repairでXFSの修復