...

NVMeサーバーにおけるXFSとEXT4の比較:ベンチマークと実運用での比較

比較する XFS、EXT4 最新のベンチマークや実測値をもとに、NVMeサーバーにおける各ファイルシステムの性能を比較し、どの状況でどのファイルシステムが明らかに優れているかを示します。その際、スループット、レイテンシ、実際のワークロードに焦点を当て、サーバーにおけるNVMeの性能を効果的に活用できるよう解説します。.

中心点

まず冒頭で、最も重要な知見を簡単にまとめ、その後、詳細やベンチマーク、チューニングについて解説していきます。.

  • ランダムI/O: 両者は非常に近い性能を示しており、EXT4の方がスループットがわずかに高く、XFSの方がレイテンシがより安定している。.
  • 順次: 大きなファイルではXFSがしばしばトップとなり、EXT4は僅差でそれに続き、安定した転送速度を示している。.
  • メタデータ: EXT4には若干の利点があり、XFSは応答時間が一定である。.
  • アプリケーション:データベースでは接戦となっており、その差は数パーセント程度にとどまっている。.
  • チューニング: カーネル、スケジューラ、I/Oの深さ、空き容量、マウントオプションが、その違いを左右する。.

NVMe上のXFSとEXT4:技術的な位置づけ

EXT4は定評のあるLinuxの標準ファイルシステムとされており、NVMe上では非常に 信頼できる 基盤となっており、多くのベンチマークで基準として用いられています。XFSは、大容量ファイル、高い並列性、およびシーケンシャルなデータストリームに対応しており、NVMeのスループットを非常に効果的に活用できます。 最新のハードウェア上では、両ファイルシステムが長年にわたり成熟してきたこと、また新しいカーネルバージョンによってNVMeスタックがさらに最適化されていることから、その差は縮まりつつあります。 日常的なワークロードでは、多くの場合、負荷プロファイルが決め手となります。多数の小さなランダムアクセスが密集している場合はXFSが、大規模なシーケンシャル転送を主とする場合はXFSが有利となる傾向があります。したがって、決定を下す際には、一般的な情報だけでなく、自身のI/Oプロファイルを把握しておく必要があります。 ランキング 見る。.

NVMe でのランダム I/O:小ブロック、高い並列性

4Kおよび8Kのアクセスにおいて、両方のファイルシステムは非常に高いIOPSを実現しています。 同様の パフォーマンスレベルは、多くの場合、数パーセントポイント以内の差にとどまります。 EXT4は、一部の測定においてランダム書き込みの平均値がわずかに高い傾向にあり、これはOLTPに類似したシナリオで顕著になる可能性があります。一方、XFSは、長時間の稼働においてもより均一なレイテンシと少ないジッターを特徴としており、混合負荷環境において予測可能な応答時間の実現に寄与します。 実稼働環境では、キャッシュ、アプリケーションロジック、ネットワークパスによって、こうした微妙な違いが隠れてしまうことがよくあります。そのため、バッファキャッシュ、WAL戦略、I/O深度といった他の調整要素が重要視されることになります(出典: 1, 4, 7).

順次転送:大容量ファイルを効率的に移動させる

MB単位のブロックや、長くて連続したストリームの場合、XFSはエクステントのレイアウトにより大容量ファイルを効率的に処理できるため、多くの場合優位に立っています。 管理. バックアップウィンドウ、アーカイブジョブ、およびシーケンシャルチェックポイントは、特にPCIe 4.0/5.0 NVMe環境において、その恩恵を顕著に受けます。EXT4もそれに迫る性能を示し、多くの環境においてほとんどボトルネックにならないほど優れた転送速度を実現しています。 ストリームの時間が長くなり、ファイルサイズが大きくなるほど、XFSの優位性がより顕著になります。これに関する補足的な概要については、私の短い記事をご覧ください。 性能比較 典型的なサーバーのワークロード(出典:4、5、9)。.

メタデータ操作:多数の小さなファイル

ファイル操作の多いワークロードは、メタデータパスに負荷をかけ、ロックやジャーナリングに差異をもたらします。 . EXT4は、多数の小さなファイルを高速に作成・削除するテストにおいて、一部のテストでわずかに優位を示しています。一方、XFSは一貫したレイテンシを維持しており、ログ、キャッシュ、ビルドディレクトリなどにおいて計画性を保ちやすいという利点があります。 他のファイルシステムと比較しても、これら2つは成熟した管理機能と予測可能な応答パターンを示しています。大量の小さなファイルを移動する場合は、マウントオプションに注意を払い、長期間にわたる実用的なテストを実施することをお勧めします(出典:1、7、13)。.

数値で見るベンチマークの概要

以下の傾向を簡潔にまとめておきます。そうすれば、典型的なパターンを素早く 認識する. 小ブロックでのランダムI/O:差は概ね小さく、IOPSでは±3~5 %の範囲に収まることが多い。大ブロックでのシーケンシャルI/O:XFSが優位となる場合が多く、特に長いストリームや大容量ファイルでは顕著である。 メタデータ負荷の高いテスト:EXT4がわずかに優位な場合もあり、XFSはレイテンシが安定している。 分析シナリオでは、カーネル、ドライバ、およびコントローラのファームウェアに依存するものの、両方のファイルシステムとも、理論上のNVMeパフォーマンスの約80~85 %を利用することが多い(出典:1、3、4、5、10)。.

シナリオ 傾向 代表的な利点 ヒント
ランダムI/O(4K/8K) 非常に狭い EXT4のスループットがわずかに向上 XFSは多くの場合、レイテンシがよりスムーズである
順次(1 MB以上) XFSが首位 大容量ファイルでのスループット向上 長いストリームは効果を高める
メタデータ操作 接戦 EXT4は、作成・削除の処理において一部で高速化されている XFSは混合負荷下でも安定している
データベース(OLTP) 非常に狭い EXT4ではTPSがわずかに向上 XFSは応答時間がより安定している
分析・レポート Eng 大規模なスキャン時のXFS どちらもハードウェアの80~85 %を使用している

アプリケーションに近いベンチマーク:データベースおよび混合負荷

PostgreSQL や MySQL のベンチマークテストでは、レイテンシのプロファイル、WAL 戦略、バッファキャッシュの設定によって、両者が互角の争いを繰り広げているのが見て取れます。 生きている. EXT4は、高い並列性下において、1秒あたりのトランザクション数がわずかに多い傾向があります。XFSは安定した応答時間が特長であり、これにより重要なAPIにおけるテールレイテンシを平滑化できます。これらの違いはごくわずかであるため、ファイルシステムを単に切り替えるよりも、データベースのチューニングを行う方がより大きな効果をもたらします。 したがって、決定を下す際には、ワークロードに典型的な長時間実行テストを測定し、アプリケーションのメトリクスを注意深く観察する必要があります(出典:2、3、9)。.

カーネルバージョン、NVMeモデル、およびそれらが及ぼす影響

5.xおよび6.xシリーズの新しいLinuxカーネルは、レイテンシを低減し、スループットを向上させており、高速なNVMe上の両方のファイルシステムにメリットをもたらし、I/Oスタックのボトルネックを解消する 軽減する. 大容量のDRAMキャッシュと停電保護機能を備えたエンタープライズ向けSSDでは、ファイルシステムの性能が影響を及ぼす前にコントローラーとファームウェアが制限をかけるため、性能差がさらに目立たなくなります。一方、低価格なコンシューマー向けNVMeではその差がより明確に現れますが、日常的な使用においては概ね同等の性能を維持します。 PCIe 4.0/5.0はヘッドルームを拡大し、それによってXFSのシーケンシャル性能における利点がより顕著になります。そのため、カーネルのアップデート、NVMeファームウェア、そして安定したドライバのバージョンは、測定可能な形で効果を発揮します(出典:1、5、10、11)。.

NVMeのチューニング:スケジューラ、I/O深度、空き容量

私はよく、次のようなシンプルなスケジューラから始めるのですが、 なし あるいはmq-deadlineを設定し、各ワークロードに応じてI/O深度を調整して、キューを適切に埋めるようにします。深度が高すぎるとレイテンシのピークが発生し、低すぎると並列リソースが無駄になります。 15~20 %の空き領域を確保しておくことで、断片化を軽減し、割り当て処理を迅速に保つことができます。XFSについては、ファイルシステムの並列性に大きな影響を与える「アロケーション・グループ」の構成を確認しています。このテーマを理解するための良い入門として、以下の項目が挙げられます。 XFS アロケーショングループ. 変更点はすべてA/Bテストで検証し、その効果を明確に把握できるようにするとともに、品質の低下が見落とされないようにしています。.

マウントオプションを効果的に活用する

