Linux と Windows を交互に使う環境下でオフラインストレージにデータをバックアップするとき、どのファイルシステムを使うか悩むことが多い。ファイルシステムによっては Windows では読み込めなかったりするからだ。本ページではそれぞれのファイルシステムが異なる OS でどのような問題があるのか、クロスプラットフォーム性について浅堀していく。
先に結論を言ってしまうと自分の環境では NTFS が最適解ということになった。
安定性と利便性
以下のような理由で利便性と安定性の観点から exFAT か NTFS に絞られた。
Ext4 (Fourth Extended)
Linux のデフォルトFS(ファイルシステム)として長らく使われてきた。高度なジャーナリング機能を有し、ファイルが破損した場合、復旧できる可能性がある。
速度、安定性ともに申し分なしで素晴らしいが、 Windows OS でマウントするにはソフトウェアをインストールしなけらばならず一手間かかる。何よりこの手の Windows サードパーティソフトは信頼性に欠ける。定番ソフトである Ext2Fsd でさえうまく認識できないこともある。macOS でもサードパーティ製ツールが必要。
FAT32 (File Allocation Table 32)
太古の Windows で標準FSとしてつかわれていた。USBメモリやSDカードなどのリムーバブルメディアで広く使われている。
Windows / Linux / macOS など、何もせずともほぼ全ての OS 認識される万能フォーマットだが 4 GB 以上の単一ファイルを扱えない。デカイファイルを保存するには分割する必要がある。読み書き速度は遅い。ジャーナリング機能がないのでファイルの復旧など困難。
exFAT (Extended File Allocation Table)
FAT32 の欠点を克服するために外部ストレージ向けに Microsoft が開発した FS。 Windows / Linux / macOS など、何もせずともほぼ全ての OS 認識される万能フォーマット。単一ファイルは 128PB まで対応、ボリュームサイズは 128PB までサポートする。シンプルな FS なのでオーバーヘッドが少なく高速な書き込みができる。ジャーナリング機能なし。
NTFS (New Technology File System)
Windows NT 系の標準ファイルシステム。現代の Linux ディストリビューションは大体インストール直後からコイツを マウントできる。できなくてもパッケージをインストールことでものの数分で対応できる。読み書きの速度はそこまで早くないが FAT32 よりはマシ。ジャーナリング機能あり。
XFS (eXtents File System)
そもそもどうやってコイツを Windows でマウントするんだ。
文字コードの問題
OS間でファイルを共有するとファイルシステムの違いでファイル名のエンコードがうまくいかないことがある。このときに文字化けが起こってしまう。もっぱらウェブアプリケーションを軽視していたマイクロソフトのせいではあるが。
FAT32 は OEMコードページに依存しており日本語は Shift_JS に勝手にエンコードされるのでファイル名に制限があるためクロスプラットフォーム性が乏しい。(Shift_JIS 早く滅びろ!)機能拡張版である VFAT は Unicode(UTF-16LA) でエンコードするため問題は少ないがなんちゃって Unicode なので問題がないわけではない。
Ext4 は Linux上ではファイル名を UTF-8 でエンコードしているため安定しているが、 Windows ではファイル名が UTF-16 としてエンコードされるため Linux → Windows で対応文字がないなど文字化けリスクがある。 macOS は Linux と同じ UTF-8 を利用しているが正規化形式の違い(Linux は NFC、 macOS は NFD)で文字化けを起こすことがある。
exFAT と NTFS はファイル名を UTF-16 でエンコードするため、制限はほぼない。異なるOS間での文字互換性は高く、余計な心配をせずに済む。
比較チャート
Ext4 | FAT32 | exFAT | NTFS | |
---|---|---|---|---|
互換性 | Linux ◎ Windows ○ macOS △ | Linux ◎ Windows ◎ macOS ◎ | Linux ◎ Windows ◎ macOS ◎ | Linux ○ Windows ◎ macOS △ |
文字コード | UTF-8 | OEM | UTF-16 | UTF-16 |
単一ファイルサイズ上限 | 16 TB | 4 GB | 128 PB | 16 EB |
ボリュームサイズ上限 | 1 EB | 2 TB | 128 PB | 16 EB |
ジャーナリング機能 | ○ | ✗ | ✗ | ○ |
パフォーマンス | >> | > | >>> | >> |
※ macOS は Ext4 と NTFS への書き込みを行うには有償ソフトを購入しなければいけないので互換性△とした。

おわり
コメント