Пользователю отведена рабочая область, часто называемая логическим дисковым пространством, и именно ее емкость указывается в характеристиках модели жесткого диска. Обращение к рабочей области, представляющей неразрывную цепочку логических секторов (блоков), осуществляется через номер сектора, именуемого LBA, начинающегося с 0 и заканчивающегося максимально доступным сектором, именуемым MAX LBA. Последовательность номеров LBA не зависит ни от модели жесткого диска, ни от производителя, т.е. стандартна. Номера передаются в командах чтения/записи через интерфейс драйвером дискового устройства операционной системы. Связь между логическим дисковым пространством (линейным пространством LBA) и расположением физических секторов по трекам, головкам и зонам осуществляется через специальную программу - транслятор, которая учитывает физический формат, зонное распределение и исключенные из работы дефектные сектора и треки.
Во всех операционных системах существует возможность работать с файлами, поэтому в качестве отправной точки возьмем именно их. На рисунке 19 представлена схема принципа расположения файла в пространстве доступных ОС секторов жесткого диска.
Для удобства работы файловой системы, все файлы разделены на части, называемые кластерами. Количество кластеров, выделенных для хранения файла, зависит от размера файла, но не менее одного. Кластера, занимаемые файлом, перечислены в специальной таблице файловой системы (метаданные). В разных файловых системах таблицы расположения файлов организованы различным способом. Если из-за какого-либо сбоя, например, нестабильной работы компьютера или выключения питания в момент записи таблицы файлов, произойдет повреждение информации о расположении файла, то он не будет доступен по своему обычному месту расположения. В этом случае его восстановление касается только уровня таблицы расположения файлов и называется логическим восстановлением.
Каждый кластер раздела, где расположен рассматриваемый файл, состоит из нескольких последовательно идущих секторов, количество которых фиксировано для данного раздела. Количество секторов в кластере определяется на этапе форматирования раздела операционной системой и остается неизменным до следующего момента форматирования жесткого диска. Если данные, описывающие структуру раздела, стерты, например, FAT или NTFS boot-сектор, то количество секторов в кластере будет неизвестно и его придется определять.
Логический сектор с номером LBA отображается на физический сектор с координатами трека, головки, сектора, зоны2 при помощи программы транслятора. Физический сектор, кроме 512 байт данных логического сектора, содержит дополнительную информацию служебного характера. В современных дисках физический сектор больше 512 байт, обычно 4096 байт.
Логические сектора еще со времен первых утилит работы с жесткими дисками принято отображать в виде последовательности прямоугольников.
Физическая координата сектора для краткости обозначается PCHS.
Программа трансляции (сокращенно: транслятор) кроме того, что определяет связь между логическими и физическими координатами секторов, еще и осуществляет пропуск дефектных секторов, тем самым исключая их из последовательности LBA секторов пользователя. Современная технология изготовления магнитных дисков не позволяет изготовить диски без дефектов. Неоднородность материала носителя, дефекты шлифовки, примеси при напылении магнитного слоя и т.д. приводят к областям, на которых запись и чтение данных заканчивается ошибкой. В жестком диске имеется избыточность по емкости, но она скрыта от пользователя и доступна только программе управления.
Занесение номеров дефектных секторов производится на заводе в процессе производства жесткого диска. Номера всех выявленных BAD-секторов помещаются в таблицу, из которой после ее заполнения и формируется программа трансляции. Такая процедура называется скрытием дефектов. Теперь, при работе жесткого диска, обращений со стороны операционной системы к дефектным секторам не будет, так как они исключены из последовательности номеров LBA. Данную операцию можно сравнить с простым назначением номеров секторам. На рисунке 20. изначально все сектора были пронумерованы от 0 до 1000000. После того, как в ходе испытаний было определено, что сектор 3 работает нестабильно, все сектора за ним были перенумерованы, а самый последний номер сектора 1000000, которому не хватило места, был дополнен из резерва. При этом количество секторов в резерве R стало на 1 меньше. Таблицу с записями о координатах дефектных секторах, участвующую в формировании транслятора, называют P-List.
Но что же произойдет, если программа трансляции окажется стертой? На рисунке ниже. продемонстрирован один из возможных вариантов повреждения. Предположим, что дефектный сектор, изначально находившийся между секторами 2 и 3, является первым дефектным сектором и до него секторов не встречалось. Чистый транслятор подключит ранее скрытые сектора снова в пространство LBA, доступные операционной системе. Далее, в зависимости от особенности конструкции жесткого диска, возможны два варианта развития событий:
- В результате рассматриваемый файл будет поврежден, а все следующие за ним файлы будут смещены на 1 сектор, что приведет к катастрофическим последствиям, не позволяющим корректно прочитать ни один файл.
- Все сектора до первого дефектного сектора будут читаться, а все остальные сектора HDD будут считываться с ошибкой.
Именно поэтому модули транслятора, расположенные в служебной зоне HDD, являются критичными для доступа к данным и с их потерей прочитать данные пользователя невозможно.
Во многих накопителях реализован еще один механизм исключения из пространства LBA дефектных секторов (рисунок ниже). Если не вдаваться в детали, то этот механизм работает так: когда в процессе операций чтения жесткий диск находит сектор, который не может прочитать, он его помещает в таблицу, именуемую G-List, как кандидат на дефектный сектор и возвращает компьютеру ошибку чтения сектора. Но если в этот сектор попробовать записать данные, то программа управления жестким диском обнаружит, что этот сектор был помечен как кандидат и произведет его замену на исправный сектор из резерва.
На практике же наблюдается другая картина. Иногда возникает сбой записи секторов по причине временной неисправности элемента записи, например, из-за перегрева жесткого диска. Через какое-то количество операций чтения/записи операционная система запрашивает сектора, записанные уже во время возникновения сбоя записи. Эти сектора не могут быть прочитаны, так как некорректно записаны, и программа управления жестким диском пытается занести их в G-List. Но и запись в служебную зону сопровождается повреждением секторов как в модуле G-List, так и на соседних с ним треках. В результате программа зависает и завешивает компьютер, после чего либо жесткий диск не определяется в BIOS’е компьютера, либо файловая система имеет множественные BAD-сектора в самых часто перезаписываемых областях, таких как таблицы FAT или MFT в случае NTFS, записи о каталогах и др.
В случае SMR-дисков механизм трансляции значительно сложнее, а именно, данные на диск записываются не последовательно, как раньше, а в порядке их поступления от операционной системы.
статья подготовлена по материалам ACELab