
物理ハードドライブのext4プライマリパーティションにあるまれなdm-cryptデバイスに基づくbtrfsパーティションにドキュメントを保存します。
カーネルがクラッシュすると(3.6カーネルを使用するASUS P53Eで毎日発生する:-())、最近変更されたファイルは失われます(ファイルの内容は常に0に置き換えられます)。
ファイルの破損を防ぐ 1 つの方法は、書き込みキャッシュを無効にすることです。
これを行うには、btrfsパーティション、それをサポートするdm-cryptデバイス、およびdm-cryptデバイスが存在するスパースファイルの書き込みキャッシュを無効にする必要があります。
- ドライブのキャッシュ書き込み状態を確認するには?
- どうすれば無効にできますか?
私はMint 13 Mayaと3.6.8メインラインカーネルを使用しています。
答え1
ループデバイスを使用しているかのように聞こえるので、ディスクドライブの書き込みキャッシュが問題を解決できるかどうかはわかりません。したがって、Btrfsファイルシステムと物理ディスクの間にはまだページキャッシュ/ファイルがあります。ジャーナリングファイルシステムにも同じ種類の問題があります。ループAESについてはここで詳しく説明します。。したがって、データがループデバイスに同期されると、物理ディスクにはなく、並べ替えと書き込みを待つキャッシュに存在する可能性があります。
sync
ext4は、キャッシュを無効にするために使用されるext2 / 3マウントオプションをサポートしていません。間にあるレイヤーの数によって、これが効果的に回復できるかどうかはわかりません。残念ながら、私は少なくともディスクに多くのデータを書き込むのに十分な内部について知りません。
同じ方法で行うことができます限界システムがディスクに頻繁に書き込むようにページキャッシュを調整して、この問題を解決してください。 Linux ページキャッシュは、その値を/proc/meminfo
次のように報告します。
"Dirty" - for pages that are currently dirty
"Writeback" - for dirty pages that are being written out to disk.
ファイルがあります/proc/sys/vm/
状態を報告し、データをディスクに書き換えるフラッシュスレッドを制御します。
ここに小さい値(8096または2ページ以上)を入力できます。/proc/sys/vm/dirty_background_bytes
バックグラウンドpdflushプロセスをより積極的に実行する/proc/sys/vm/dirty_bytes
プロセストリガをより積極的にフラッシュします(パフォーマンスの低下または全体的に多くのディスク書き込み用)。
ハードウェア書き込みキャッシュが主な問題である可能性はほとんどないと思います。 dm-cryptを介してデバイスに直接アクセスする場合は、まずそのデバイスを見てみましょう。いずれにせよ、IDEおよびSATA書き込みキャッシュを無効にできますhdparm -W0 /dev/xdx
。
また、技術的に実験的なファイルシステムをほとんどの場合よりも微妙な方法で使用しながら、人々がこれらの問題を偶然発見したより成熟したファイルシステムを使用する方が良いかもしれません。 Btrfsが必要な場合の最善の方法は、物理パーティションを暗号化することです。
答え2
これまで、物理パーティションの書き込みキャッシュ動作を設定する方法が見つかりました(/dev/sda6
私の場合)。
sudo hdparm -W /dev/sda6
書き込み動作を確認し、sudo hdparm -W0 /dev/sda6
書き込みキャッシュを無効にするために使用されます。
しかし、私の場合、これは少し過剰です。パーティション全体ではなくdm-cryptサポートファイルへの書き込みキャッシュのみを無効にしたいと思います。