Существует два разных способа доступа к местоположению на диске: один - схема CHS, а другой - схема LBA.
CHS означает «Цилиндр, Головка, Сектор» и является наиболее низкоуровневым методом определения места чтения или записи с накопителя. Вы говорите ему использовать цилиндр x, головку y и сектор z и читать или записывать содержимое этого местоположения в адрес или из адреса в памяти (в буфер). Он получен из реальных физических компонентов жесткого диска (традиционная вращающаяся ржавчина), где у вас есть физические цилиндры и считывающие головки. Сектор является наименьшей адресуемой единицей, и он традиционно был установлен в 512 байт.
LBA - это логическая байтовая адресация, при которой привод считывает и записывает адрес сектора по его смещению, например, читает 123837-й сектор на диске или записывает его в 123734-й сектор на диске (начиная с нуля).
Эта проблема? Каждое из этих значений ограничено в диапазоне. Фактически, из-за того, насколько сильно был ограничен CHS, пришлось ввести LBA. Для CHS возможные значения C (цилиндр) - 1023, в то время как H (головки) могут быть максимум 255, а S (сектор) - только до 63, что означает, что вы можете иметь максимум 1024 цилиндра x 255 голов x 64 секторы x 512 байт, отображенные в традиционном формате CHS, что дает в общей сложности менее 8 ГиБ! Используя CHS, просто невозможно получить доступ к диску размером более 8 ГиБ!
Таким образом, LBA была введена с 32-разрядным ограничением, дающим вам 2 ^ 32 x 512 байт или ограничение 2 ТБ на размер диска - по этой причине размер MBR-диска не может превышать 2 ТБ, поскольку он использует CHS и LBA для указания размеров раздела, и ни один из них не может поддерживать что-либо более 2TiB.
Более новые и лучшие опции были введены, например, схема разбиения GPT, которая расширяет LBA до 64 бит, что дает вам гораздо больше, чем вам когда-либо понадобится, при 2 ^ 64 x 512 байт - но есть одна загвоздка: много наследства аппаратные средства и устаревшие операционные системы, а также устаревшие реализации BIOS и устаревшие драйверы не поддерживают UEFI или GPT, и многие люди хотели бы иметь что-то, что может быть более легко модернизировано, чтобы преодолеть ограничение 2TiB без необходимости переписывать весь стек с нуля. И, наконец, мы достигли размера сектора 4096.
Смотрите, во всех ограничениях, обсужденных выше, одно предположение было фиксированным: размер сектора. С первого дня было 512 байт, и с тех пор так и осталось. Но недавно производители жестких дисков осознали, что есть возможность поработать над магией: взять традиционный CHS или 32-битный LBA и просто заменить размер сектора на 4096 (4 КБ) вместо 512 байт. Когда операционная система говорит "дай мне второй сектор на диске", запрашивая LBA 1 (потому что LBA 0 является первым), мы не собираемся давать ей байты 512–1023, а байты 4096–8191.
Внезапно наш лимит 2TiB увеличивается до 2 ^ 32 x 4096 байт, или 16 TiB, без необходимости отбрасывать MBR, переключаться на UEFI или GPT или что-то еще!
Единственный улов в том, что если ОС не знает, что это волшебный диск, который использует 4096 секторов вместо 512-байтовых секторов, это может привести к несоответствию. Каждый раз, когда операционная система говорит: «Эй, ты, диск, напиши мне эти 512 байтов, чтобы сместить xxx», диск будет использовать 4096 байтов для хранения этих 512 байтов (остальные - нули или ненужные данные, при условии, что вы не получите переполнение памяти), потому что они не общаются в байтах, они общаются в секторах.
Таким образом, BIOS теперь (иногда) включают опцию, позволяющую вам вручную указать, что размер сектора 512 байт должен использоваться вместо собственного размера сектора 4096 байт, который используют более новые диски - с оговоркой, что вы не можете использовать его для доступа к более чем 2TiB диска в системе MBR, как это было в «старые добрые времена». Но современные ОС, поддерживающие 4k, могут использовать все это, чтобы использовать эту магию для чтения и записи в 4096-байтовых чанках и вуаля!
(Дополнительным преимуществом является то, что все происходит намного быстрее, потому что если вы читаете и записываете 4096 байт за раз, это меньше операций чтения или записи, скажем, 4 ГБ данных.)