У меня есть диск, который сообщает, что текущие ожидающие секторы "45". я использовал badblocks чтобы идентифицировать секторы, и я пытался написать им нули с дд ,
Из того, что я понимаю, когда я пытаюсь записать данные непосредственно в поврежденные сектора, это должно вызвать перераспределение, уменьшая текущие ожидающие сектора на один и увеличивая количество перераспределенных секторов.
Однако на этом диске необработанные значения Reallocated_Sector_Ct и Reallocated_Event_Count равны 0, и дд не удается с ошибками ввода / вывода, когда я пытаюсь записать нули в поврежденные сектора. дд работает хорошо, однако, когда я пишу в хороший сектор.
# dd if=/dev/zero of=/dev/sdb bs=512 count=1 seek=217152
dd: error writing ‘/dev/sdb’: Input/output error
Означает ли это, что на моем диске нет резервных секторов для перераспределения? Мой привод просто ужасный человек? (На самом деле диск не мой, я помогаю другу. Возможно, они только что получили дешевый диск или что-то в этом роде.)
В случае, если это уместно, вот вывод smartctl -i :
Model Family: Western Digital Caviar Green (AF)
Device Model: WDC WD15EARS-00Z5B1
Serial Number: WD-WMAVU3027748
LU WWN Device Id: 5 0014ee 25998d213
Firmware Version: 80.00A80
User Capacity: 1,500,301,910,016 bytes [1.50 TB]
Sector Size: 512 bytes logical/physical
Device is: In smartctl database [for details use: -P show]
ATA Version is: ATA8-ACS (minor revision not indicated)
SATA Version is: SATA 2.6, 3.0 Gb/s
Local Time is: Fri Oct 18 17:47:29 2013 CDT
SMART support is: Available - device has SMART capability.
SMART support is: Enabled
ОБНОВИТЬ:
Я бегал shred
на диске, из-за которого Current_Pending_Sector обнулялся. Однако Reallocated_Sector_Ct и Reallocated_Event_Count по-прежнему равны нулю, и теперь dd может записывать данные в сектора, которые ранее были недоступны. Это приводит меня к нескольким другим вопросам:
Почему перераспределения не записываются диском? Я предполагаю, что перераспределение произошло, поскольку теперь я могу записывать данные непосредственно в сектор, а раньше не мог.
Почему шред вызвал перераспределение, а не дд? Имеет ли значение тот факт, что shred записывает случайные данные, а не просто нули?
источник
Uncorrectable Sector Count
больше нуля?Ответы:
Привод WD15EARS (и большинство других недавно выпущенных накопителей) использует Расширенный формат Это означает, что реальный размер физического сектора этого накопителя составляет 4 КиБ, а традиционный размер сектора в 512 байт просто эмулируется. Из-за этого, если один физический сектор размером 4 Кбайт выходит из строя, все 8 соответствующих эмулированных 512-байтовых секторов сразу становятся нечитаемыми.
(The
Sector Size: 512 bytes logical/physical
вывод изsmartctl
не правильно, потому что некоторые диски WD15EARS сообщают о неправильном размере физического сектора - очевидно, на вашем диске установлена версия прошивки, которая в этом отношении не работает.)Более того, когда записывается один эмулированный 512-байтовый сектор, накопителю расширенного формата фактически необходимо прочитать весь физический сектор размером 4 КБ, изменить соответствующую его 512-байтовую часть, а затем записать весь физический сектор на носитель. Если носитель исправен, эта операция чтения-изменения-записи просто вызывает значительное замедление по сравнению с диском с реальными 512-байтовыми физическими секторами. Однако, если физический сектор 4 КиБ неисправен и не может быть прочитан, любая операция записи, которая не переписывает сектор полностью, завершится неудачей. Из-за этого вы не можете принудительно перераспределить сектор на таких дисках, используя
dd
сbs=512 count=1
- вы должны использовать хотя быbs=512 count=8
и убедитесь, что номер сектора вseek=
параметр, кратный 8. (Предполагается, что перемычка «Windows XP Compatible» не установлена, в противном случае необходимо также учитывать смещение выравнивания, добавленное этой перемычкой.)Еще одна причина, почему форсирование перераспределения
dd
может произойти сбой из-за того, что по умолчанию Linux использует кэш на уровне блоков для доступа к блочным устройствам, и это может привести к операциям чтения-изменения-записи в программном обеспечении, которые также могут завершиться ошибкой при обнаружении нечитаемого сектора. Вы можете добавитьoflag=direct
возможность обойти этот кеш для устройства, указанногоof=...
(есть такжеiflag=direct
опция, которая относится к устройству ввода).источник
Недавно мне пришлось это сделать, и я обнаружил, что работа с клочками на всем диске работает очень хорошо. Хотя крошка бесполезна по своему прямому назначению, кроме как на дискетах, она делает только то, что требуется для самовосстановления плохих блоков.
источник