Linux は、非常に多様なファイルシステム実装をサポートしています。速度に最適化されたもの、大容量ストレージに最適化されたもの、小型デバイス向けに設計されたものなどがあります。これらの異なるファイルシステムタイプはそれぞれ、データを整理する独自の方式を持っています。
仮想ファイルシステム(VFS)の役割
これほど多くの実装が利用可能であるため、アプリケーションはそれらと一貫した方法で対話する必要があります。ここで仮想ファイルシステム(VFS)が登場します。VFS は Linux カーネル内の抽象化レイヤーであり、アプリケーションとさまざまなファイルシステムとの間に位置します。単一の統一されたインターフェースを提供することで、基盤となるファイルシステムタイプに関係なく、アプリケーションがシームレスに動作することを保証します。この柔軟性により、ディスク上に複数のファイルシステムを持つことができ、多くの場合、今後のレッスンで説明するパーティションを通じて整理されます。
データ整合性のためのジャーナリング
ほとんどの最新のファイルシステムタイプには、デフォルトでジャーナリングと呼ばれる機能が含まれています。その重要性を理解するために、コンピュータの電源が突然失われたときに大きなファイルをコピーしている状況を想像してください。ジャーナリング機能のないファイルシステムでは、この中断によりファイルが破損し、ファイルシステムの状態が不整合になる可能性があります。再起動時、システムは完全なファイルシステムチェック(fsck)を実行する必要がありますが、これは大容量ディスクでは時間がかかることがあります。
ジャーナリングファイルシステムはこの問題を回避します。書き込み操作を実行する前に、意図された変更をまず特別なログファイル、つまり「ジャーナル」に記録します。操作が正常に完了すると、ジャーナルが更新され、タスクが完了したことがマークされます。クラッシュが発生した場合、システムは再起動時にジャーナルを読み取るだけで、どの操作が進行中であったかを確認し、ファイルシステムを迅速に一貫した状態に戻すことができます。これにより、復旧時間が劇的に短縮され、データ破損から保護されます。
一般的な Linux ファイルシステムタイプ
ここで、遭遇する可能性のある最も一般的なLinux ファイルシステムタイプをいくつか紹介します。
- ext4 - Linux ネイティブの拡張ファイルシステムの最新バージョンであり、多くのディストリビューションでデフォルトとなっています。先行バージョン(ext2/ext3)との後方互換性があり、非常に大きなディスクボリューム(最大 1 エクサバイト)とファイルサイズ(最大 16 テラバイト)をサポートします。ほとんどのユースケースにとって信頼できる標準的な選択肢です。
- Btrfs - 「B-tree FS」とも呼ばれ、組み込みのスナップショット、増分バックアップ、パフォーマンスの向上などの高度な機能を備えた最新のファイルシステムです。現在では安定していると見なされ、一部のディストリビューションではデフォルトになっていますが、活発な開発が続けられています。
- XFS - 大容量ファイルの処理と並列 I/O 操作に優れている高性能なジャーナリングファイルシステムです。これにより、メディアサーバーなど、大量のデータを管理するシステムにとって優れた選択肢となります。
- NTFS および FAT - これらは標準的な Windows ファイルシステムタイプです。Linux はこれらに対する読み取りと書き込みを完全にサポートしており、デュアルブートシステムで役立ちます。
- HFS+ - macOS が使用する主要なファイルシステムです。Linux はデフォルトで読み取り専用サポートを提供し、追加のツールを使用することで書き込みサポートが可能になります。
dfコマンドを使用して、お使いのマシンでどのファイルシステムが使用されているかを確認できます。
pete@icebox:~$ df -T
Filesystem Type 1K-blocks Used Available Use% Mounted on
/dev/sda1 ext4 6461592 2402708 3707604 40% /
udev devtmpfs 501356 4 501352 1% /dev
tmpfs tmpfs 102544 1068 101476 2% /run
/dev/sda6 xfs 13752320 460112 13292208 4% /home
dfコマンドはファイルシステムのディスク使用量を報告します。-Tフラグはファイルシステムタイプを具体的に表示します。このツールについては、後ほど詳しく説明します。