📖

ファイルシステムについて

に公開

はじめに

お疲れ様です。新卒1年目の新米インフラエンジニアです。
今回は、LinuxやWindowsのファイルシステムについてまとめてみることにしました。
例えば、64GBのUSBメモリを買いましたが、Windowsのファイルエクスプローラーから確認したら64GBありませんでしたとなった時に原因の一つとして考えられるのが、ファイルシステムの都合です。ファイルシステムでの捉え方が違うため、必ずしも64GBとなるとは限りません。
そんなファイルシステムについてわからない時があるので復習しておこうと思います。


Linuxのファイルシステム

ext4

現在Linuxのファイルシステムの代表としてext4があります。過去のextファイルシステムとの互換性を有しつつ、拡張されたファイルシステムです。
現代のLinuxでは、デファクトスタンダードであり、大半のLinuxではext4での読み書き、フォーマットが可能となっています。
下位互換性もあり、条件が合致すれば、ext3としてマウント、読み書きが可能です。
ファイルシステムの最大サイズは1EB、ファイルの最大サイズは16TBです。
ext4はforth extended filesystemの略、ext3はthird extended filesystemの略となります。

XFS

拡張性の高いファイルシステムで、CentOSでのデフォルトのファイルシステムです。
ファイルシステム、ファイル共に最大は8EiB(*)で、メモリなどを多く消費する代わりに、ポテンシャルが高く、全体的にも高いパフォーマンスを発揮、ファイルの読み書きが速いファイルシステムです。

* EiBは、エクスビバイトと読み、EBが10の18乗であるのに対し、EiBは2の60乗とよりハードウェアの容量に近い数値となっています。

Windowsのファイルシステム

NTFS

現状のWindowsのデフォルトファイルシステムとなっています。
ジャーナルに対応しているため障害耐性が向上しており、最大ディスクサイズは256TB、最大ファイルサイズは16TBとなっています。
また、Windows8以降では256TBと拡張されています。
Linuxでも書き込みが可能なファイルシステムとなっていますが、あくまでもWindows上のファイルシステムであるため推奨はされません。

exFAT

マイクロソフト社によって2006年に導入されたファイルシステムです。
exFATは大容量のストレージデバイスに最適化されたファイルシステムで、後述するFAT32の制限である4GBを超えるファイルサイズに対応しており、最大16EBまでのファイルを扱うことができます。

また、exFATはクラスターサイズを柔軟に設定でき、ストレージデバイスの容量に合わせて最適化が可能です。USBフラッシュドライブやSDカードなどのフラッシュドライブや大容量のデバイスでも効率的にスペースを活用できるようになっています。

マイクロソフト社が開発したファイルシステムですが、他のオペレーティングシステムとの互換性を考慮して設計されています。macOSやLinuxなどのOSでもサポートされており、異なるプラットフォーム間でのデータ交換も可能です。

その他

FAT

「File Allocation Table」の略で、最も古典的なファイルシステムとなっていて、ジャーナリングには対応しておらず、障害耐性には乏しいファイルシステムです。
対応している最大サイズはファイルシステム、ファイル共に2GBです。
利点としてはほぼ全てのOSで読み書きが可能となっている点などがあります。

また、拡張版としてFAT32があります。
130MBまでのFAT12、2GBまでのFAT16とは違い、こちらは、最大2TBまでのディスクを管理出来るようになっています。
ただし、最大ファイルサイズは基本的には2GBで打ち止めとなっています。
こちらもジャーナルには対応しておらず、障害耐性に乏しいものとなっています。

Linux環境においては、vfat msdosm zfs等もありますが今回は割愛します。

学んでみての感想、まとめ

Linux環境では、extXがデファクトスタンダードなファイルシステムだということも知っていたのですが、現行ではext4が一番メジャーな世代であること、そもそも末尾の数字は世代を表している事、条件が合えばext3としてマウントすることもできるという事など、主にLinux環境におけるファイルシステムは知らない事が沢山あるなと気づかされました。

現場でサーバー領域を担当することはないかもしれませんが、知識として入れておくこと自体は間違いではないと思うので、今回学べて良かったと思います。

出典等

【ゼロから解説】Linuxのフォーマットの方法
Linuxのファイルシステムについて
「FAT ファイルシステム」について調べてみた。
exFAT ファイルシステムの仕様
exFATとは?意味をわかりやすく簡単に解説

Discussion