web-dev-qa-db-ja.com

18.04 LTSでのファイル破損の大きなファイル(32 GB)[解決済み]

大きなサイズのファイルで不規則になります。 64 GBのRAMがあり、ストレージドライブはすべてSamsung 860 EVOです。私は、生のドライブの上でmdcryptを実行し、その上でRAIDを実行し、ファイルシステムとしてext4を実行しています。空きドライブ容量が多く、スワップを実行していません。

私のディストリビューションはUbuntu 18.04 LTS(4.18.0-25-generic#26〜18.04.1-Ubuntu SMP Thu Jun 27 07:28:31 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux)です。

この不規則性は、大きなUSBサムドライブのクローンを作成したときに最初に発見されました。次に、大きなループマウントされたファイルシステムも破損することに気づきました。

スニペットが続きます:

zerosの32 GBファイルを作成してテストを開始します。

$ dd if=/dev/zero of=zero-file_32GB bs=1024k count=32768
32768+0 records in
32768+0 records out
34359738368 bytes (34 GB, 32 GiB) copied, 55.3081 s, 621 MB/s

次に、そのファイルをSHA256で合計して、ハッシュコードを取得します。複数の反復でハッシュがどのように変化するかに注意してください。

$ sha256sum zero-file_32GB 
5f7f8ea75d87ac7d64c07ecc2c5fdbe407540913ac0feb050ede768990140b38  zero-file_32GB

$ sha256sum zero-file_32GB 
64bcf7372df895319ce9e54758aec2814600fa3335fb82c5996a7636e7d637be  zero-file_32GB

$ sha256sum zero-file_32GB 
3475353b2a00e5abebb1878a9ddb5956eb829c94af26d9cd079f991fbd84435c  zero-file_32GB

$ sha256sum zero-file_32GB 
cf65fa70ba04d7bb4055b72fdf2ac90bf65ac8457cc80b8e673af5acb57d22d1  zero-file_32GB

MD5サムでも同じ不整合が発生します。

$ md5sum zero-file_32GB 
8633b9ba83a8ac04c9b56fad0a065ec2  zero-file_32GB

$ md5sum zero-file_32GB 
cc289d380b25235b7610a7b86bc4fd47  zero-file_32GB

$ md5sum zero-file_32GB 
249f66bd3843b6fcad8316fd0a3e660c  zero-file_32GB

$ md5sum zero-file_32GB 
888ac00592204be7a026c27e98159ff2  zero-file_32GB

今までのところ、ファイルが破損していて、ハッシュ合計アルゴリズムではないことにかなり自信があります。この仮説をテストするために、32 GBのゼロファイルを32個の1 GBチャンクに分割しました。

$ split --verbose -b 1G zero-file_32GB split-1G_
creating file 'split-1G_aa'
creating file 'split-1G_ab'
creating file 'split-1G_ac'
creating file 'split-1G_ad'
creating file 'split-1G_ae'
creating file 'split-1G_af'
creating file 'split-1G_ag'
creating file 'split-1G_ah'
creating file 'split-1G_ai'
creating file 'split-1G_aj'
creating file 'split-1G_ak'
creating file 'split-1G_al'
creating file 'split-1G_am'
creating file 'split-1G_an'
creating file 'split-1G_ao'
creating file 'split-1G_ap'
creating file 'split-1G_aq'
creating file 'split-1G_ar'
creating file 'split-1G_as'
creating file 'split-1G_at'
creating file 'split-1G_au'
creating file 'split-1G_av'
creating file 'split-1G_aw'
creating file 'split-1G_ax'
creating file 'split-1G_ay'
creating file 'split-1G_az'
creating file 'split-1G_ba'
creating file 'split-1G_bb'
creating file 'split-1G_bc'
creating file 'split-1G_bd'
creating file 'split-1G_be'
creating file 'split-1G_bf'

次に、SHA256は新しいファイル分割を合計します。それらはそれぞれzerosのみで構成される必要があるため、すべて同じである必要があります。ただし、分割azおよびbaでの不整合に注意してください。

$ sha256sum split-1G_??                                                                                                                                                  
49bc20df15e412a64472421e13fe86ff1c5165e18b2afccf160d4dc19fe68a14  split-1G_aa                                                                                                                        
49bc20df15e412a64472421e13fe86ff1c5165e18b2afccf160d4dc19fe68a14  split-1G_ab                                                                                                                        
49bc20df15e412a64472421e13fe86ff1c5165e18b2afccf160d4dc19fe68a14  split-1G_ac                                                                                                                        
49bc20df15e412a64472421e13fe86ff1c5165e18b2afccf160d4dc19fe68a14  split-1G_ad                                                                                                                        
49bc20df15e412a64472421e13fe86ff1c5165e18b2afccf160d4dc19fe68a14  split-1G_ae                                                                                                                        
49bc20df15e412a64472421e13fe86ff1c5165e18b2afccf160d4dc19fe68a14  split-1G_af                                                                                                                        
49bc20df15e412a64472421e13fe86ff1c5165e18b2afccf160d4dc19fe68a14  split-1G_ag                                                                                                                        
49bc20df15e412a64472421e13fe86ff1c5165e18b2afccf160d4dc19fe68a14  split-1G_ah                                                                                                                        
49bc20df15e412a64472421e13fe86ff1c5165e18b2afccf160d4dc19fe68a14  split-1G_ai                                                                                                                        
49bc20df15e412a64472421e13fe86ff1c5165e18b2afccf160d4dc19fe68a14  split-1G_aj
49bc20df15e412a64472421e13fe86ff1c5165e18b2afccf160d4dc19fe68a14  split-1G_ak
49bc20df15e412a64472421e13fe86ff1c5165e18b2afccf160d4dc19fe68a14  split-1G_al
49bc20df15e412a64472421e13fe86ff1c5165e18b2afccf160d4dc19fe68a14  split-1G_am
49bc20df15e412a64472421e13fe86ff1c5165e18b2afccf160d4dc19fe68a14  split-1G_an
49bc20df15e412a64472421e13fe86ff1c5165e18b2afccf160d4dc19fe68a14  split-1G_ao
49bc20df15e412a64472421e13fe86ff1c5165e18b2afccf160d4dc19fe68a14  split-1G_ap
49bc20df15e412a64472421e13fe86ff1c5165e18b2afccf160d4dc19fe68a14  split-1G_aq
49bc20df15e412a64472421e13fe86ff1c5165e18b2afccf160d4dc19fe68a14  split-1G_ar
49bc20df15e412a64472421e13fe86ff1c5165e18b2afccf160d4dc19fe68a14  split-1G_as
49bc20df15e412a64472421e13fe86ff1c5165e18b2afccf160d4dc19fe68a14  split-1G_at
49bc20df15e412a64472421e13fe86ff1c5165e18b2afccf160d4dc19fe68a14  split-1G_au
49bc20df15e412a64472421e13fe86ff1c5165e18b2afccf160d4dc19fe68a14  split-1G_av
49bc20df15e412a64472421e13fe86ff1c5165e18b2afccf160d4dc19fe68a14  split-1G_aw
49bc20df15e412a64472421e13fe86ff1c5165e18b2afccf160d4dc19fe68a14  split-1G_ax
49bc20df15e412a64472421e13fe86ff1c5165e18b2afccf160d4dc19fe68a14  split-1G_ay
702301f26e8df8cf784ca6b45954f1ca3524d1e22c322ee271ab1ac20b4face2  split-1G_az
bd9442046cecfcdec29169f5e8485ee0e226f56fab24cfded23b4ad15275b5d9  split-1G_ba
49bc20df15e412a64472421e13fe86ff1c5165e18b2afccf160d4dc19fe68a14  split-1G_bb
49bc20df15e412a64472421e13fe86ff1c5165e18b2afccf160d4dc19fe68a14  split-1G_bc
49bc20df15e412a64472421e13fe86ff1c5165e18b2afccf160d4dc19fe68a14  split-1G_bd
49bc20df15e412a64472421e13fe86ff1c5165e18b2afccf160d4dc19fe68a14  split-1G_be
49bc20df15e412a64472421e13fe86ff1c5165e18b2afccf160d4dc19fe68a14  split-1G_bf

MD5合計と同様の不整合:

$ md5sum split-1G_??   
cd573cfaace07e7949bc0c46028904ff  split-1G_aa
cd573cfaace07e7949bc0c46028904ff  split-1G_ab
cd573cfaace07e7949bc0c46028904ff  split-1G_ac
cd573cfaace07e7949bc0c46028904ff  split-1G_ad
cd573cfaace07e7949bc0c46028904ff  split-1G_ae
cd573cfaace07e7949bc0c46028904ff  split-1G_af
cd573cfaace07e7949bc0c46028904ff  split-1G_ag
cd573cfaace07e7949bc0c46028904ff  split-1G_ah
cd573cfaace07e7949bc0c46028904ff  split-1G_ai
cd573cfaace07e7949bc0c46028904ff  split-1G_aj
cd573cfaace07e7949bc0c46028904ff  split-1G_ak
cd573cfaace07e7949bc0c46028904ff  split-1G_al
cd573cfaace07e7949bc0c46028904ff  split-1G_am
cd573cfaace07e7949bc0c46028904ff  split-1G_an
cd573cfaace07e7949bc0c46028904ff  split-1G_ao
cd573cfaace07e7949bc0c46028904ff  split-1G_ap
cd573cfaace07e7949bc0c46028904ff  split-1G_aq
cd573cfaace07e7949bc0c46028904ff  split-1G_ar
cd573cfaace07e7949bc0c46028904ff  split-1G_as
cd573cfaace07e7949bc0c46028904ff  split-1G_at
cd573cfaace07e7949bc0c46028904ff  split-1G_au
cd573cfaace07e7949bc0c46028904ff  split-1G_av
cd573cfaace07e7949bc0c46028904ff  split-1G_aw
cd573cfaace07e7949bc0c46028904ff  split-1G_ax
cd573cfaace07e7949bc0c46028904ff  split-1G_ay
7036950003e53e471654b020330b386e  split-1G_az
0a82f6068a91bef3b46294e1e30687be  split-1G_ba
cd573cfaace07e7949bc0c46028904ff  split-1G_bb
cd573cfaace07e7949bc0c46028904ff  split-1G_bc
cd573cfaace07e7949bc0c46028904ff  split-1G_bd
cd573cfaace07e7949bc0c46028904ff  split-1G_be
cd573cfaace07e7949bc0c46028904ff  split-1G_bf

私は絶えず小さなチャンクに分割して実際の不一致のサイズを決定し、それを16進エディターで分析することを考えていましたが、それがこのデータの劣化の原因を突き止めることはできないと思います。 ISOイメージ、ビデオファイル、およびEXT4ループファイルシステムが破損します。犯人は何ですか?

これは32 GBでのみ発生し始めるため(が発生します64 GB RAMの半分のサイズになります。スワップは使用していません。)、私はそれが記憶の問題であると信じる傾向があります。何て言うの?

更新#1:

残念ながら、メモリテストは予想されたほど長くはかかりませんでした。 :enter image description here

---(アップデート#2(解決!)

  • 16 GBスティックを4つすべてコンピューターから取り外しました。
  • 次に、一番小さいシリアル番号のスティックだけを最初のDIMMスロットであるスロット#1に挿入しました(スロットの番号は1から4までです)。 MemTest86を3:44(3時間44分)実行したところ、エラーは発生せずに完了しました。
  • そのスティックを次のシリアル番号の付いたスティックに交換しました(明らかな電源切断と静電気対策を行った後)。私はもう一度スロット1を使用しました(スロットのチェックを開始する前に、最初にすべてのメモリをテストしたかったためです)。 MemTest86をもう一度実行しました。今回はエラーが多すぎるため、テストはほぼ瞬時に中止されました。
  • したがって、3番目のDIMMをスロット#1に挿入しました。 MemTest86は3:43でエラーなしで実行されました。
  • スロット#1の4番目のDIMMテストも3:43でエラーなしで実行されました。
  • 次に、正常な3つのDIMMを最初の3つのスロットに挿入しました。 MemTest86は8:54実行され、エラーは発生しませんでした。

3つのDIMM(8:54)をテストすると、3つの単一モジュールのテストを組み合わせた場合(3:44 + 3:43 + 3:43 = 11:10)よりも大幅に時間が短縮されたのは興味深いことです。いくつかのテストはタンデムで行われたと思います。

私はsha256sumで新しい32 GBのゼロファイルを作成しました。合計は、複数回繰り返した後も変化しませんでした。私の合計は97af759fc4597bc41706df77cbab318a57d935bacb262bd409e3ab767e07066fで、同じ数の@ bernard.weiが提示されました。

MemTest86に関するアドバイスを@heynnemaに感謝します。これは、この問題のトラブルシューティングに役立ちました。

この問題は解決したと思います。皆さんありがとう!

4
simmcrd
  • samsung 860 EVOのファームウェアアップデートを確認します。 Samsung Magicianは、ファームウェアの確認に使用するWindowsアプリです。

  • Sudo dmidecode -s bios-versionでBIOSのバージョンを確認してから、製造元のWebサイトにアクセスして、新しいBIOSを確認してください。

  • memtestを実行して64G RAMを確認します。 https://www.memtest86.com/ にアクセスし、無料のmemtestをダウンロード/実行して、メモリをテストします。すべてのテストの少なくとも1つの完全なパスを取得して、良好なメモリを確認します。これは完了するまでに何時間もかかります。

更新#1:

memtestはテスト2/4で失敗しました、[アドレステスト、自分のアドレス]

memtestはいくつかの理由で失敗する可能性があります...

  • 間違った仕様RAMインストール済み

  • bIOSはメモリをオーバークロックするか、最大速度で実行するように設定されています

  • DIMMがスロットに正しく装着されていない

  • DIMMに欠陥がある

通常、DIMMは同じサイズのペアでインストールされ、AとBの2つのチャネル(場合によってはそれ以上)を使用してメモリインターリーブの速度を活用します。 DIMMの最初のペアはスロットA1/B1に、2番目のペアはA2/B2に挿入します。 (これが4つ以上のDIMMスロットを備えたデスクトップコンピューターであると想定)。

ステップ1:

  • RAM仕様を確認して、マザーボードと互換性があることを確認してください

ステップ2:

  • bIOS設定を確認する

ステップ3:

  • シャーシアースに触れ、コンピュータのプラグを抜き、電源ボタンを10秒間押し続けます

  • すべてのDIMMを取り付け直します

  • memtestで再テスト

  • memtestが正常に実行された場合は、おそらく問題を修正しています

ステップ#4:

  • シャーシアースに触れ、コンピュータのプラグを抜き、電源ボタンを10秒間押し続けます

  • a2/B2 DIMMを識別し、慎重に取り外します

  • memtestで再テスト

  • memtestが正常に実行された場合、A1/B1 DIMMは良好です

  • memtestが失敗した場合、A1またはB1 DIMMのいずれかが不良です

    • a1またはB1 DIMMを取り外します
    • a2またはB2 DIMMと交換してください
    • memtestで再テスト
    • memtestが正常に実行された場合、引き出したA1/B1 DIMMが不良です
    • memtestが失敗した場合、他のA1/B1 DIMMに欠陥があります

16G DIMMが4つあると想定して、障害のあるDIMMが1つだけ取り外されるまで、スロットA1/B1を介して残りのDIMMスティックを循環させます。実際には、欠陥のあるDIMMが複数ある場合があることに注意してください。

更新#2:

memtestを使用して、1つの不良DIMMが識別されました。チェックサムは問題なく、一貫しています。

3
heynnema