Linuxで「バリア」マウントフラグは何を意味しますか?


20

「バリア」マウントオプションのマニュアルは次のとおりです。

barrier = 0 / barrier = 1

これにより、jbd code.barrier = 0で書き込みバリアの使用が無効/有効になり、バリア= 1が有効になります(デフォルト)。これには、バリアをサポートできるIOスタックも必要です。jbdがバリア書き込みでエラーを取得すると、警告を表示してバリアを再び無効にします。書き込みバリアは、ディスク上のジャーナルコミットの適切な順序付けを実行し、揮発性ディスク書き込みキャッシュを安全に使用できるようにしますが、パフォーマンスがいくらか低下します。ディスクが何らかの方法でバッテリバックアップされている場合、バリアを無効にするとパフォーマンスが安全に向上する場合があります。

しかし、「ディスク上のジャーナルコミットの適切な順序付け」という文の意味がわかりません。

通常の順序-ジャーナル1、データ1; ジャーナル2、データ2.
設定すると、次の順序付け結果のどれが発生しbarrier=0ますか?

  1. ジャーナル2、データ2。ジャーナル1、データ1。
  2. データ1、ジャーナル1。データ2、ジャーナル2。


1
ジャーナリングファイルシステムについて読んだ場合、まずジャーナルを書き、次にジャーナルを実行して、実際のデータをディスクに書き込むことが重要であることがわかります。バリアは、ジャーナルが実行される前に確実に書き込まれるようにします。そうでなければ、ジャーナルは役に立たない。
ctrl-alt-delor

@richard BBWCハードレイドで「nobarrier」フラグを使用する場合、ディスクはデータが実行される前にジャーナルが書き込まれることを保証できませんでしたが、この条件は問題になりませんか?
leafonsword 14

それが重要かどうかを知るのに十分な知識がありません。最悪の場合、それはジャーナルなしと同じくらい悪いと思いますが、私が読んだことはそれほど悪くはないようですが、微妙な点を見分けることはできません。私は持っていますbarrier=1、そしてそれは私にとって十分に速く動きます。あなたが本当のヘビーデューティーな仕事をしていない限り、私はそれを残します。ラムバッファがあるので、アプリケーション速度を落とすことなく、可能なときにデータが書き出されます。また、ディスクへの書き込みの遅延はほとんどありません。RAMバッファの速度を確認するには、ホームディレクトリにsync = 1を追加し、システムを1〜2日使用してみてください。
ctrl-alt-delor 14

回答:


15

最新のファイルシステムのほとんどはジャーナリングファイルシステムです。つまり、ジャーナルと呼ばれる内部データ構造でディスクにまだ書き込まれていない変更を追跡します。クラッシュが発生すると、このジャーナルが再生され、すべての書き込みが正常に実行され、ファイルの破損が防止されます。

実際にデータをディスクに書き出すとき、書き込みキャッシュは書き込みを並べ替えてスループットを最大化しようとしますが、実際のファイルデータがメタデータの前にディスクに書き込まれていることを確認して、クラッシュした場合に確認する必要がありますメタデータがデータで古くなることはありません。

問題は、多くのディスクに独自のキャッシュがあり、書き込みの順序が変わる可能性があることです。一部のファイルシステムは、それが起こると想定し、これを防ぐために特定のポイントでディスクを強制的にキャッシュにフラッシュします。これは、write barriersext4やLinux全般などで呼び出されます。

しかし、最新のディスクでは、これを行うためのパフォーマンスの犠牲は無視できます。絶対に必要でない限り、書き込みバリアを無効にしないでください。


1

このLWNの記事から:

[ジャーナリング]コミットレコードを書き込む前に、ファイルシステムコードは、トランザクションのすべての情報がジャーナルに到達したことを絶対に確認する必要があります。適切な順序で書き込みを行うだけでは不十分です。現代のドライブは大きな内部キャッシュを維持し、パフォーマンスを向上させるために操作を並べ替えます。そのため、ファイルシステムは、コミットレコードを書き込む前に、すべてのジャーナルデータをメディアに取得するようにディスクに明示的に指示する必要があります。コミットレコードが最初に書き込まれると、ジャーナルが破損する可能性があります。カーネルのブロックI / Oサブシステムは、バリアを使用してこの機能を利用可能にします。本質的に、バリアは、バリアの前に書き込まれたすべてのブロックがメディアにコミットされるまで、バリアの後のブロックの書き込みを禁止します。バリアを使用することにより、

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.