web-dev-qa-db-ja.com

データの損失や破損を最小限に抑えるためにext3ファイルシステムに使用するマウントオプションは何ですか?

ルートファイルシステムにinitramfsを使用している組み込みセットアップがありますが、コンパクトフラッシュにマウントされたカスタムext3パーティションを使用していますIDEドライブ。停電に直面した場合のデータの整合性が最も重要な要素であるためセットアップ全体で、次のオプションを使用してマウントしました(以下は/etc/fstabファイルのエントリです)

<file system> <mount pt> <type> <options>                         <dump><pass>
/dev/sda2     /data      ext3   auto,exec,relatime,sync,barrier=1 0     2

私はインターネットで本を読んでこれらのオプションを見つけました。私が心配しているのは、/proc/mountsの内容が以下を与えることです:

/dev/sda2 /data ext3 rw,sync,relatime,errors=continue,user_xattr,acl,
barrier=1,data=writeback 0 0

私が周りを読んで理解したことから、マウントにdata=journalオプションを使用したいと思います。これは、データ破損に対する最高の保護を提供するためです。ただし、mountの特定のext3オプションのマニュアルページから、ライトバックオプションについて次のように述べています。

データの順序は保持されません。メタデータがジャーナルにコミットされた後、データはメインファイルシステムに書き込まれる可能性があります。
これは、最高のスループットオプションであると噂されています。 内部ファイルシステムの整合性が保証されます、ただし、クラッシュやジャーナルのリカバリ後に古いデータがファイルに表示される可能性があります。

私はこれについて非常に混乱しています-マニュアルページはファイルシステムの整合性のためにdata=writebackオプションをmountに指定したいことを示唆しているようです)data=journalを使用することをお勧めします。私が使用する最善のアプローチは何ですか?書き込み速度はまったく問題ではありません-データの整合性は問題ではありません。

15

writebackだけがinternal filesystem integrityについて言及しているという事実に惑わされないでください。
ext3では、journalorderedまたはwritebackを使用するかどうかにかかわらず、ファイルシステムメタデータは常に journalled およびこれは、内部ファイルシステムの整合性を意味します。

データモードは、ordinaryデータがファイルシステムに書き込まれます。
writebackモードでは、メタデータの変更が最初にジャーナルに記録され、コミットブロックが書き込まれます。ジャーナルが更新された後、メタデータとデータの書き込みが続行される場合があります。data=writebackは、重大なセキュリティリスクになる可能性があります。ファイルへの追加中、メタデータがコミットされた(および追加のデータブロックが割り当てられた)後、データが書き込まれる(データブロックが新しいデータで上書きされる)前に、ジャーナルリカバリの後、そのファイルには以前のデータで満たされたブロックが含まれる場合があります。削除されたファイル–任意のユーザーから1

したがって、データの整合性が主な関心事であり、速度が重要でない場合は、data=journalが適しています。

7
don_crissti

すでにお気づきのように、重要な点は、ファイルシステムがあらゆる種類のクラッシュを防ぐことはできないということです。

あなたができること:

  1. ソフトウェア側では、各重要な操作の後にfdatawritesを使用できます(メインのTheodore T'soの this 2003 post を参照) Linux FSカーネル開発者。それは本当です。古いバージョンのext4に隠された大きなデータ損失について これ もあります)
  2. コミット間隔を1秒に短縮します(commit = 1)(LWNの この記事 を参照してください。これはext4についてですが、本当に便利です。 ext3に関する情報)。注意:syncでは必要ありません。
  3. Simによって指摘されたRHELドキュメントが言ったように、* data_err = abort *およびdata = orderedを使用します
  4. noatimeはファイルシステムでの無駄な操作を減らします
  5. すでにお気づきのように、barrier = 1はデータ損失を最小限に抑える良い方法です( この投稿 を参照)。
  6. また、syncも、もちろん、「データを失いたくない」オプションの1つです。

最後に、偏執狂的なマウントオプションは次のようになります。

auto,exec,relatime,sync,barrier=1,commit=1,data=ordered,data_err=abort,noatime,

また、起動ごとに自動fsckを使用してデータの整合性を確保することもできます。

4
Coren

マニュアルページのどの部分を強調するかを変更してみてください。

書き戻し

データの順序は保持されません-メタデータがジャーナルにコミットされた後、データがメインファイルシステムに書き込まれる場合があります。これは、最高のスループットオプションであると噂されています。内部のファイルシステムの整合性を保証しますただし、クラッシュとジャーナルの回復後に古いデータがファイルに表示される可能性があります。

Don_crisstiが指摘したように、他のモードには「しかしながら」はありません。

2
depquid