マウントオプションは、ジャーナリング、コミット間隔、書き込みパスに影響を与え、レイテンシやスループットに 目立つ 変更する。EXT4ではジャーナルモードやコミット時間に関して有用な調整機能があり、XFSではログバッファやiノードパラメータに関するオプションが用意されている。私はこれらの設定を負荷プロファイルに合わせて調整し、変更の都度記録を残している。 さらに深く掘り下げたい方は、有用なパラメータに関する簡潔なヒントが EXT4のマウントオプション. 重要なのは、マウントの調整を、合成テストだけでなく、実際のワークロードでも検証することである。.

ホスティングの実践:ワークロードに応じた選定

CMSやオンラインショップを備えた従来のWebアプリケーションにおいて、EXT4は信頼性の高い ベース, 、というのも、多数の小さなファイルや混合したI/Oパターンが主流だからです。並列処理の度合いが高いデータベースは、どちらのファイルシステムでも非常に良好に動作します。私は、これまでの経験値、監視環境、およびバックアップ戦略に基づいて判断します。 バックアップやアーカイブにおける大規模なシーケンシャルデータストリームでは、転送ウィンドウを短縮できるXFSが有利です。アナリティクス・ワークロードも、大規模なスキャンを処理するXFSの能力の恩恵を受けますが、混合プロファイルではほとんど違いが見られないことがよくあります。判断に迷う場合は、ステージングシステムを構築し、主要な日中の負荷状況に基づいて測定を行うことをお勧めします。.

テスト戦略:現実的かつ測定可能

短時間のピークテストと長時間の持久走を組み合わせて、最大値だけでなく、ジッターや経年劣化の影響も把握できるようにしています 見る. 。単なる合成ツールだけでなく、稼働中のデータベースのコピー、典型的なログファイル、実際のインポート/エクスポートジョブを活用しています。iostat、perf、およびアプリケーションメトリクスによるモニタリングを常に実行しており、相関関係を明確に立証できるようにしています。 カーネルの更新やファームウェアの変更後は、回帰を早期に検出するためにテストを繰り返します。これにより、自社の環境において、XFSとEXT4のどちらがスループット、レイテンシ、予測可能性のバランスにおいてより優れた妥協点を提供しているかが明らかになります(出典:1)。.

ジャーナリング、バリア、およびNVMeにおける同期のセマンティクス

ジャーナリングの詳細設定は、レイテンシのピークやリカバリの挙動にも影響を与えます。EXT4はデフォルトで data=ordered また、メタデータをジャーナルに書き込む一方で、ユーザーデータはコミット前に永続化されます。許容できるリスクの範囲内で最大の書き込み速度が必要な場合は、 data=ライトバック 検討する価値はあるが、これによりクラッシュ後のリプレイが難しくなる。新しいバージョンのEXT4では、 fast_commit, 、これにより多数の小さなメタデータトランザクションがまとめられ、コミット時間が短縮されます。XFSは独自のログ(ジャーナル)を保持しており、その ログサイズ そして ログバッファ 並列処理とレイテンシに大きな影響を与えます。NVMeでは 書き込みバリア 重要:パワーロスプロテクション(PLP)を無効にしている場合、コントローラのファームウェアの順序変更を防ぐため、バリアは有効なままにしておく必要があります。PLPを有効にすることで、fsync()を多用する処理の負荷を軽減するために、バリアを意図的に削減することが可能ですが、その際は常にリスクとバランスを慎重に検討する必要があります。 厳格な耐久性が求められるアプリケーション(データベースなど)では、スループットが数パーセント向上することよりも、fsync()の挙動が適切に動作することが重要です。.

NVMeのTRIM/Discardおよび長期的な挙動

Flashに影響を与える 破棄/トリム- 持続的な書き込みパフォーマンスを確保するための戦略。マウント時のインライン・ディスカード(discard/async_discard)は、コントローラのバックグラウンド処理を軽減するが、負荷がかかるとレイテンシの急上昇を引き起こす可能性がある。定期的な fstrim- 定期的な実行(例:毎週)は、多くの生産環境においてパフォーマンスをより安定させ、未使用ブロックの解放をホットパスから切り離します。XFSはディスカードをバッチ処理で効率的に処理し、EXT4は discard=async ソフトなアプローチです。重要なのは、すべてのレイヤー(dm-crypt、LVM、MD-RAID、ハイパーバイザー)を通じて、ディスカードを適切に伝播させることです。 長期的に15~20の%リザーブを確保しておけば、内部のガベージコレクションが軽減され、レイテンシのジッターが低減され、書き込みパフォーマンスがより安定します。.

