Назад | Перейти на главную страницу

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

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

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

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

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

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

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

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

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

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