コンピューターサイエンス:アルゴリズム / OS / ネットワーク / DB

ext4 / APFS / NTFS の違い

生田 陸人
LuaGate エンジニア / 現役エンジニア
編集 LuaGate編集部

ext4 / APFS / NTFS の違い

このレッスンで分かること

  • 主要 OS のデフォルトファイルシステムは、設計時代と用途で大きく性格が違います
  • ext4(Linux)は安定枯れ実装、APFS(macOS)は SSD・スナップショット前提、NTFS(Windows)は ACL とエンタープライズ機能を重視
  • どれも「ジャーナリング」「大容量対応」「クラッシュ耐性」の現代的な要件は満たしています

ext4 / APFS / NTFS の違い とは

ext4 / APFS / NTFS の違い。本レッスンでは、ext4 / APFS / NTFS の違い の基本から実際の使いどころまでを整理し、現場で迷わず使える形に落とし込みます。

一覧で比較

観点ext4APFSNTFS
OSLinuxmacOS / iOSWindows
登場200820171993
最大ファイル16 TB8 EB256 TB
最大ボリューム1 EB8 EB8 PB
文字エンコード任意(バイト列)Unicode 正規化UTF-16
大文字小文字区別する任意区別しない(既定)
ジャーナリングあり(メタデータ)コピーオンライトあり
スナップショット別ツールネイティブVSS(Volume Shadow Copy)
ACLPOSIX + 拡張属性POSIX + 拡張細粒度 ACL
TRIM 対応ありありあり

それぞれの設計思想

ext4(Linux)

ext2 → ext3(ジャーナル追加) → ext4 と進化した 保守的で堅実 な FS。HDD 全盛期に設計され、エクステント(連続ブロックの効率管理)と遅延割り当てを採用。Linux サーバーで圧倒的に使われています。後継候補に btrfsxfsZFS があります。

APFS(Apple File System)

2017 年に Apple が HFS+ から置き換えるために導入。SSD・暗号化・スナップショット を一級市民として組み込みました。コピーオンライト方式で、ファイルのコピーが瞬時に終わる(差分が出るまで実データはコピーしない)クローン機能が特徴です。

ターミナル

# macOS で APFS スナップショット作成 tmutil localsnapshot tmutil listlocalsnapshots /

Time Machine がここを使っています。

NTFS(New Technology File System)

Windows NT 3.1(1993)で導入。当時としては先進的な ジャーナリング、圧縮、暗号化、ACL、リパースポイント(シンボリックリンクの上位互換)を備えています。

プレーンテキスト

# PowerShell でファイル ACL を確認 Get-Acl C:\Users\alice\memo.txt | Format-List

図解

diagram (will load when visible)

具体例

同じ「ファイル名」でも挙動は違います。

  • ext4 では Memo.txtmemo.txt別ファイル
  • APFS(デフォルト)と NTFS では 同じファイル扱い

macOS で Linux と同じ感覚で開発するなら、ボリュームを Case-sensitive APFS にフォーマットするか、Docker / Lima 上の Linux で作業するのが定石です。

トレードオフ

  • ext4 は安定ですが、スナップショットや本格的なボリューム管理は LVMbtrfs / zfs に頼る必要があります
  • APFS は SSD 前提で HDD では性能が出にくい設計(HDD でも動きますが)
  • NTFS はクロスプラットフォームの読み書きが課題でしたが、Linux はカーネル 5.15 以降の ntfs3 ドライバ、または FUSE の ntfs-3g で読み書きできます。macOS は標準では読み取り専用のみ対応

よくある誤解

  • 「macOS は UNIX なのでファイルシステムも Linux と互換」――半分誤解で、API は POSIX 互換ですが内部実装は APFS の独自設計です
  • 「NTFS = ファイルシステム」と「NTFS = Windows のディスク全体」が混同されがちです。Windows ではブートには別のファイルシステム(EFI System Partition の FAT32)も並存します

やってみよう

Linux なら df -T で各マウントポイントの FS 種別が見られます。macOS なら diskutil list、Windows なら PowerShell の Get-Volume。普段の作業ディスクが何系統なのかを把握しておくと、トラブル時の調査が早くなります。

よくある質問

Q. このトピックは実務でどう役立ちますか?

A. DB のクエリ最適化、API 設計、データ構造の選択など、設計判断の根拠になります。表面的にライブラリを使うだけでなく「なぜそれが速いのか」を理解できると、性能問題を未然に防げます。コーディング面接でも頻出のテーマです。

Q. macOS で Linux と同じ大文字小文字区別が欲しいときはどうすればいいですか?

A. ボリュームを Case-sensitive APFS にフォーマットするか、Docker や Lima 上の Linux 環境で作業するのが定石です。既存ボリュームの変換はできないため、新規ボリュームを切るかコンテナを使う方法を選んでください。

Q. 外付け SSD を Windows と macOS の両方で使うには何でフォーマットすべきですか?

A. exFAT が最も手軽です。NTFS は macOS が読み取り専用のため書き込みできず、APFS は Windows が標準では認識しません。exFAT は両 OS で読み書きでき、4 GB 超のファイルも扱えます。

次のレッスン

次は ジャーナリングと耐障害性 で、クラッシュ後もデータが壊れない仕組み(ジャーナリングや COW)を学びます。

事前確認 — 進む前に次の 3 つができることを確認しましょう。

  1. 主要FS比較 の要点を自分の言葉で説明できる
  2. このレッスンの最小コード (または操作手順) を見ずに書ける
  3. 練習問題やクイズで間違えた箇所を読み直して理解した

理解度チェック (30 秒)

Q. 主要FS比較 とは何か、1 文で説明してください。

この章のポイント

A. 本文の「このレッスンで分かること」または冒頭の説明文を見直し、自分の言葉で要約できれば OK。詰まったら本レッスンの最初の H2 セクションを読み返してみましょう。

関連レッスン