Можно ли рассчитать, где физически находится поврежденный блок на жестком диске?

Я dd_rescueжесткий диск, и я знаю, где плохие блоки. У меня все еще есть диск, так что я могу получить любую информацию, необходимую от SMART или fdisk,

Я хотел бы знать, возможно ли физически увидеть, где находятся эти плохие блоки. Я слышал о секторах, дорожках, цилиндрах (по крайней мере, на старых дисках), но я не знаю точно, как организован диск, или математика, связанная с отображением блока в физический сектор. Я уверен, что это будет хорошее место для начала, и я буду искать его, как только смогу, но, поскольку сейчас у меня такая ситуация, я задаю вопрос заранее, чтобы любой мог помоги мне раньше.

В идеале у меня было бы (буквальное) изображение круглого диска, и я мог бы точно определить, где, на диске, скажем, блок #1000.

Это выполнимо? Вероятно, не на дисках с методами выравнивания износа, но, по крайней мере, на настольном жестком диске, таком как Western Digital Caviar Green, на который я смотрю, с более чем 40 тыс. Плохих блоков.

Это академический вопрос. Этот диск больше не будет доверенным, но я бы хотел увидеть, существует ли физическая модель.

1 ответ

Решение

Это действительно невозможно с современными дисками.

В старые времена диски были по сути тупыми устройствами (упрощенно, но придерживайтесь меня). Система будет запрашивать данные от конкретного цилиндра (физически кольцо на диске), головки (2 головки на пластину) и сектора (каждое кольцо имеет сектор с номером от 1 до любого). Контроллер велел диску переместиться в такое-то место CHS и прочитать или записать данные. Вы знали, что цилиндр 0 был рядом с краем диска, а самый высокий цилиндр был в корне. Действительно древние диски имели физическую метку, где сектор 1 находился в каждом цилиндре, так что вы могли открыть диск и почти увидеть расположение данных.

Современные диски имеют постоянное форматирование, которое включает адресную информацию, истинные физические адреса, а не логические, представленные контроллеру. Когда диск просят переместить головку на Большой Адрес Блока (LBA) 0, он сопоставляется с физическим сектором (вероятно, с фактическим первым сектором или рядом с ним, если только он не был переназначен). Но диск предсказывает, где этот сектор будет основан на алгоритме догадок. Затем он ждет, пока следующий сектор пролетит под головой, считывая адрес - если он угадал, он корректируется, если угадал, то читает / пишет сектор. Этот процесс угадывания необходим, потому что диск физически расширяется при нагревании, в результате чего сектор находится в другом месте, когда диск теплый или холодный. Кроме того, в каждом цилиндре не одинаковое количество секторов. Старые диски CHS имели физически разные размеры секторов из-за системы адресации. Современные диски имеют постоянный размер секторов, потому что они просто нумеруются от 0 до любого другого последовательного числа.

Составляя ваш вопрос, поскольку диск обнаруживает секторы, которые могут или действительно имеют проблемы, он переопределяет их молча (SMART показывает, но это не ошибка для операционной системы хоста, пока он не читается - или диски SCSI могут быть уведомлены об уведомлении операционной системы хоста), Таким образом, логические LBA, которые вы видите, могут не соответствовать физическим адресам, внутренним для диска.

Другие вопросы по тегам