
Comprei um novo disco rígido externo USB 3.0Elementos WD 2 TBe decidi verificar
usandodd,cabeçaemd5sumferramentas.
Primeiro 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 eu useicabeçacomando obtive mensagem sobre erro de leitura:
root@yurko-laptop:/home/yurko-laptop# head -c 2000365289472 /dev/sdb | md5sum
head: ошибка чтения «/dev/sdb»: Ошибка ввода/вывода
5132d3021b8570c6009877dfd132631f -
Já fiz esse procedimento antes para pendrives e funcionou sem erros ou avisos.
Além disso,md5sumresultados para /dev/sdb
e /dev/zero
foram diferentes:
yurko-laptop@yurko-laptop:~$ head -c 2000365289472 /dev/zero | md5sum
2635e14edab6b044de7d63dd9a242273 -
A ideia principal é que depois de zerar o disco rígidomd5sumos resultados devem ser idênticos.
Isso significa que este disco rígido está ruim ou esta abordagem não é útil nesse caso?
Atualizar:
No meu caso fdisk -l /dev/sdb
disse que o tamanho do setor é 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 no total / 512 tamanho do setor = 3906963456 setores no total,
(20 * 1024 * 1024) bytes / 512 tamanho do setor = 40.960 setores,
3906963456 setores no total - 40.960 setores = 3906922496 setores a serem ignorados.
Zerei os últimos 20 MB do drive e verifiquei novamente a soma md5,
porém foi igual ao calculado anteriormente. Talvez haja alguma
forma específicacabeçao comando diz /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#
Novamente, para pen drives funcionou.
Quando tentei usarsmartctr, descobri que este disco rígido não suporta a tecnologia 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:/#
Mesmo assim, tive muita satisfação com esta investigação.
Responder1
Um problema é que o seu disco rígido NÃO cabe necessariamente em blocos completos de 16 MB e, como resultado, o último, digamos 15 MB da unidade, são dados aleatórios de fábrica ou algum lixo de formatação do Windows, que gera um md5 diferente.
Não há nada para md5 de /dev/zero ! É virtual. Primeiro verifique qual é o tamanho do setor lógico/físico!
sudo fdisk -l /dev/sdb
Para uma nova unidade, deve ser 4096. Isso significa que você pode preencher sua unidade com 4096 pedaços (tamanho do 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 "conv=notrunc,noerror & pid=$!" peças; o kill -USR1 $pidnumer mostra o quanto a zeragem progrediu. conv e noerror apenas garantem que cada bloco seja tentado e em caso de erro (os erros são mostrados no terminal) a zeragem continua. mais @
man dd
Você também pode tentar 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 serem buscados
dd if=/dev/zero of=/dev/sdb bs=4096 seek=488276367 conv=notrunc,noerror & pid=$!
em seguida, verifique o md5 novamente. Se houvesse erros de entrada/saída, o dd o mostraria de qualquer maneira. Melhores ferramentas de teste de disco rígido são smartmontools
smartctl -a /dev/sdb Procure Reallocated_sectors, contagem de setores realocados, setores off-line incorrigíveis e pendentes. E log de erros. Quaisquer valores acima mencionados são más notícias e colocam o disco rígido na garantia. você também pode tentar bonnie++, por exemplo, criar uma partição no disco USB (não importa o tipo), formatá-lo e montá-lo, por exemplo, em /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 em busca de erros de entrada e saída.