RAID、LVM、および暗号化:各層を適切に調整する

フォーマットを行う前に、ブロックのジオメトリをRAID/LVMに合わせる必要があります。XFSの場合、適切な選択は sunit/swidth (Allocation-Alignment) 大規模な順次転送の効率性。EXT4では、以下がこれを行う stride/stripe-width. アライメントが適切であれば、RAIDにおける読み取り・変更・書き込みサイクルは最小限に抑えられます。LVM-Thinやスナップショットは便利ですが、書き込みパスにおけるレイテンシを増加させます。これは、単純なスキャン作業よりもランダムなワークロードにおいて、より顕著に影響します。. dmクリプト/LUKS CPUリソースを消費し、ブロックサイズが小さい場合はIOPSを制限する可能性があります。最新のAES-NIやARM-Cryptoが役立ちますが、テールレイテンシは通常、わずかに増加します。 暗号化されたボリュームについては、I/O深度とキューアフィニティを再調整し、セキュリティポリシーで許可されている場合は、ディスクアードを明示的に許可することをお勧めします。.

CPU/NUMA、割り込みアフィニティ、および io_uring:レイテンシの微調整

NVMeは複数のサブミッション/コンプリートキューを通じてスケーリングします。誰が NUMAロケーション この点に留意することで、ノード間のホップ数を削減できます。NVMeのIRQおよびアプリケーションのワーカースレッドは、メモリが割り当てられているのと同じNUMAノード上で実行されるようにする必要があります。Linuxでは、IRQピンニングとカスタマイズされた rps/xps- データパスをローカルに保持する設定。最新のワークロードでは、 io_uring (従来のAIOに代わるもので)、システムコールを削減し、バッチ送信を可能にする。fioテストでは、これは同じIOPSでレイテンシが低くなるという結果として現れる。キューの深さが大きすぎると(iodepth) しかし、これらはレイテンシの分布をぼやけさせてしまうため、ワークロードごとの「スイートスポット」を特定するには、段階的なテスト(例:1、4、16、64)を行うのが有効である。.

コンテナおよびVM環境:スタックにおける特徴

コンテナ(overlayfs)においては、XFSが長い間標準的な選択肢とされてきたのは、 d_type 初期段階から信頼性の高い可用性が確保され、大規模なレイヤーセットも効率的に管理されていました。現在、最新のEXT4環境も同等の安定性を提供しており、パフォーマンスの差は小さく、その要因はファイルシステム(FS)そのものというよりはオーバーレイファイルシステム(overlayfs)によるものです。 VMでは、Virtio/NVMeフロントエンドとハイパーバイザーのキャッシュモードが支配的です: cache=none さらに、ゲスト側で O_DIRECT を使用すると、ダブルバッファリングが軽減されます。重要な点は ディスカード・パス また、書き込み増幅を回避するために、セクターサイズを統一(4K 対 512e)しています。 スナップショット駆動型プラットフォーム(例:QCOW2、ZVOL)はコピー・オン・ライトを採用しています。ゲスト側のファイルシステムの選択は依然として重要ですが、ホスト側のバックエンドの方が、XFSやEXT4自体よりも早く制限に達することがよくあります。.

復旧、整合性、およびメンテナンスウィンドウ

どちらのファイルシステムも堅牢であると考えられていますが、 保守経路 異なります。EXT4はe2fsckを使って徹底的にチェックできます。非常に大きなボリュームの場合、エラーがあるとなかなか時間がかかりますが、段階的な改善の恩恵を受けています(Fast-Commitにより、小規模なトランザクションのリプレイ時間が短縮されます)。XFSは オンラインの一貫性 設定されています。詳細なチェックは xfs_repair によって実行されますが、これは深刻な問題が発生した場合に大量の RAM を必要とし、ツリーが非常に大きい場合は時間がかかることがあります。本番環境では、 凍結防止剤 LVM/ストレージのスナップショットよりも前に実行し、アプリケーション一貫性のあるバックアップを確保する必要があります。また、データベースについては、独自のチェックポイント/バックアップメカニズムを別途起動させる必要があります。 RTO/RPOが短いSLAを締結している場合は、復旧テストを明確に計画してください。これにより、誤解が解消され、現実的なダウンタイムの範囲が明らかになります。.

純粋な性能を超えた機能面

パフォーマンスだけがすべてではありません。XFSは Reflink-ベースのコピー機能と重複排除フックにより、VMイメージや大規模なメディアコレクションにおいてストレージ容量を節約し、コピー時間を短縮します。EXT4は、幅広いツールのサポートと、導入を容易にする保守的なデフォルト設定が特長です。. クォータ は両方の環境で利用可能です。XFSは プロジェクト・クォータ 大規模なマルチテナント構造におけるディレクトリベースの割り当て枠について。次のようなオプションなど noatime/relatime/lazytime メタデータの書き込み負荷を大幅に軽減します。ディレクトリ単位またはファイル単位の暗号化(fscrypt)を使用する場合は、小規模なランダムアクセス時に生じるわずかなオーバーヘッドを見込み、CPUの余裕を確保しておく必要があります。.

測定誤差を防ぐ:よくある落とし穴

FSの違いと思われるものの多くは、実際には テストアーティファクト. データセットが小さすぎるとページキャッシュに格納され、差異が隠れてしまうため、データセットは利用可能なRAM容量よりも大きいものであるべきである。欠落している ウォームアップ フラッシュのランダム書き込みプロファイルを歪めてしまう。同様に、並行して実行されるメンテナンストジョブ(スクラブ、リビルド、fstrim)も異常値を引き起こす。fioテストを行う際には、以下の点が明確でなければならない。 direct=1 fsync()のフェーズが現実的な設定になっているか、読み取り/書き込みの混合処理がインターリーブ方式で実行されるか、あるいはフェーズごとに実行されるかといった点が確認されます。再現性のある結果を得るには、固定のCPU周波数(過激なスケーリングガバナーは使用しない)、一定のバックグラウンド負荷、およびテストとモニタリングの明確な分離が必要です。.

実務チェックリスト:手順は次のとおりです

  • ワークロードのプロファイルを明確にする: ブロックサイズ、読み取り/書き込み比率、レイテンシ予算、バースト特性。.
  • スタックの整理: カーネル、NVMeファームウェア、ドライバのバージョン;IRQアフィニティとNUMAを確認する。.
  • レイアウトを揃える: RAID/LVMのアライメント(sunit/swidth、あるいはstride/stripe-width)を正しく設定する。.
  • マウントオプションのテスト: バリア、コミット間隔、noatime/relatime/lazytime;XFSログパラメータ。.
  • I/O深度のキャリブレーション: レイテンシとスループットを天秤にかけ、アプリケーションごとに最適なバランスを見つける。.
  • 空きスペースを確保する: 15–20 % レイテンシを均一にし、フラグメンテーションを低減するための予備容量。.
  • ディスカード戦略を定義する: インライン fstrim と定期的な fstrim の比較、すべてのレイヤーに波及させる。.
  • バックアップと復旧: fsfreeze/スナップショット・プロセスのテスト、ダウンタイムの現実的な検証。.
  • A/B測定: 変数を1つだけ変更し、その結果をアプリケーションメトリクスと照合する。.

要約:迷信に惑わされない意思決定の指針

XFSとEXT4はNVMe上で非常に高いパフォーマンスを発揮するが、その違いは概して 控えめ また、これらはI/Oプロファイルに大きく依存します。小さなブロックによるランダムな負荷では性能が拮抗する一方、長いシーケンシャルストリームではXFSが優位に立つ傾向があります。EXT4は一部のトランザクションパターンでわずかに高いスループットを発揮し、XFSは長時間の実行においても安定したレイテンシを維持します。 カーネルのバージョン、NVMeモデル、スケジューラ、I/O深度、空き容量、マウントオプションなどは、ファイルシステムの選択単体よりも結果に大きな影響を与えることがよくあります。正確に測定し、自社のワークロードを正しく理解していれば、根拠のない説に惑わされることなく、測定可能なデータに基づいて適切な判断を下すことができます。 利益.

現在の記事

データセンター内のZFS ARCキャッシュを表現するために、RAMモジュールが強調表示されたサーバーラック
サーバーと仮想マシン

ZFS ARCキャッシュ:メモリ使用量を正しく理解する

ZFSのARCキャッシュの仕組み、RAM使用量が高くなるのが正常な理由、そしてZFSのパフォーマンスを向上させるためにメモリ使用量を適切に調整する方法について学びましょう。.