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

редактировать

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

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

Содержание
  • 1 Обзор
  • 2 Расширенный BIOS
    • 2.1 Преобразование с помощью LBA
    • 2.2 LBA48
  • 3 Преобразование CHS
    • 3.1 Зависимости от операционной системы
  • 4 См. Также
  • 5 Примечания
  • 6 Ссылки
  • 7 Внешние ссылки
Обзор

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

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

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

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

Enhanced 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 «Идентифицировать устройство» (ECh) для накопителя.

Однако реализация IBM BIOS, определенная в INT 13h подпрограммы доступа к диску использовали совершенно другую 24-битную схему для адресации CHS: 10 бит для цилиндра, 8 бит для головы и 6 бит для сектора, или 1024 цилиндра, 256 головок и 63 сектора. Эта реализация 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 MiB ), предполагая 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 Extensions с BIOS Enhanced Disk Drive Services, которые сняли практические ограничения на размер диска для операционных систем, которые этого нового интерфейса, такого как компонент DOS 7.0 в Windows 95. Эта усовершенствованная подсистема BIOS поддерживает адресацию LBA с использованием метода LBA или с помощью LBA, который использует собственный 28-битный LBA для адресации дисков ATA и при необходимости выполняет преобразование CHS.

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

Установка OEM-версии EZ Drive от Western Digital на 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. Количество цилиндров, головок и секторов в преобразованной геометрии зависит от общего размера диска, как показано в следующей таблице.

Размер дискаСекторов / дорожкаГоловкиЦилиндры
1 < X ≤ 504 MiB6316X ÷ (63 × 16 × 512)
504 МБ < X ≤ 1008 MiB6332X ÷ (63 × 32 × 512)
1008 МБ < X ≤ 2016 MiB6364X ÷ (63 × 64 × 512)
2016 MiB < X ≤ 4032 MiB63128X ÷ (63 × 128 × 512)
4032 MiB < X ≤ 8032.5 MiB63255X ÷ (63 × 255 × 512)

LBA48

Текущая 48-битная схема LBA была представлена ​​в 2003 году со стандартом ATA-6, увеличив предел адресации до 2 × 512 байт, что ровно 128 PiB или приблизительно 144,1 PB. Современные ПК-совместимые компьютеры поддерживают расширения INT 13h, которые используют 64-битные структуры для адресации LBA и должны охватывать любые будущие расширения адресации LBA, хотя современные операционные системы реализуют прямой доступ к диску и не используют подсистемы BIOS, кроме времени загрузки. Однако общая таблица разделов DOS в стиле Master Boot Record (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, тем ближе физический сектор к первому (то есть самому внешнему) цилиндру жесткого диска.

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

LBA = (C × HPC + H) × SPT + (S - 1)

где

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

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

C = LBA ÷ (HPC × SPT)
H = (LBA ÷ SPT) mod HPC
S = (LBA mod SPT) + 1

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

Работа зависимости системы

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

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

См. Также
Примечания
Ссылки
Внешние ссылки
Последняя правка сделана 2021-05-28 05:33:07
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте