Невозможно записать нули в поврежденные сектора / жесткий диск, не считая перераспределенные сектора

у меня есть диск, который сообщает, что текущие ожидающие сектора "45". Я использовал badblocks для идентификации секторов, и я пытался написать нули к ним с dd.

из того, что я понимаю, когда я пытаюсь записывать данные непосредственно в плохие сектора, это должно вызвать перераспределение, уменьшая текущие ожидающие сектора на один и увеличивая количество перераспределенных секторов.

впрочем, на этом диске оба И сырые значения Reallocated_Event_Count Reallocated_Sector_Ct равны 0, а dd завершает работу с ошибками ввода-вывода при попытке записи нулей в сбойные сектора. dd работает нормально, однако, когда я пишу в хороший сектор.

# 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 вызывает перераспределение, а не dd? Имеет ли значение тот факт, что shred пишет случайные данные, а не только нули?

1
задан MetaNova
01.03.2023 4:00 Количество просмотров материала 2687
Распечатать страницу

2 ответа

привод WD15EARS (и большинств другие недавно произведенные приводы) использует Расширенный Формат, что означает, что реальный размер физического сектора этого диска составляет 4 Кб, а традиционный размер сектора 512 байт просто эмулируется. Из-за этого, если один физический сектор размером 4 Кб выходит из строя, все 8 соответствующих эмулированных секторов размером 512 байт становятся нечитаемыми одновременно.

(том 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" не установлена, в противном случае смещение выравнивания, добавленное этой перемычкой, должно также следует учитывать.)

еще одна причина, почему принудительное перераспределение с dd может произойти сбой, так как по умолчанию Linux использует кэш на блочном уровне для доступа к блочным устройствам, и это может привести к операциям чтения, изменения и записи в программном обеспечении, что также приведет к сбою при обнаружении нечитаемого сектора. Вы можете добавить oflag=direct возможность обойти этот кэш для устройства, указанного of=... (там тоже iflag=direct опция, которая применяется к устройству ввода).

8
отвечен Sergey Vlasov 2023-03-02 11:48

Я должен был сделать это недавно и обнаружил, что работает shred на весь диск работал очень хорошо. В то время как shred бесполезен по назначению, за исключением дискет, он делает только то, что требуется, чтобы получить самовосстановление на плохих блоках.

0
отвечен emil 2023-03-02 14:05

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх