Linuxファイルシステム
1. ファイルシステムの概念
ファイルシステムは、オペレーティングシステムがストレージデバイスまたはパーティション上のファイルを明確にするための方法とデータ構造です。つまり、ストレージデバイス上でファイルを組織化する方法です。
オペレーティングシステムでファイル情報の管理と保存を担当するソフトウェア構造をファイル管理システム、略してファイルシステムと呼びます。
システムの観点から見ると、ファイルシステムはファイルストレージデバイスの空間を組織化し割り当て、ファイルの保存を担当し、保存されたファイルの保護と検索を行うシステムです。具体的には、ユーザーのためのファイル作成、ファイルの保存、読み取り、修正、ダンプ、アクセス制御、セキュリティ制御、ログ、圧縮、暗号化などを担当します。
現在のカーネルがサポートするファイルシステムの確認:
#rocky8.6
[root@rocky86 ~]# ls /lib/modules/`uname -r`/kernel/fs
binfmt_misc.ko.xz cifs ext4 fuse jbd2 nfs nls squashfs
cachefiles cramfs fat gfs2 lockd nfs_common overlayfs udf
ceph dlm fscache isofs mbcache.ko.xz nfsd xfs
#ubuntu22.04
root@ubuntu22:~# ls /lib/modules/`uname -r`/kernel/fs
adfs binfmt_misc.ko cramfs fat hfsplus lockd reiserfs udf
affs btrfs dlm freevxfs hpfs minix romfs ufs
afs cachefiles efs fscache isofs netfs shiftfs.ko vboxsf
autofs ceph erofs fuse jffs2 nfs nilfs2 orangefs
befs cifs exfat gfs2 jfs nfs_common nls overlayfs
ntfs pstore
ntfs3 qnx4
smbfs_common xfs
現在のシステムで利用可能なファイルシステムの確認:
#rocky8.6
[root@rocky86 ~]# cat /proc/filesystems
nodev sysfs
nodev tmpfs
nodev bdev
nodev proc
nodev cgroup
nodev cgroup2
nodev cpuset
nodev devtmpfs
nodev configfs
nodev debugfs
nodev tracefs
nodev securityfs
nodev sockfs
nodev bpf
nodev pipefs
nodev ramfs
nodev hugetlbfs
nodev devpts
nodev autofs
nodev pstore
nodev mqueue
fuseblk
nodev fuse
nodev fusectl
xfs
nodev rpc_pipefs
#ubuntu22.04
root@ubuntu22:~# cat /proc/filesystems
nodev sysfs
nodev tmpfs
nodev bdev
nodev proc
nodev cgroup
nodev cgroup2
nodev cpuset
nodev devtmpfs
nodev configfs
nodev debugfs
nodev tracefs
nodev securityfs
nodev sockfs
nodev bpf
nodev pipefs
nodev ramfs
nodev hugetlbfs
nodev devpts
ext3
ext2
ext4
squashfs
vfat
nodev ecryptfs
fuseblk
nodev fuse
nodev fusectl
nodev mqueue
nodev pstore
btrfs
nodev autofs
現在のシステムがサポートするファイルシステムと、現在のシステムで利用可能なファイルシステムは別物です。modulesにあるファイルシステムは、コンパイル時に選択された場合のみ利用可能となります。一方、利用可能なファイルシステムには、デフォルトでサポートされているファイルシステムも含まれます。特定のファイルシステムを使用する必要があるが、そのファイルシステムがprocに含まれていない場合は、カーネルを再コンパイルする必要があります。
2. ファイルシステムの種類
Linux 汎用ファイル システム
File System | Remarks | 日本語 |
---|---|---|
ext2 | Extended file system suitable for partitions that are not too large and not updated frequently, such as /boot partition | 容量が大きくなく、更新頻度も低いパーティションに適したExtended file system。例えば、/bootパーティション |
ext3 | Improved version of ext2, supports journaling, helps system recover from abnormal shutdowns | ext2の改良版。ジャーナリング機能をサポートし、異常シャットダウンからのシステム回復を支援 |
ext4 | Latest version of ext file system. Many new features including nanosecond timestamps, huge files (16TB), max 1EB file system, and improved speed | extファイルシステムの最新版。ナノ秒単位のタイムスタンプ、巨大ファイル(16TB)、最大1EBのファイルシステム、速度向上など多くの新機能を搭載 |
xfs | SGI, supports file systems up to 8EB | SGI社製、最大8EBのファイルシステムをサポート |
swap | File system dedicated to swap partitions | スワップパーティション専用のファイルシステム |
iso9660 | Optical disc file system | 光ディスクファイルシステム |
btrFS | Developed by Oracle | Oracle社が開発 |
reiserFS | - | - |
Windows 汎用ファイル システム
File System | Remarks | 日本語訳 |
---|---|---|
FAT32 | Supports file systems up to 16TB and files up to 4GB | 最大16TBのファイルシステムと最大4GBのファイルをサポート |
NTFS | Supports file systems up to 16EB and files up to 16EB | 最大16EBのファイルシステムと最大16EBのファイルをサポート |
exFAT | - | - |
注:EB(Exabyte)は1,000,000,000 GB(10の18乗バイト)です。
Unix 汎用ファイル システム
File System | Remarks | 日本語訳 |
---|---|---|
FFS | Fast File System | 高速ファイルシステム |
UFS | Unix File System. Default disk-based file system for most Unix-like operating systems | Unixファイルシステム。ほとんどのUnix系オペレーティングシステムにおけるデフォルトのディスクベースファイルシステム |
JFS2 | - | - |
注:
- FFSは「Fast File System」の略で、高速化を目的としたファイルシステムです。
- UFSは「Unix File System」の略で、多くのUnix系OSで標準的に使用されているファイルシステムです。
- JFS2についての詳細な情報が提供されていないため、備考欄は空白になっています。JFS2は通常、IBM AIXオペレーティングシステムで使用されるジャーナリングファイルシステムです。
ネットワーク 汎用ファイル システム
File System | Remarks | 日本語訳 |
---|---|---|
NFS | Network File System, allows a system to share directories and files with others over a network | ネットワークファイルシステム。ネットワーク経由でディレクトリやファイルを他のシステムと共有することを可能にする |
CIFS | Common Internet File System | 共通インターネットファイルシステム |
Notes:
- NFS is widely used in Unix-like systems for file sharing across a network.
- CIFS is the public version of SMB (Server Message Block) protocol, primarily used by Microsoft Windows for file sharing. It's designed to be an open, cross-platform technology.
These file systems are both network protocols that allow for remote file access, but they have different origins and are typically used in different environments.
クラスタ 汎用ファイル システム
File System | Remarks | 日本語訳 |
---|---|---|
GFS2 | Based on x86_64, supports file systems up to 100TB | x86_64ベース、最大100TBのファイルシステムをサポート |
OCFS2 | Oracle Cluster File System 2 | Oracleクラスターファイルシステム2 |
注:
-
GFS2(Global File System 2)は、Red Hatが開発した共有ディスクファイルシステムです。x86_64アーキテクチャ上で動作し、最大100TBのファイルシステムをサポートします。
-
OCFS2(Oracle Cluster File System 2)は、Oracleが開発したクラスターファイルシステムです。複数のノードから同時にアクセス可能な共有ディスクファイルシステムとして設計されています。
これらのファイルシステムは主にクラスター環境や大規模なデータストレージに使用されます。GFS2は特に大容量のファイルシステムに対応していることが特徴です。
distributed 汎用ファイル システム
File System | Remarks | 日本語訳 |
---|---|---|
FastDFS | Distributed file system for small files | 小規模ファイル向け分散ファイルシステム |
Ceph | Not just a file system, but an enterprise-grade object storage ecosystem | 単なるファイルシステムではなく、エンタープライズグレードのオブジェクトストレージエコシステム |
MooseFS | Fault-tolerant, network distributed file system | 耐障害性のあるネットワーク分散ファイルシステム |
MogileFS | Open source distributed file system | オープンソースの分散ファイルシステム |
GlusterFS | Scalable network filesystem | スケーラブルなネットワークファイルシステム |
Lustre | High-performance distributed file system | 高性能分散ファイルシステム |
注釈:
-
FastDFS: 主に小さなファイルの高速な保存と取得に特化しています。
-
Ceph: 非常に柔軟で拡張性が高く、ファイルシステム、ブロックストレージ、オブジェクトストレージを提供します。
-
MooseFS: 高可用性と耐障害性を重視した設計になっています。
-
MogileFS: 主にウェブアプリケーションでの使用を想定して設計されています。
-
GlusterFS: ペタバイト級のスケールアウトストレージソリューションを提供します。
-
Lustre: 主に高性能コンピューティング(HPC)環境で使用されます。
これらのシステムは全て分散ファイルシステムまたはストレージソリューションですが、それぞれ特定の用途や環境に最適化されています。
RAW
RAWファイルシステム:未処理または未フォーマットのファイルシステム
一般的なファイルシステムの特徴:
FAT32
- 最大16TBのファイルシステムと4GBのファイルをサポート
NTFS
- 最大16EBのファイルシステムと16EBのファイルをサポート
EXT3
- 理論上は最大32TBのファイルシステムと2TBのファイルをサポート
- 実際には2TBのファイルシステムと16GBのファイルまでしか対応していない
- 現在32,000個のサブディレクトリまでしかサポートしていない
- ブロック数とinode数の記録に32ビット空間を使用
- データ書き込み時、Ext3のデータブロックアロケータは一度に4KBのブロックしか割り当てられない
EXT4
- Linuxシステムのジャーナルファイルシステムで、EXT3の後継バージョン
- ファイルシステム容量は1EBまで対応し、単一ファイルは16TBまでサポート
- 理論上は無制限のサブディレクトリをサポート
- ブロック数とinode数の記録に64ビット空間を使用
- マルチブロックアロケータにより、一度の呼び出しで複数のデータブロックを割り当て可能
- より高速な修復
- 記録されたジャーナルにより、非常に短時間でディスクファイルの内容を復元可能
- 最適化されたアルゴリズムにより、ジャーナル記録が全体のファイル操作に与える影響は非常に小さい
XFS
- 完全な64ビットファイルシステムで、最大8EBのファイルシステムをサポート、単一ファイルも8EBまで対応
- ほぼ生のデバイスI/Oに近いパフォーマンスでデータを保存可能
これらの特徴は、各ファイルシステムの主要な機能と制限を示しています。選択する際は、使用目的や必要な容量、パフォーマンス要件などを考慮することが重要です。