Адресация данных жесткого диска
Минимальной адресуемой областью данных на жёстком диске является сектор. Размер сектора традиционно равен 512 байт.
Существует 2 основных способа адресации секторов на диске: цилиндр-головка-сектор (англ. cylinder-head-sector, CHS) и линейная адресация блоков (англ. linear block addressing, LBA).
CHS (от англ. Cylinder, Head, Sector — цилиндр, головка, сектор) — система адресации сектора, как минимальной единицы хранения данных в накопителях на жёстких магнитных дисках, накопителях на гибких магнитных дисках и т.п, основанная на использовании физических адресов геометрии диска.
В этой системе сектор адресуется кортежем из трёх координат: цилиндр-головка-сектор (Cylinder, Head, Sector), именно так, как он физически расположен на диске.
Под цилиндром понимается совокупность дорожек одинакового радиуса на всех магнитных поверхностях пластин одного накопителя.
Контроллер жёсткого диска интерпретирует значение в радиус, на который передвигается магнитная головка чтения. С каждой магнитной поверхности магнитного диска чтение производит только одна головка, следовательно, указывая головку, мы также указываем ту поверхность, с которой следует считывать информацию. Сектор диска, как понятно из геометричекого определения, интерпретируется как диапазон градуса поворота диска.
Очевидно, что такая схема плохо подходит к не дисковым устройствам хранения (ленты, сетевые хранилища), потому и не используется для них. Схема CHS и её расширенная версия ECHS использовались на ранних приводах ATA использующих интерфейс ESDI.
В жёстких дисках объёмом более 524 Мб со встроенными контроллерами эти координаты уже не соответствуют физическому положению сектора на диске и являются «логическими координатами». Так, механизм адресации Large сообщал BIOS вдвое большее число головок и вдвое меньшее число цилиндров. Затем контроллеры стали сообщать, будто в дорожке 63 сектора, а в цилиндре 255 дорожек (максимально допустимые значения), число же цилиндров подбирается сообразно объему. Представить жесткий диск с такими характеристиками трудно — он бы состоял из 128 пластин, поэтому контроллер занят преобразованием логических адресов в физические координаты. Реальное число секторов в современном диске — около ста, и дорожек бывает не больше шести.
LBA (англ. Logical block addressing) — механизм адресации и доступа к блоку данных на жёстком или оптическом диске, при котором системному контроллеру нет необходимости учитывать геометрию самого жесткого диска (количество цилиндров, сторон, секторов на цилиндре). Контроллеры современных IDE дисков в качестве основного режима трансляции адреса используют LBA.
Привод, способный поддерживать режим LBA, сообщает об этом в информации идентификации привода.
Суть LBA состоит в том, что каждый блок, адресуемый на жёстком диске имеет свой номер, целое число, начиная с нуля и т. д. (то есть первый блок LBA=0, второй LBA=1, ...)
LBA 0 = Цилиндр 0/Головка 0/Сектор 1
Еще одно преимущество метода адресования LBA — то, что ограничение размера диска обусловлено лишь разрядностью LBA. В настоящее время для задания номера блока используется 48 бит, что при использовании двоичной системы исчисления даёт возможность адресовать на приводе (248) 281 474 976 710 656 блоков (то есть, при блоке в 512 байт, 128 ПиБ).
LBA заменяет собой более ранние схемы (CHS и Large), в которых нужно было учитывать физические особенности устройства дисков.
Технический комитет X3T10 установил правила получения адреса блока в режиме LBA:
· LBA — адрес блока по LBA.
· Cylinder — номер цилиндра.
· noofheads — количество головок.
· heads — номер выбранной головки.
· sectors/track — количество секторов на одной дорожке.
· Sector — номер сектора.
Преобразования между CHS и LBA
Кортежи CHS можно преобразовать в адреса LBA и обратно по следующим формулам:
где — номер цилиндра, - номер головки, - номер сектора, — число головок, — число секторов на дорожке, — операция взятия остатка от деления.