Логическая адресация блоков - Logical block addressing

Логическая адресация блоков (LBA) - распространенная схема, используемая для определения местоположения блоки данных хранится на компьютерное хранилище устройства, как правило вторичное хранилище такие системы как жесткие диски. LBA - это особенно простой линейная адресация схема; блоки расположены по целочисленному индексу, причем первый блок имеет значение LBA 0, второй LBA 1 и так далее.

В IDE стандарт включал 22-битный LBA в качестве опции, который был расширен до 28-битного с выпуском ATA-1 (1994) и до 48-битного с выпуском ATA-6 (2003), тогда как размер записей в структуры данных на диске и в памяти, содержащие адрес, обычно имеют размер 32 или 64 бита. Большинство жестких дисков, выпущенных после 1996 года, используют адресацию логических блоков.

Обзор

При адресации логических блоков для адресации данных используется только одно число, и каждый линейный базовый адрес описывает отдельный блок.

Схема LBA заменяет более ранние схемы, которые открывали физические детали устройства хранения программному обеспечению операционной системы. Главным из них был сектор головки блока цилиндров (CHS) схема, где адресация блоков осуществлялась с помощью кортеж которые определяют цилиндр, головку и сектор, в котором они появляются на жесткий диск. CHS плохо отображался на устройствах, отличных от жестких дисков (таких как ленты и сетевое хранилище), и обычно не использовался для них. CHS использовался в начале MFM и RLL приводы, и как он, так и его преемник, расширенный сектор ГБЦ (ECHS), использовались в первых ATA диски. Однако современные диски используют зона битовой записи, где количество секторов на дорожке зависит от номера дорожки. Несмотря на то, что дисковод будет сообщать некоторые значения CHS в виде секторов на дорожку (SPT) и головок на цилиндр (HPC), они имеют мало общего с истинной геометрией дисковода.

LBA была впервые представлена ​​в SCSI как абстракция. Хотя контроллер дисковода по-прежнему обращается к блокам данных по их адресу CHS, эта информация обычно не используется драйвером устройства SCSI, ОС, кодом файловой системы или любыми приложениями (такими как базы данных), которые обращаются к «сырому» диску. Системные вызовы, требующие ввода-вывода на уровне блоков, передают определения LBA драйверу устройства хранения; в простых случаях (когда один том отображается на один физический диск) этот LBA затем передается непосредственно контроллеру диска.

В избыточный массив независимых дисков (RAID) устройства и сети хранения данных (SAN) и где логические диски (номера логических единиц, LUN) создаются с помощью виртуализации и агрегации LUN, адресация LBA отдельного диска должна транслироваться программным уровнем, чтобы обеспечить единообразную адресацию LBA для всего устройства хранения.

Расширенный BIOS

Более ранний стандарт IDE от Western Digital представил 22-битный LBA; в 1994 г. Стандарт ATA-1 разрешены 28-битные адреса в режимах LBA и CHS. Схема CHS использовала 16 бит для цилиндра, 4 бита для головы и 8 бит для сектора, подсчитывая секторы от 1 до 255. Это означает, что сообщаемое количество головок никогда не превышает 16 (0–15), количество секторов может быть 255 ( 1–255; хотя чаще всего используется 63), а количество цилиндров может достигать 65 536 (0–65 535), ограничивая размер диска 128 ГиБ (≈137,4 ГБ), при условии, что секторы размером 512 байт. Доступ к этим значениям можно получить, выполнив команду ATA «Идентифицировать устройство» (ЕСз) к приводу.[1]

Однако IBM BIOS реализация, определенная в ИНТ 13ч подпрограммы доступа к диску использовали совершенно иную 24-битную схему для адресации CHS: 10 бит для цилиндра, 8 бит для головки и 6 бит для сектора, или 1024 цилиндра, 256 головок и 63 сектора.[2] Эта реализация INT 13h предшествовала стандарту ATA, поскольку он был представлен, когда IBM PC имел только дискета хранилище, и когда жесткие диски были представлены на IBM PC / XT, Интерфейс INT 13h практически не мог быть переработан из-за Обратная совместимость проблемы. Перекрытие отображения ATA CHS с отображением BIOS CHS дало наименьший общий знаменатель 10: 4: 6 бит или 1024 цилиндра, 16 головок и 63 сектора, что давало практический предел 1024 × 16 × 63 секторов и 528 МБ (504МиБ ), предполагая 512-байтовые сектора.

