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 스틱의 경우 작동했습니다.

제가 사용하려고 했을 때smartctr, 이 하드 드라이브가 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

한 가지 문제는 하드 드라이브가 반드시 전체 16MB 블록에 맞지는 않으며 결과적으로 드라이브의 마지막 15MB가 공장에서 임의의 데이터이거나 일부 Windows 포맷 정크이므로 다른 md5를 생성한다는 것입니다.

/dev/zero 에는 md5에 아무것도 없습니다! 가상입니다. 먼저 논리/물리 섹터 크기를 확인하세요!

 sudo fdisk -l /dev/sdb

새 드라이브의 경우 4096이어야 합니다. 즉, 드라이브를 4096개의 0 청크(블록 크기)로 완전히 채울 수 있음을 의미합니다.

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

또한 섹터 수와 건너뛰어야 하는 섹터 수를 계산하여 드라이브의 마지막 20M만 0으로 만들 수도 있습니다(디스크 크기(바이트 단위)는 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 재할당된_섹터, 재할당된 섹터 수, 수정할 수 없는 오프라인, 보류 중인 섹터를 찾습니다. 그리고 오류 로그. 앞서 언급한 값 중 하나라도 나쁜 소식이므로 HDD에 보증이 적용됩니다. 또한 bonnie++를 시도해 볼 수도 있습니다. 예를 들어 USB 디스크에 파티션을 만들고(어떤 유형인지는 중요하지 않음) 포맷한 후 예를 들어 /dev/sdb1에 마운트할 수 있습니다.

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

그리고 Bonnie 결과와 /var/log/syslog 및 기타 로그에서 입력 출력 오류를 확인하세요.

관련 정보