Verificação do disco rígido usando as ferramentas dd e md5sum

0

Comprei um novo disco rígido externo USB 3.0 WD Elements 2 TB e decidi conferir-lo | usando as ferramentas dd , head e md5sum .

Primeiro eu zerei todo o disco rígido:

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

Depois disso, tentei calcular a soma md5 para isso.
No entanto, quando usei o comando head , obtive uma mensagem sobre erro de leitura:

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

Eu fiz este procedimento antes para pen drives USB e funcionou sem nenhum erro ou aviso.

Além disso, os resultados de md5sum para /dev/sdb e /dev/zero foram diferentes:

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

A idéia principal é que, após zerar os resultados do md5sum , o disco rígido deve ser idêntico.

Isso significa que esse disco rígido é ruim ou essa abordagem não é útil nesse caso?

Atualização:

No meu caso fdisk -l /dev/sdb disse que o tamanho do setor é de 512 bytes:

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#

Então:

2000365289472 bytes total / 512 tamanho do setor = 3906963456 setores no total,
(20 * 1024 * 1024) bytes / 512 tamanho do setor = 40960 setores,
3906963456 setores total - 40960 setores = 3906922496 setores para pular.

Eu zerei os últimos 20 MB da unidade e verifiquei a soma md5 novamente,
no entanto, foi o mesmo calculado anteriormente. Talvez haja alguns específico como o comando head /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#

Mais uma vez, para pen drives USB funcionou.

Quando tentei usar smartctr , descobri que esse disco rígido não suporta S.M.A.R.T. tecnologia:

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:/# 

Ainda assim, fiquei muito satisfeito com esta investigação.

    
por yurko 16.08.2014 / 22:14

1 resposta

2

Um problema é que o disco rígido NÃO se encaixa necessariamente em blocos de 16MB e, como resultado, o último, digamos 15MB da unidade, são dados aleatórios da fábrica ou algum tipo de formatação do Windows, que gera um MD5 diferente.

Não há nada para md5 de / dev / zero! É virtual. Primeiro verifique o tamanho do setor lógico / físico!

 sudo fdisk -l /dev/sdb

Para uma nova unidade, ela deve ser 4096. Isso significa que você pode preencher sua unidade com 4096 blocos (tamanho de bloco) de zeros completamente, então:

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

Você pode omitir o "conv = notrunc, noerror & pid = $!" partes; O kill -USR1 $ pidnumer mostra até onde o zeramento progrediu. conv e noerror apenas garantem que cada bloco seja julgado e sob erro (os erros são mostrados no terminal) o zeramento continua. mais @

man dd

Você também pode tentar apenas zerar os últimos 20M da unidade calculando quantos setores existem e quantos você precisa pular (verifique fdisk -l para o tamanho do disco em bytes). 2.000.000.000.000 bytes / 4096 = 488281250 setores no total. 20.000.768 bytes / 4096 = 4883setores 488281250-4883 = 488276367 setores a procurar

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

verifique novamente o md5 Se houvesse erros de entrada / saída, dd mostraria isso de qualquer maneira. Melhores ferramentas de teste de HDD são smartmontools

smartctl -a / dev / sdb Procure por Reallocated_sectors, reallocated sector count, offline incorrigível, setores pendentes. E log de erro. Quaisquer valores daqueles mencionados anteriormente são más notícias e trazem o disco rígido para garantia. também você pode tentar bonnie ++ por exemplo criar uma partição no disco usb (não importa qual tipo), formatá-lo e montá-lo para, por exemplo, / dev / sdb1

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

E verifique os resultados de bonnie e também / var / log / syslog e outros logs para erros de saída de entrada.

    
por 16.08.2014 / 22:49