Для того, чтобы BIOS преодолел этот предел и успешно работал с жесткими дисками большего размера, в процедурах ввода-вывода диска BIOS должна была быть реализована схема трансляции CHS, которая преобразует 24-битный CHS, используемый INT 13h, в 28-битный CHS. нумерация, используемая ATA. Схема перевода называлась большой или преобразование сдвига битов. Этот метод будет переназначать 16: 4: 8-битные цилиндры и головки ATA на 10: 8: 6-битную схему, используемую INT 13h, генерируя гораздо больше «виртуальных» головок дисковода, чем сообщалось на физическом диске. Это увеличило практический предел до 1024 × 256 × 63 секторов, или 8,4 ГБ (7,8ГиБ ).

Чтобы еще больше преодолеть этот предел, INT 13h Расширения были представлены с Сервисы расширенных дисков BIOS, который снял практические ограничения на размер диска для операционных систем, которые знают об этом новом интерфейсе, например DOS 7.0 компонент в Windows 95. Этот расширенный BIOS подсистема поддерживает адресацию LBA с LBA или LBA-помощь , который использует собственный 28-битный LBA для адресации дисков ATA и при необходимости выполняет преобразование CHS.

В нормальный или никто метод возвращается к более раннему 10: 4: 6-битному режиму CHS, который не поддерживает адресацию более 528 МБ.

Установка OEM-версии Western Digital EZ Drive, на 3,5-дюймовой дискете.

До выпуска стандарта ATA-2 в 1996 году было несколько больших жестких дисков, которые не поддерживали адресацию LBA, поэтому только большой или нормальный методы могут быть использованы. Однако, используя большой Метод также привел к проблемам переносимости, поскольку разные BIOS часто использовали разные и несовместимые методы трансляции, а жесткие диски, разделенные на разделы на компьютере с BIOS от определенного производителя, часто не могли быть прочитаны на компьютере с BIOS другого производителя. Решением было использовать программное обеспечение для преобразования, такое как OnTrack Disk Manager, Micro House EZ-Drive / EZ-BIOS и др., Которые устанавливаются на диск Загрузчик ОС и заменил процедуры INT 13h во время загрузки на собственный код. Это программное обеспечение также может включать поддержку LBA и INT 13h Extensions для старых компьютеров с несовместимыми с LBA BIOS.

LBA-перевод

Когда BIOS настроен на использование диска в режиме трансляции с помощью LBA, BIOS обращается к оборудованию в режиме LBA, но также представляет преобразованную геометрию CHS через интерфейс INT 13h. Количество цилиндров, головок и секторов в преобразованной геометрии зависит от общего размера диска, как показано в следующей таблице.[3]

Размер дискаСекторы / трекГоловыЦилиндров
1 6316X ÷ (63 × 16 × 512)
504 МБ 6332Х ÷ (63 × 32 × 512)
1008 МБ 6364Х ÷ (63 × 64 × 512)
2016 МиБ 63128X ÷ (63 × 128 × 512)
4032 МБ 63255X ÷ (63 × 255 × 512)

LBA48

Текущая 48-битная схема LBA была представлена ​​в 2003 году с АТА-6 стандарт[4] увеличение адресации до 248 × 512 байт, что равно 128 ПиБ или примерно 144,1PB. Современные ПК-совместимые компьютеры поддерживают расширения INT 13h, которые используют 64-битные структуры для адресации LBA и должны охватывать любые будущие расширения адресации LBA, хотя современные операционные системы реализуют прямой доступ к диску и не используют BIOS подсистем, кроме загрузочная нагрузка время. Однако общий ДОС стиль Главная загрузочная запись (MBR) таблица разделов поддерживает только разделы диска до 2 Размер ТиБ. Для больших разделов это необходимо заменить другой схемой, например Таблица разделов GUID (GPT), который имеет тот же 64-битный лимит, что и текущие расширения INT 13h.

Преобразование CHS

Эквивалентность LBA и CHS с 16 головками на цилиндр
Значение LBAКортеж CHS
00, 0, 1
10, 0, 2
20, 0, 3
620, 0, 63
630, 1, 1
9450, 15, 1
10070, 15, 63
10081, 0, 1
10701, 0, 63
10711, 1, 1
11331, 1, 63
11341, 2, 1
20151, 15, 63
20162, 0, 1
16,12715, 15, 63
16,12816, 0, 1
32,25531, 15, 63
32,25632, 0, 1
16,450,55916319, 15, 63
16,514,06316382, 15, 63

