注:これは、 停電による破損からSSDを保護する方法はありますか? へのフォローアップの質問です。私はそこで良い情報を得ましたが、それは基本的に「UPSを入手する」、「より良いドライブを入手する」、またはPostgresの信頼性に対処する方法の3つの領域に集中していました。
しかし、私が本当に知りたいのは、特に古い書き込みでメタデータの破損からSSDを保護するためにできることがあるかどうかです。問題を要約します。これは、書き込みキャッシュが有効になっているKingstonコンシューマーグレードSSD上のext4ファイルシステムであり、次のような問題が発生しています。
ドライブがダウンしている間、またはその直前に書き込まれているデータでこれらのことが発生する場合、問題は少なくなります。それは問題ですが、それは予想されたものであり、私は他の方法でそれを処理することができます。
より大きな驚きと問題は、最近書き込まれなかった領域(つまり、1週間以上前)のディスクでメタデータの破損が発生していることです。
私はそのようなことがディスク/コントローラーレベルでどのように起こり得るかを理解しようとしています。どうしたの? SSDは定期的に「リバランス」してブロックを移動するので、別の場所に書き込んでいますか?このような:
そして、Dが書き換えられているときに電力損失があります。ブロック1とブロック2に断片が残っている可能性がありますが、このように機能するかどうかはわかりません。または多分何か他のことが起こっている..?
要約すると、これがどのように発生する可能性があるのか、OSレベルで問題を軽減するために何かできることがあれば理解したいと思います。
注:「SSDを改善する」または「UPSを使用する」はここでは有効な答えではありません。私たちはその方向に進んでいますが、私は現場の現実に生き、現在の状況で最良の結果を見つける必要があります。これらのディスクとUPSがない場合の解決策がない場合は、それが答えだと思います。
参照:
SSDドライブのext3パーティションでの突然の電力損失後のファイルシステムの破損は「予期される動作」ですか? これは似ていますが、彼が私たちのような問題を経験していたかどうかは明らかではありません。
編集:私はまた、電力損失の問題があるかもしれないext4の問題を読んでいます。私たちのものはジャーナルされていますが、私は他に何も知りません。
http://www.pointsoftware.ch/en/4-ext4-vs-ext3-filesystem-and-why-delayed-allocation-is-bad/
予期しない停電後にメタデータの破損がどのように発生するかについては、 他の回答をここで確認してください。
キャッシュを無効にすると、実行中のデータ損失の可能性を大幅に減らすことができます。ただし、SSDに基づいて、保存データは破損するリスクがあります。さらに、大規模なパフォーマンスの低下を命じます(プライベートDRAMキャッシュを無効にした後、500 + MB/sSSDがわずか5MB/sで書き込むのを見ました)。
SSDを信頼できない場合、唯一の「解決策」(またはむしろ回避策)は、エンドツーエンドのチェックサムファイルシステムをZFSまたはBTRFSおよびとして使用することです。 RAID1 /ミラーのセットアップ:このようにして、チェック/スクラブを実行することにより、最終的な単一デバイス(メタ)データの破損をもう一方のミラー側から回復できます。
最善の策は、ディスクに書き込みキャッシュを行わないように指示することによって(hdparmおよびsmartctlオプションを確認し、ディスクがそれらを尊重することを期待して)、ディスクの書き込みキャッシュを無効にすることと、同期やdirsyncなどのマウントオプションを使用してOSが書き込みをバッファリングしないようにすることです。 。