Сравнивайте с английским: нажмите на абзац — оригинал откроется в окне. Кнопка EN под абзацем показывает его прямо в тексте.
Содержание
Введение
Способ указания местоположения данных на устройствах хранения компьютерной информации
Way to specify the location of data on computer storage devices
Логическое блочное адресование (LBA) — это распространенная схема, используемая для указания местоположения блоков данных, хранящихся на устройствах хранения компьютерной информации, как правило, на внешних системах хранения, таких как жесткие диски. LBA представляет собой особенно простую линейную схему адресации; блоки идентифицируются целочисленным индексом, при этом первый блок имеет индекс LBA 0, второй — LBA 1 и так далее. Стандарт IDE предусматривал 22-битное LBA как опцию, которое было расширено до 28 бит с выпуском ATA 1 (1994) и до 48 бит с выпуском ATA 6 (2003), в то время как размер записей в структурах данных на диске и в памяти, содержащих адрес, обычно составляет 32 или 64 бита. Большинство жестких дисков, выпущенных после 1996 года, поддерживают логическое блочное адресование.
Logical block addressing (LBA) is a common scheme used for specifying the location of blocks of data stored on computer storage devices, generally secondary storage systems such as hard disk drives. LBA is a particularly simple linear addressing scheme; blocks are located by an integer index, with the first block being LBA 0, the second LBA 1, and so on. The IDE standard included 22 bit LBA as an option, which was further extended to 28 bit with the release of ATA 1 (1994) and to 48 bit with the release of ATA 6 (2003), whereas the size of entries in on disk and in memory data structures holding the address is typically 32 or 64 bits. Most hard disk drives released after 1996 implement logical block addressing.
Обзор
В логическом блочном адресовании для адресации данных используется только один номер, и каждый линейный базовый адрес описывает один блок. Схема LBA заменила более ранние схемы, которые предоставляли физические детали устройства хранения программному обеспечению операционной системы. Наиболее распространенной из них была схема "цилиндр-головка-сектор" (CHS), в которой блоки адресовались с помощью набора данных, определяющего цилиндр, головку и сектор, в котором они располагались на жестком диске. CHS плохо подходила для устройств, отличных от жестких дисков (таких как магнитные ленты и сетевые хранилища), и обычно не использовалась для них. CHS применялась в ранних накопителях MFM и RLL, а ее преемник, расширенная схема "цилиндр-головка-сектор" (ECHS), – в первых накопителях ATA. Однако современные диски используют зонную запись, где количество секторов на дорожку зависит от номера дорожки. Даже если диск сообщает некоторые значения CHS в виде секторов на дорожку (SPT) и головок на цилиндр (HPC), они мало связаны с реальной геометрией диска. LBA впервые была представлена в 1981 году SASI, предшественником SCSI, в качестве абстракции. Хотя контроллер диска по-прежнему адресует блоки данных по адресу CHS, эта информация обычно не используется драйвером устройства SCSI, операционной системой, кодом файловой системы или любыми приложениями (например, базами данных), обращающимися к "сырому" диску. Системные вызовы, требующие ввода-вывода на уровне блоков, передают определения LBA драйверу устройства хранения; в простых случаях (когда один том сопоставляется с одним физическим диском) эта LBA затем передается непосредственно контроллеру диска. В избыточных массивах независимых дисков (RAID) и сетях хранения данных (SAN), а также там, где логические диски (номера логических устройств, LUN) формируются посредством виртуализации и агрегации LUN, адресация LBA отдельных дисков должна быть преобразована программным слоем для обеспечения единой адресации LBA для всего устройства хранения.
In logical block addressing, only one number is used to address data, and each linear base address describes a single block. The LBA scheme replaces earlier schemes which exposed the physical details of the storage device to the software of the operating system. Chief among these was the cylinder head sector (CHS) scheme, where blocks were addressed by means of a tuple which defined the cylinder, head, and sector at which they appeared on the hard disk. CHS did not map well to devices other than hard disks (such as tapes and networked storage), and was generally not used for them. CHS was used in early MFM and RLL drives, and both it and its successor, extended cylinder head sector (ECHS), were used in the first ATA drives. However, current disk drives use zone bit recording, where the number of sectors per track depends on the track number. Even though the disk drive will report some CHS values as sectors per track (SPT) and heads per cylinder (HPC), they have little to do with the disk drive's true geometry. LBA was first introduced in 1981 by SASI, the precursor of SCSI, as an abstraction. While the drive controller still addresses data blocks by their CHS address, this information is generally not used by the SCSI device driver, the OS, filesystem code, or any applications (such as databases) that access the "raw" disk. System calls requiring block level I/O pass LBA definitions to the storage device driver; for simple cases (where one volume maps to one physical drive), this LBA is then passed directly to the drive controller. In redundant array of independent disks (RAID) devices and storage area networks (SANs) and where logical drives (logical unit numbers, LUNs) are composed via LUN virtualization and aggregation, LBA addressing of individual disk should be translated by a software layer to provide uniform LBA addressing for the entire storage device.
Улучшенная 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–65535), ограничивая размер диска до 128 Гбайт (≈137,4 Гбайт), при условии использования 512-байтовых секторов. Доступ к этим значениям можно получить, отправив ATA-команду "Identify Device" (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 МиБ), при условии использования 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 по мере необходимости. Метод "Normal or none" возвращается к более раннему 10:4:6-битному режиму CHS, который не поддерживает адресацию более 528 Мбайт. До выхода стандарта ATA 2 в 1996 году существовало несколько больших жестких дисков, которые не поддерживали LBA-адресацию, поэтому можно было использовать только расширенный или обычный метод. Однако использование расширенного метода также приводило к проблемам с переносимостью, поскольку разные BIOS часто использовали разные и несовместимые методы преобразования, и жесткие диски, отформатированные на компьютере с BIOS от определенного производителя, часто не могли быть прочитаны на компьютере с BIOS другого производителя. Решением было использование программного обеспечения для преобразования, такого как OnTrack Disk Manager, Micro House EZ Drive/EZ BIOS и т. д., которое устанавливалось в загрузчик ОС диска и заменяло подпрограммы INT 13h во время загрузки пользовательским кодом. Это программное обеспечение также могло включить поддержку LBA и расширений INT 13h для старых компьютеров с BIOS, не соответствующим LBA.
The earlier IDE standard from Western Digital introduced 22 bit LBA; in 1994, the ATA 1 standard allowed for 28 bit addresses in both LBA and CHS modes. The CHS scheme used 16 bits for cylinder, 4 bits for head and 8 bits for sector, counting sectors from 1 to 255. This means the reported number of heads never exceeds 16 (0–15), the number of sectors can be 255 (1–255; though 63 is often the largest used) and the number of cylinders can be as large as 65,536 (0–65535), limiting disk size to 128 GiB (≈137.4 GB), assuming 512 byte sectors. These values can be accessed by issuing the ATA command "Identify Device" (ECh) to the drive. However, the IBM BIOS implementation defined in the INT 13h disk access routines used quite a different 24 bit scheme for CHS addressing, with 10 bits for cylinder, 8 bits for head, and 6 bits for sector, or 1024 cylinders, 256 heads, and 63 sectors. This INT 13h implementation had pre dated the ATA standard, as it was introduced when the IBM PC had only floppy disk storage, and when hard disk drives were introduced on the IBM PC/XT, INT 13h interface could not be practically redesigned due to backward compatibility issues. Overlapping ATA CHS mapping with BIOS CHS mapping produced the lowest common denominator of 10:4:6 bits, or 1024 cylinders, 16 heads, and 63 sectors, which gave the practical limit of 1024×16×63 sectors and 528MB (504 MiB), assuming 512 byte sectors. In order for the BIOS to overcome this limit and successfully work with larger hard drives, a CHS translation scheme had to be implemented in the BIOS disk I/O routines which would convert between 24 bit CHS used by INT 13h and 28 bit CHS numbering used by ATA. The translation scheme was called large or bit shift translation. This method would remap 16:4:8 bit ATA cylinders and heads to 10:8:6 bit scheme used by INT 13h, generating much more "virtual" drive heads than the physical disk reported. This increased the practical limit to 1024×256×63 sectors, or 8.4GB (7.8 GiB). To further overcome this limit, INT 13h Extensions were introduced with the BIOS Enhanced Disk Drive Services, which removed practical limits on disk size for operating systems which are aware of this new interface, such as the DOS 7.0 component in Windows 95. This enhanced BIOS subsystem supports LBA addressing with LBA or LBA assisted method, which uses native 28 bit LBA for addressing ATA disks and performs CHS conversion as needed. The normal or none method reverts to the earlier 10:4:6 bit CHS mode which does not support addressing more than 528MB. Until the release of ATA 2 standard in 1996, there were a handful of large hard drives which did not support LBA addressing, so only large or normal methods could be used. However, using the large method also introduced portability problems, as different BIOSes often used different and incompatible translation methods, and hard drives partitioned on a computer with a BIOS from a particular vendor often could not be read on a computer with a different make of BIOS. The solution was to use conversion software such as OnTrack Disk Manager, Micro House EZ Drive/EZ BIOS, etc., which installed to the disk's OS loader and replaced INT 13h routines at boot time with custom code. This software could also enable LBA and INT 13h Extensions support for older computers with non LBA compliant BIOSes.
Помощный перевод на английском языке
Когда BIOS настроен на использование диска в режиме LBA с поддержкой трансляции, BIOS обращается к аппаратному обеспечению, используя режим LBA, но также предоставляет транслированную геометрию CHS через интерфейс INT 13h. Количество цилиндров, головок и секторов в транслированной геометрии зависит от общего размера диска, как показано в следующей таблице.
When the BIOS is configured to use a disk in LBA assisted translation mode, the BIOS accesses the hardware using LBA mode, but also presents a translated CHS geometry via the INT 13h interface. The number of cylinders, heads, and sectors in the translated geometry depends on the total size of the disk, as shown in the following table. Disk size Sectors/track Heads Cylinders 1 < X ≤ 504 MiB 63 16 X ÷ (63 × 16 × 512) 504 MiB < X ≤ 1008 MiB 63 32 X ÷ (63 × 32 × 512) 1008 MiB < X ≤ 2016 MiB 63 64 X ÷ (63 × 64 × 512) 2016 MiB < X ≤ 4032 MiB 63 128 X ÷ (63 × 128 × 512) 4032 MiB < X ≤ 8032.5 MiB 63 255 X ÷ (63 × 255 × 512)
Размер диска Секторов на трек Головки Цилиндры
1 < X ≤ 504 МиБ 63 16 X ÷ (63 × 16 × 512)
504 МиБ < X ≤ 1008 МиБ 63 32 X ÷ (63 × 32 × 512)
1008 МиБ < X ≤ 2016 МиБ 63 64 X ÷ (63 × 64 × 512)
2016 МиБ < X ≤ 4032 МиБ 63 128 X ÷ (63 × 128 × 512)
4032 МиБ < X ≤ 8032.5 МиБ 63 255 X ÷ (63 × 255 × 512)
When the BIOS is configured to use a disk in LBA assisted translation mode, the BIOS accesses the hardware using LBA mode, but also presents a translated CHS geometry via the INT 13h interface. The number of cylinders, heads, and sectors in the translated geometry depends on the total size of the disk, as shown in the following table. Disk size Sectors/track Heads Cylinders 1 < X ≤ 504 MiB 63 16 X ÷ (63 × 16 × 512) 504 MiB < X ≤ 1008 MiB 63 32 X ÷ (63 × 32 × 512) 1008 MiB < X ≤ 2016 MiB 63 64 X ÷ (63 × 64 × 512) 2016 MiB < X ≤ 4032 MiB 63 128 X ÷ (63 × 128 × 512) 4032 MiB < X ≤ 8032.5 MiB 63 255 X ÷ (63 × 255 × 512)
ЛБА48
Текущая 48-битная схема LBA была представлена в 2002 году со стандартом ATA 6, увеличив предел адресации до 2 × 512 байт, что составляет ровно 128 PiB или приблизительно 144 PB. Современные ПК-совместимые компьютеры поддерживают расширения INT 13h, использующие 64-битные структуры для LBA-адресации и способные поддерживать любое будущее расширение LBA-адресации. Однако современные операционные системы реализуют прямой доступ к дискам и не используют подсистемы BIOS, за исключением времени начальной загрузки. Тем не менее, стандартная таблица разделов Master Boot Record (MBR) в стиле DOS поддерживает только разделы дисков размером до 2 ТиБ. Для разделов большего размера требуется использовать другую схему, например, таблицу разделов GUID (GPT), которая имеет тот же 64-битный предел, что и текущие расширения INT 13h. Windows XP SP2 поддерживает LBA48 (и включена по умолчанию).
The current 48 bit LBA scheme was introduced in 2002 with the ATA 6 standard, raising the addressing limit to 2× 512 bytes, which is exactly 128PiB or approximately 144PB. Current PC compatible computers support INT 13h Extensions, which use 64 bit structures for LBA addressing and should encompass any future extension of LBA addressing, though modern operating systems implement direct disk access and do not use the BIOS subsystems, except at boot load time. However, the common DOS style Master Boot Record (MBR) partition table only supports disk partitions up to 2TiB in size. For larger partitions this needs to be replaced by another scheme, for instance the GUID Partition Table (GPT) which has the same 64 bit limit as the current INT 13h Extensions. Windows XP SP2 is known to support LBA48 (and enabled by default).
Зависимости от операционной системы
Операционные системы, чувствительные к геометрии диска, сообщаемой BIOS, включают в себя Solaris, DOS и семейство Windows NT, где NTLDR (NT, 2000, XP, Server 2003) или WINLOAD (Vista, Server 2008, Windows 7 и Server 2008 R2) используют главную загрузочную запись, которая адресует диск, используя CHS; 64-битные версии Windows x86 и Itanium могут разбивать диск на разделы с помощью таблицы разделов GUID, которая использует адресацию LBA. Некоторые операционные системы не требуют преобразования, поскольку не используют геометрию, сообщаемую BIOS, в своих загрузчиках. К таким операционным системам относятся BSD, Linux, macOS, OS/2 и ReactOS.
Operating systems that are sensitive to BIOS reported drive geometry include Solaris, DOS and Windows NT family, where NTLDR (NT, 2000, XP, Server 2003) or WINLOAD (Vista, Server 2008, Windows 7 and Server 2008 R2) use Master boot record which addresses the disk using CHS; x86 64 and Itanium versions of Windows can partition the drive with GUID Partition Table which uses LBA addressing. Some operating systems do not require any translation because they do not use geometry reported by BIOS in their boot loaders. Among these operating systems are BSD, Linux, macOS, OS/2 and ReactOS.