Изначально это был "ответ" на Как использовать hdparm для исправления отложенного сектора?
Я получал SMART-уведомления для одного и того же «Текущего ожидающего сектора» в течение нескольких дней. В dd
решения вокруг ничего не решали (они бы обнуляли данные и переписывали их, но не влияли на интеллектуальный статус). Предупреждаю, я не гуру по этому поводу, просто команды с форумов.
В dd
Команды, которые я использовал, не меняя ситуации:
# 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
Команды hdparm, которые очистили счетчик 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
Я не получал никаких ошибок чтения / записи ни с одной из этих команд, поэтому отсутствие ошибок может быть просто тем, что диск способен как-то эффективно их скрыть.
Кроме того, запуск dd
снова будет казаться, чтобы восстановить данные, но даже тогда hdparm --read-sector
показывал бы нули. Я интерпретирую это как hdparm, разговаривающий с диском на более низком уровне и вызывающий отложенные записи, но dd просто видит результаты переназначения дисков ... это то, что может происходить?
Обновить Случайный пост, в котором отмечается разница между выводом hdparm и dd. В hdparm-9.42 внесено изменение в «принудительный дамп секторов (чтение-сектор, определение, ..) для использования выходного формата le16».