ファイルシステム別IO性能を実測比較【ext4/xfs/btrfs/zfs】

ベンチマーク

「ext4とXFSって何が違うの?」「Btrfsを使うとどのくらい遅くなるの?」――Linuxのファイルシステム選択は、VPSやサーバーを運用するうえで避けて通れない問いです。

結論から言うと、シーケンシャル書き込みはXFSが最速(2,121 MB/s)、一方でBtrfsのランダム書き込みIOPSはext4の約1/29という衝撃的な差がありました。

本記事では、Ubuntu 24.04のDockerコンテナ(--privileged)上でループデバイスを作成し、fio 3.36を使って ext4・XFS・Btrfs の IO 性能を実際に計測した結果をお伝えします(計測日:2026-06-14)。ZFSについても特性と用途の比較を行います。

この記事のポイント

  • シーケンシャル書き込みは XFS が最速(2,121 MB/s)。ext4 比で約 33% 上回る
  • シーケンシャル読み込みは 3 者でほぼ同等(±3% 以内)。体感差はほぼなし
  • Btrfs のランダム書き込み IOPS は ext4 の約 1/29。CoW(Copy-on-Write)の代償が大きい
  • 普通のWebサーバー・VPS用途なら ext4 で十分。DB・ログ書き込みが多いなら XFS が有利
  • Btrfs はスナップショット・圧縮が使えるが、ランダム書き込み性能が犠牲になる点を理解して使う

目次

  1. 検証環境
  2. ファイルシステムの基礎知識
  3. 実測①:シーケンシャル書き込み
  4. 実測②:シーケンシャル読み込み
  5. 実測③:ランダム書き込み(衝撃の結果)
  6. パッケージバージョン比較
  7. 機能・特性の比較
  8. ZFSについて
  9. 用途別の選び方
  10. まとめ

検証環境

注意

今回のベンチマークは Docker Desktop for Mac(Apple Silicon)上で実施しています。ループデバイス(512MB スパースイメージ)上の各ファイルシステムで fio 3.36 を実行しているため、実機の NVMe SSD に直接マウントした場合とは絶対値が異なります。ただし、ファイルシステム間の相対的な性能差は実機でも同様の傾向が出ます。

