Diferenças entre hdparm --read-sector e dd com “Current Pending Sectors”

1

Esta foi originalmente uma "resposta" para Como usar o hdparm para corrigir um setor pendente?

Eu recebi notificações SMART pelo mesmo "setor pendente atual" por dias. As soluções de dd não estavam resolvendo nada (elas pareciam não ter dados e as reescreviam, mas não afetavam o status inteligente). Esteja avisado, eu não sou guru sobre isso, apenas comandos de cultivo de carga em fóruns.

Os comandos dd que usei sem alterar a situação:

# read to file (all cmds ran w/o errors)
dd if=/dev/sdb of=bl.$BLOCK bs=1024 count=1 iflag=direct skip=$BLOCK
# zero out
dd if=/dev/zero of=/dev/sdb bs=1024 count=1 conv=noerror,sync seek=$BLOCK
# read the zeroes back
dd if=/dev/sdb of=/dev/stdout bs=1024 count=1 iflag=direct skip=$BLOCK | xxd
# write real data back out
dd if=bl.$BLOCK of=/dev/sdb bs=1024 count=1 iflag=direct seek=$BLOCK
# verify they match
dd if=/dev/sdb of=/dev/stdout bs=1024 count=1 iflag=direct skip=$BLOCK | xxd \
 | diff - <(xxd bl.$BLOCK)
# still have the Current_Pending_Sector error
smartctl -A /dev/sdb | grep Pend
197 Current_Pending_Sector  0x0032   200   200   000 .. 1

Os comandos hdparm que limparam a contagem Current_Pending_Sector:

hdparm --read-sector $BLOCK /dev/sdb # data (didn't seem to match dd out)
# this was very slow on the first block
hdparm --write-sector $BLOCK /dev/sdb
hdparm --read-sector $BLOCK /dev/sdb # zeros
smartctl -A /dev/sdb | grep Pend
197 Current_Pending_Sector  0x0032   200   200   000  .. 0

Eu não recebi nenhum erro de leitura / gravação com nenhum desses comandos, então a ausência de erros pode ser apenas a unidade capaz de efetivamente encobri-los de alguma forma.

Além disso, a exibição dos dd novamente parece restaurar os dados. mas mesmo assim o hdparm --read-sector mostraria zeros. Eu estou interpretando isso como o hdparm falando para a unidade em um nível inferior e forçando as gravações pendentes, mas dd apenas vê as unidades remapeadas resultados ... é isso que poderia estar acontecendo?

Atualizar Um post aleatório apontando a diferença entre o hdparm e o dd . O hdparm-9.42 tem uma mudança para "forçar despejos do setor (ler setor, identificar, ..) para usar o formato de saída le16".

    
por bsb 17.08.2013 / 03:21

0 respostas