dd および md5sum ツールを使用したハードドライブのチェック

dd および md5sum ツールを使用したハードドライブのチェック

新しい外付けUSB 3.0ハードドライブを購入しましたWD エレメンツ 2TBそして、それを
使って確認してみることにしましたddそしてmd5sumツール。

まず、すべてのハードドライブをゼロにしました。

root@yurko-laptop:/home/yurko-laptop# dd if=/dev/zero of=/dev/sdb bs=16M
dd: запись «/dev/sdb»: На устройстве кончилось место
119232+0 записей считано
119231+0 записей написано
скопировано 2000365289472 байта (2,0 TB), 91532,5 c, 21,9 MB/c

その後、私はMD5サムを計算しようとしました。
しかし、コマンドを実行すると、読み取りエラーに関するメッセージが表示されました:

root@yurko-laptop:/home/yurko-laptop# head -c 2000365289472 /dev/sdb | md5sum
head: ошибка чтения «/dev/sdb»: Ошибка ввода/вывода
5132d3021b8570c6009877dfd132631f  -

以前、USB スティックに対してこの手順を実行しましたが、エラーや警告は発生せず動作しました。

さらに、md5sum/dev/sdbとの結果は/dev/zero異なりました:

yurko-laptop@yurko-laptop:~$ head -c 2000365289472 /dev/zero | md5sum
2635e14edab6b044de7d63dd9a242273  -

主なアイデアは、ハードドライブをゼロにした後md5sum結果は同一である必要があります。

これは、ハードドライブが不良であることを意味しますか、それともこのアプローチは役に立たないことを意味しますか?


アップデート:

私の場合fdisk -l /dev/sdb、セクター サイズは 512 バイトです。

root@yurko-laptop:/home/yurko-laptop# fdisk -l /dev/sdb

Disk /dev/sdb: 2000.4 GB, 2000365289472 bytes
255 heads, 63 sectors/track, 243197 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

Disk /dev/sdb doesn't contain a valid partition table
root@yurko-laptop:/home/yurko-laptop#

それで:

合計 2000365289472 バイト / 512 セクター サイズ = 合計 3906963456 セクター、
(20 * 1024 * 1024) バイト / 512 セクター サイズ = 40960 セクター、
合計 3906963456 セクター - 40960 セクター = スキップするセクター 3906922496 個。

ドライブの最後の20MBをゼロにして、MD5サムを再度確認しましたが、
以前計算したものと同じでした。おそらく、
特定の方法があるのでしょう。コマンドは次のようになります/dev/sdb:

root@yurko-laptop:/home/yurko-laptop# dd if=/dev/zero of=/dev/sdb seek=3906922496
dd: запись в «/dev/sdb»: На устройстве кончилось место
40961+0 записей считано
40960+0 записей написано
скопировано 20971520 байт (21 MB), 4,05176 c, 5,2 MB/c
root@yurko-laptop:/home/yurko-laptop# head -c 2000365289472 /dev/sdb | md5sum
head: ошибка чтения «/dev/sdb»: Ошибка ввода/вывода
5132d3021b8570c6009877dfd132631f  -
root@yurko-laptop:/home/yurko-laptop#

繰り返しますが、USB スティックの場合は機能しました。

使用しようとしたときスマートCTこのハードドライブは SMART テクノロジーをサポートしていないことがわかりました。

root@yurko-laptop:/# smartctl -a -d scsi /dev/sdb
smartctl 5.40 2010-07-12 r3124 [i686-pc-linux-gnu] (local build)
Copyright (C) 2002-10 by Bruce Allen, http://smartmontools.sourceforge.net

Device: WD       Elements 10B8    Version: 1007
Serial number: WX21AB3Y5219    
Device type: disk
Local Time is: Sun Aug 17 14:42:49 2014 EEST
Device does not support SMART

Error Counter logging not supported
No self-tests have been logged
root@yurko-laptop:/# 

それでも、私はこの調査から大きな満足感を得ました。

答え1

1 つの問題は、ハード ドライブが必ずしも 16 MB のブロック全体に収まるとは限らず、その結果、ドライブの最後の 15 MB が工場出荷時のランダム データまたは Windows フォーマットのジャンクとなり、異なる md5 が生成されることです。

/dev/zero から md5 を実行するものは何もありません。これは仮想です。まず、論理/物理セクター サイズを確認してください。

 sudo fdisk -l /dev/sdb

新しいドライブの場合は 4096 になります。つまり、ドライブを 4096 個のゼロのチャンク (ブロック サイズ) で完全に埋めることができるということです。

dd if=/dev/zero of=/dev/sdb bs=4096 conv=notrunc,noerror & pid=$!
kill -USR1 $pidnumer

「conv=notrunc,noerror & pid=$!」の部分は省略できます。kill -USR1 $pidnumer は、ゼロ化がどの程度進んでいるかを表示します。conv と noerror は、すべてのブロックが試行され、エラーが発生すると (エラーはターミナルに表示されます)、ゼロ化が続行されることを保証します。詳細 @

man dd

また、セクター数とスキップする必要があるセクター数を計算して、ドライブの最後の 20 MB をゼロにすることもできます (ディスク サイズをバイト単位で確認するには、fdisk -l を確認してください)。2,000,000,000,000 バイト / 4096 = 合計 488281250 セクター。20,000,768 バイト / 4096 = 4883 セクター 488281250 - 4883 = シークするセクター 488276367

 dd if=/dev/zero of=/dev/sdb bs=4096 seek=488276367 conv=notrunc,noerror & pid=$!

その後、md5を再度チェックしてください。入力/出力エラーがあった場合、ddはとにかくそれを表示します。より優れたHDDテストツールはsmartmontoolsです。

smartctl -a /dev/sdb Reallocated_sectors、再割り当てされたセクター数、オフラインで修正不可能なセクター、保留中のセクターを探します。そしてエラーログ。前述の値はすべて悪い知らせであり、HDD を保証対象にします。また、たとえば bonnie++ を試して、USB ディスク (種類は問いません) にパーティションを作成し、フォーマットして、たとえば /dev/sdb1 にマウントすることもできます。

bonnie++ -u root -d /mnt/sdb1 -n 10:100000000:100:4096 -x 3 -m 5gb

また、bonnie の結果と /var/log/syslog およびその他のログで入出力エラーを確認します。

関連情報