В схеме адресации LBA секторы нумеруются как целочисленные индексы; при сопоставлении с CHS (сектор головки блока цилиндров ) кортежи, Нумерация LBA начинается с первого цилиндра, первой головки и первого сектора дорожки. Как только гусеница исчерпана, нумерация продолжается до второй головки, оставаясь внутри первого цилиндра. Когда все головки внутри первого цилиндра исчерпаны, нумерация продолжается со второго цилиндра и т. Д. Таким образом, чем ниже значение LBA, тем ближе физический сектор к первому (т.е.[5]) цилиндр.

Кортежи CHS могут быть сопоставлены с адресом LBA по следующей формуле:[6][7]

LBA = (C × HPC + ЧАС) × SPT + (S - 1)

где

  • C, ЧАС и S номер цилиндра, номер головки и номер сектора
  • LBA это логический адрес блока
  • HPC - максимальное количество головок на цилиндр (сообщается диском, обычно 16 для 28-битного LBA)
  • SPT - максимальное количество секторов на дорожку (сообщает диск, обычно 63 для 28-битного LBA)

Адреса LBA могут быть сопоставлены кортежам CHS с помощью следующей формулы ("mod" - это операция по модулю, т.е. остаток, а "÷" - целочисленное деление, т.е. частное деления, в котором отброшена дробная часть):

C = LBA ÷ (HPC × SPT)
ЧАС = (LBA ÷ SPT) мод HPC
S = (LBA мод SPT) + 1

Согласно спецификациям ATA, «Если содержание слов (61:60) больше или равно 16 514 064, то содержание слова 1 [количество логических цилиндров] должно быть равно 16 383».[1] Следовательно, для LBA 16450559 диск ATA может фактически отвечать с помощью CHS. кортеж (16319, 15, 63), а количество цилиндров в этой схеме должно быть намного больше 1024, разрешенных INT 13h.[а]

Зависимости операционной системы

Операционные системы, чувствительные к геометрии диска, сообщаемой BIOS, включают Солярис, ДОС и семейство Windows NT, где NTLDR (NT, 2000, XP, Сервер 2003 ) или WINLOAD (Vista, Сервер 2008, Windows 7 и Сервер 2008 R2 ) использовать Главная загрузочная запись который обращается к диску с помощью CHS; x86-64 и Itanium версии Windows могут разбивать диск на Таблица разделов GUID который использует адресацию LBA.

Некоторые операционные системы не требуют перевода, потому что они не используют геометрию, указанную BIOS в своих загрузчики. Среди этих операционных систем BSD, Linux, macOS, OS / 2 и ReactOS.

Смотрите также

Примечания

  1. ^ Хотя при адресации CHS определенно используется математическая концепция кортеж, это также можно рассматривать как пример общей схемы, называемой смешанный корень рассматривая его цилиндры, головки и секторы как имеющие разные числовые основы; например, число цилиндров от 0 до 1023, головок от 0 до 254 и секторов от 1 до 63.

Рекомендации

  1. ^ а б Рабочий проект ATA / ATAPI-5 Разделы 6.2.1 и 8.12 Технического комитета T13 от 29 февраля 2000 г.
  2. ^ «KB224526: Windows NT 4.0 поддерживает системный раздел размером не более 7,8 ГБ». Support.microsoft.com. 2007-02-23. Получено 2013-07-30.
  3. ^ Steunebrink, янв. «Ограничения жесткого диска BIOS IDE». Архивировано из оригинал 6 октября 2013 г.. Получено 6 октября 2013.
  4. ^ «Информационные технологии - AT Attachment с пакетным интерфейсом - 6 (ATA / ATAPI-6)» (PDF).
  5. ^ «Основы работы с жестким диском». active-undelete.com. Получено 2015-02-10. Номера дорожек начинаются с 0, а дорожка 0 является самой внешней дорожкой на диске. Дорожка с самым высоким номером находится рядом со шпинделем.
  6. ^ "Large Disk HOWTO, раздел 3. Доступ к диску". tldp.org. 2004-11-08. Получено 2015-02-10.
  7. ^ «Формулы преобразования CHS в LBA». pcrepairclass.tripod.com. Получено 2014-08-26.

внешняя ссылка