1ビットだけが切り替わって、ファイルに「S」ではなく「Q」という文字が表示される可能性はありますか


22

このアプリケーションでは、HibernateとPostgreSQLを使用してデータを保存します。データベーステーブルの1つに、たとえば「TIPPSPIEL」と言う識別列があります。これは固定文字列であり、どのユーザーも操作できません。

突然、この巨大なテーブルに「TIPPSPIEL」ではなく「TIPPQPIEL」というエントリが1つありました。これがどのように発生するかはわかりません。

ハードディスクが1ビットを切り替える可能性があるため、文字「S」は「1010001」としてエンコードされなくなりましたが、1ビットが1010011のように切り替わったハードディスクで突然「Q」になりますか?

私はハードディスクの専門家ではありませんが、OSやディスクにはチェックサムなどがあり、これが起こらないようにしています。

ファイルが「S」ではなく「Q」という文字を表示するように1ビットだけ切り替えることは可能ですか?

更新:さらに分析を行いました。スレーブデータベースは、マスターからWALレコードを取得します(PostgreSQL機能)。いずれにせよ:スレーブサーバーは同期している必要があります。しかし、この特定の行に関してスレーブは同期していませんでした。この特定のエントリに対するユーザーの操作なしで、数日前に発生したことがわかりました。そのため、少しひっくり返さなければなりません。怖い!


私はむしろこれが欠陥のあるメモリから来たと思います。その列が書き込まれたとき、あなたはまだログを持っていますか?
ott--

1
その可能性は低いが、可能性があるため、転送中のビットは高度な規則性で反転します。「ビットスクワッティング」
-Sirch

回答:


10

このサイトで本当に興味深い質問を目にすることはめったにないので、まずはありがとう。

あなたが見ているものは確かにシングルビットエラーであると思います、あなたはそれを正直に見つけることができますが、2番目に重要なビットが切り替えられたと仮定するのは正しいです(ASCIIを使用していると仮定して)とにかく)。

ディスクに書き込まれたときのチェックサムなどについては、正常であると検証されている可能性があります-この問題は、単純な磁気漏れエラーによって後で発生したと確信しています。しかし、あなたは正しい、エンコードのチェックが行われ、メーカーによって異なりますが、おそらく「これは少し奇妙に見える」というエラーがどこかにあります-しかし、IOチェーンにはどのオプションがありますか?ブロック全体を拒否しますか?RAIDを使用したディスクでは、エラーを検出したときに使用できるオプションが多くなる傾向があるため、これは単一の非RAIDディスクであると想定します。

奇妙なことですが、この種のことはおそらく世界中で1秒間に複数回発生しました。


1
この場合、それは非RAIDディスクセットアップでした。私のさらなる分析が示すように、それは記録が書かれたずっと後に起こった。
ジャニング

1
システム管理者としての20年間、私は1つのビットフリップの3つのケースを見てきました。そのうちの1つだけが100%であることが証明できました。他の2つは反転したビットであると疑われていたので、はっきりとは言えませんでした。(ファイルを読み取った後、ビットがメモリ内で反転する可能性がありました。不一致に気付くまでに、元のファイルが使用できなくなったか、触れられていました。そして、それが気づいた場合、通常証明可能ではありません
。-トニー

1
ブロック全体の読み取りに失敗すると、ドライブが修正不可能なエラーを受け取ったときに正確になります。セクタのユーザーデータ部分を1ビットだけ反転させて検出されないようにすることは不可能です。ビットは、ディスクに書き込まれたときに反転されている必要があります。
-psusi

この質問を標準化すべきですか?
鹿ハンター

@psusi不可能ではありません。ECCを正しく実行するのに十分なビットフリップが必要です。可能性は低いですが、可能性があり、ディスクメーカーは、実際にある程度のエラー率を期待できるほど高いエラー率を挙げています。(ZFSレベルのデータチェックサムにより)ZFSの人々がそれらを見るという噂を聞いたことがあります
...-derobert
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.