Linux環境で一般的なファイルシステムの特徴を理解する

Linux環境で一般的なファイルシステムの特徴を理解する

ファイルシステムは、ハードディスクなどの記憶装置のどこにどんなデータが記録されているかを管理する仕組みです。Windowsで言うところのFAT32やNTFSにあたります。

Linuxでは、標準ファイルシステムとしてext2が長く使われてきました。その後、ext3、ext4へと進化してきています。また、CentOS 7やRHEL7ではXFSが標準ファイルシステムとして採用されています。

普段、LinuxやWindowsを使っていて、ファイルシステムについて気にすることはほとんどありませんが、Linuxのメジャーなファイルシステムについて、簡単にまとめてみました。

ext2(second extended filesystem)

ext2は、初期のLinuxから標準ファイルシステムとして長く使われていたファイルシステムです。

ext3(third extended file system)

ext3は、ext2と高い互換性を持つことを目指して作られたファイルシステムで、ext2からの追加機能のひとつにジャーナリング機能があります。

ジャーナリング機能とは、ファイル操作を行なう際に、実際のデータ領域を更新する前に更新内容をジャーナルと呼ばれるログに記録しておき、その記録が完了してから、実際のデータを更新し、最後にジャーナルログを破棄するという手順を取ることで、データの一貫性を保つための機能です。

ext4(fourth extended file system)

ext4は、ext3の後継ファイルシステムで、より大きなボリュームサイズとファイルサイズを取り扱えるようになっています。

また、コンピュータの取り扱うデータ量の増加にしたがい、ext2やext3でのブロック単位の管理方式では効率が悪くなってきたことから「連続した任意の数のブロック(エクステント)」を単位としてデータを管理する方式が採用されています。これにより、大きなファイルに対するパフォーマンスが改善されています。

XFS

XFSは、もともと旧SGI(Silicon Graphics Inc.)社がIRIX上で動くハイエンド向けのファイルシステムとして開発していました。

ext2、ext3、ext4との大きな違いは、XFSは初期段階からスケーラビリティを考慮し、ハイエンドシステムをターゲットとしていたことです。XFSがRHEL7の標準ファイルシステムとして採用されたのは、ext系ファイルシステムではスケーラビリティの限界が見えつつあったことも一因としてあるようです。

また、XFSに対して使用するコマンドは、多くがext系のファイルシステムとは異なるため注意が必要です。

あとがき

LinuxやWindowsを使っていて、クライアントやサーバーによらずファイルシステムについて気にすることはほとんどない思いますが、どんなファイルシステムがあるのかなど、ざっくりでも知っておくと、いざというときに役立つかもしれません。