項目 内容
ベースイメージ ubuntu:24.04(Docker公式イメージ)
Docker オプション --privileged --cap-add=SYS_ADMIN(ループデバイス操作に必要)
ループデバイス 512MB スパースイメージ(dd if=/dev/zero bs=1M count=512
ベンチマークツール fio 3.36apt-get install fio
テストファイルサイズ 200MB(ファイルシステムごとに新規作成)
計測方法 各テスト 8 秒間実行・バッファ付き I/O(direct=0
計測日 2026-06-14

ループデバイスを使った理由は「ホストを汚さずに複数のファイルシステムを安全に作成・マウントできる」からです。losetup -f --show /path/to/image で空きループデバイスを取得し、mkfs.ext4 / mkfs.xfs / mkfs.btrfs でフォーマットしました。

fio 実行ログとベンチマーク結果サマリー(Playwright実撮影)
fio 実行ログとベンチマーク結果サマリー(Playwright実撮影)

ファイルシステムの基礎知識

Linuxには複数のファイルシステムがあります。Ubuntu のデフォルトは ext4 ですが、用途によっては XFS や Btrfs を選ぶメリットがあります。

①ext4(Fourth Extended Filesystem)

Ubuntu・Debian系で長らくデフォルトとして採用されてきた、最も実績のあるファイルシステムです。2008年頃からメインラインカーネルに統合され、現在でも大多数の Linux サーバーで使われています。安定性が非常に高く、「とりあえず選んで間違いなし」の選択肢です。

②XFS(X File System)

Red Hat Enterprise Linux(RHEL)のデフォルトとして採用されている高性能ファイルシステムです。大容量ファイルや並列書き込みが多いワークロードで特に強みを発揮します。DB サーバーや動画エンコードサーバーでよく使われます。

③Btrfs(B-Tree File System)

スナップショット・圧縮・データチェックサムなど「次世代ファイルシステム」の機能を持ちます。openSUSE や Fedora ではデフォルトとして採用されています。機能は豊富ですが、CoW(Copy-on-Write)構造によりランダム書き込み性能が犠牲になる点に注意が必要です。

④ZFS(Zettabyte File System)

元々 Sun Microsystems が開発したエンタープライズ向けファイルシステムです。ZFS RAID(RAIDZ)・スナップショット・圧縮・重複排除など多彩な機能を持ちますが、Linuxカーネルには組み込まれておらず OpenZFS を別途インストールする必要があります。今回の Docker 環境(linuxkit カーネル)では ZFS カーネルモジュールが利用できなかったため、IO 実測は省略し特性比較のみ行います。

実測①:シーケンシャル書き込み

シーケンシャル書き込みは「大きなファイルを順次書く速度」です。バックアップ・ログ出力・動画エンコードなどで重要になります。




ubuntu@linuxlab: fio seq_write
$ fio –name=sw –filename=/mnt/xfs/testfile –size=200m \
–rw=write –bs=128k –direct=0 –numjobs=1 \
–time_based –runtime=8 –output-format=json
sw: (g=0): rw=write, bs=(R) 128KiB-128KiB,(W) 128KiB-128KiB, ioengine=psync, iodepth=1
write: IOPS=16576, BW=2072MiB/s (2172MiB/s)(16.2GiB/8001msec)
bw ( MiB/s): min= 1753, max= 2480, per=99.45%,
avg=2121.84, stdev=156.52, samples=16
ファイルシステム別シーケンシャル書き込み速度(実測)
ファイルシステム別シーケンシャル書き込み速度(実測)

XFS が 2,121.8 MB/s で首位。ext4(1,593.6 MB/s)を約 33% 上回りました。Btrfs は 723.5 MB/s にとどまり、XFS の 34% ほどです。この差は、XFS のジャーナル設計と書き込みバッファリング機構の効率の良さが出ています。

ファイルシステム シーケンシャル書き込み ext4 比 備考
XFS 2,121.8 MB/s +33% 大容量ファイル書き込みで強い
ext4 1,593.6 MB/s 基準 汎用・安定
Btrfs 723.5 MB/s -55% CoW 書き込み増幅の影響

実測②:シーケンシャル読み込み

「読み込み速度はどれが速いか?」という疑問への答えは、正直、3者ほぼ変わりません

ファイルシステム別シーケンシャル読み込み速度(実測)
ファイルシステム別シーケンシャル読み込み速度(実測)
ファイルシステム シーケンシャル読み込み ext4 比
Btrfs 1,784.7 MB/s +0.7%
ext4 1,772.1 MB/s 基準
XFS 1,731.1 MB/s -2.3%

最速の Btrfs(1,784.7 MB/s)と最遅の XFS(1,731.1 MB/s)の差はわずか 3% 以内です。実機 SSD の誤差範囲内と考えてよく、読み込み速度でファイルシステムを選ぶ必要はないと言えます。

実測③:ランダム書き込み(衝撃の結果)

ここが今回最大の驚きポイントです。データベース・キャッシュ・ログファイルなど、ランダムな小ファイル書き込みでは3者の差が劇的になります。




ubuntu@linuxlab: fio randwrite 比較
$ fio –name=rw –filename=/mnt/FS/testfile –size=200m \
–rw=randwrite –bs=4k –direct=0 –runtime=8 –output-format=json

[ext4] rand_write: 196,193 IOPS
[xfs] rand_write: 273,867 IOPS ← 最速
[btrfs] rand_write: 6,836 IOPS ← ext4 比 約 1/29 (!)
ファイルシステム別ランダム書き込みIOPS(実測)
ファイルシステム別ランダム書き込みIOPS(実測)

XFS が 273,867 IOPS でトップ。ext4 も 196,193 IOPS と健闘しています。ところが Btrfs はわずか 6,836 IOPS。XFS の 40 分の 1、ext4 の 29 分の 1 です。

この原因は Btrfs の CoW(Copy-on-Write)構造にあります。Btrfs でファイルを上書きするとき、元データを残して新しい場所に書き込み、その後参照を切り替えます。ランダム書き込みが多いと、この CoW 処理が連鎖的に発生して「書き込み増幅」が起きます。正直、実際に計測するまでここまで差が出るとは思っていませんでした。

著者アイコン
著者アイコン

Btrfs の 6,836 IOPS は「使えない」レベルではありませんが、DB をのせるなら絶対 ext4 か XFS を選んだほうがいいです。スナップショットや圧縮が必要なとき専用、と割り切るのが正解だと思います。

パッケージバージョン比較

Ubuntu 22.04 LTS と 24.04 LTS でのファイルシステムツールのバージョンを確認しました(docker run --rm ubuntu:{22.04,24.04} bash -c 'apt-cache show fio e2fsprogs xfsprogs btrfs-progs' で実測)。

ファイルシステムツールのパッケージバージョン比較(実測)
ファイルシステムツールのパッケージバージョン比較(実測)

注目点は xfsprogs5.13 → 6.6 へメジャーバージョンアップしていることです。Ubuntu 24.04 では XFS の管理ツールも最新世代に対応しています。btrfs-progs も 6.6 系に上がっており、Btrfs のサブボリューム操作や圧縮機能が強化されています。




ubuntu:24.04 — パッケージバージョン確認
$ docker run –rm ubuntu:24.04 bash -c “apt-get update -qq && apt-cache show fio e2fsprogs xfsprogs btrfs-progs | grep -E ‘^(Package|Version)'”
Package: fio
Version: 3.36-1ubuntu0.1
Package: e2fsprogs
Version: 1.47.0-2.4~exp1ubuntu4.1
Package: xfsprogs
Version: 6.6.0-1ubuntu2.1
Package: btrfs-progs
Version: 6.6.3-1.1build2

機能・特性の比較

ext4/XFS/Btrfs/ZFS 機能比較
ext4/XFS/Btrfs/ZFS 機能比較

性能だけでなく機能面でも各ファイルシステムには大きな違いがあります。

機能 ext4 XFS Btrfs ZFS
スナップショット なし なし あり(サブボリューム) あり(高機能)
透過圧縮 なし なし zstd / lzo lz4 / zstd
データチェックサム メタデータのみ メタデータのみ データ + メタ データ + メタ
最大ファイルサイズ 16 TB 8 EiB 16 EiB 16 EiB
Linuxカーネル組み込み ◎(標準) ◎(標準) ◎(標準) × (OpenZFS別途)
ランダム書き込み IOPS 高(196k) 最高(274k) 低(6.8k) 中〜高

ZFSについて

ZFS は「サーバーレベルのファイルシステム」として非常に高い評価を受けています。ただし Linuxカーネルには組み込まれておらず、OpenZFS を別途インストールする必要がある点が他と大きく異なります。

Ubuntu 24.04 では apt-get install -y zfsutils-linux(バージョン 2.2.2-0ubuntu9.4)でインストールできます。ただし、ZFS カーネルモジュールはカーネルバージョンと密結合しているため、コンテナ環境や一部の VPS では利用できないことがあります(今回の Docker Desktop for Mac 検証環境でもモジュールがロードできませんでした)。

ZFS を使うべきケース

  • 物理サーバー上で複数ディスクを RAID 構成したい(ZFS RAIDZ が強力)
  • データの完全性(ビット腐敗の検出・修復)が最優先のストレージ用途
  • 重複排除が必要な大規模ストレージ
  • ZFS send/recv を使ったリモートバックアップ

注意

ZFS は機能が多い分、メモリ消費も大きくなります。推奨は RAM 8GB 以上。VPS の 1〜2GB プランでは zfs よりも btrfs のほうが現実的です。

用途別の選び方

① 一般的な Web サーバー・VPS

迷ったら ext4 を選んでください。インストール時のデフォルトがほとんど ext4 なので、変更する理由がない限りそのまま使うのが正解です。安定性と実績が段違いです。

② データベースサーバー(MySQL / PostgreSQL)

ランダム書き込みが多いデータベースには XFS が有利です。今回の計測でも XFS のランダム書き込み IOPS は 273,867 と最高値でした。Red Hat が RHEL/CentOS で長らく XFS をデフォルトにしている理由のひとつです。

③ 開発環境・スナップショットを使いたい

Btrfs のサブボリュームとスナップショットは非常に便利です。コンテナイメージのバックアップや開発時の「ロールバックしたい」ニーズに応えられます。ただし、DB や大量書き込みを伴うアプリはのせないこと。ランダム書き込み性能が著しく下がります。

④ 大容量ストレージサーバー・NAS

物理マシンで複数ドライブを使うなら ZFS(RAIDZ)か Btrfs RAID を検討してください。特に ZFS はデータ完全性が最優先の用途で抜群の実績があります。

用途 推奨FS 理由
Webサーバー・VPS(一般) ext4 デフォルト・安定・実績十分
DB サーバー / 大量書き込み XFS ランダム書き込み IOPS が最高(273k)
スナップショット・圧縮が必要 Btrfs CoW・zstd 圧縮・サブボリューム
大容量 RAID・NAS ZFS(OpenZFS) RAIDZ・チェックサム・重複排除

まとめ

今回の実測(fio 3.36 / ubuntu:24.04 / ループデバイス / 2026-06-14)の結果をまとめます。

  • シーケンシャル書き込みは XFS が最速(2,121 MB/s)。ext4(1,594 MB/s)を 33% 上回る
  • シーケンシャル読み込みは 3 者でほぼ同等(1,731〜1,785 MB/s、差 ±3%)
  • ランダム書き込みは XFS(273,867 IOPS)> ext4(196,193 IOPS)>> Btrfs(6,836 IOPS)。Btrfs の低さが際立つ
  • Btrfs の低性能はスナップショット・圧縮と引き換え。用途を絞って使うべき
  • ZFS は Docker / 一般的 VPS では使いにくいが、物理サーバーでは最強クラス

VPS を借りてこれから Linux サーバー運用を始める方は、まず ext4 で始めるのが正解です。慣れてきたら XFS や Btrfs の特性を活かした構成に挑戦してみてください。

VPS 選びで迷っている方は、当サイトの VPS 比較記事も参考にしてください。

→ 国内・海外 VPS 速度比較(sysbench / ping 実測)

コメント

タイトルとURLをコピーしました