область на диске после MBR и до начальной точки раздела


10

Если я использую схему разбиения MBR и создаю основной или расширенный раздел с fdisk(версия 2.20.1), то он начинается в секторе 2048. Если я правильно помню, тогда более старые версии fdiskзапускали первый раздел в секторе 63. Если MBR требуется только 512 байт, тогда почему первый раздел не начинается в секторе 2? Что хранится в этих 2047 секторах? Какой-то этап загрузчика?


К сведению, выравнивание в 1 МБ (сектор 2048) было введено в Linux fdiskв util-linux-ng-2.17.1/fdisk/fdisk.cфункции update_sector_offset(void), выпущенной 2010-02-22. Windows Vista была выпущена в 2006-11 годах.
Очки

Связанные вопросы и ответы: superuser.com/q/352572/19956 , superuser.com/q/565577/19956 .
Очки

Ответы:


16

Старый разрыв в 32 КБ между MBR и первым сектором файловой системы называется областью совместимости DOS или разрывом MBR, поскольку DOS требовал, чтобы разделы начинались на границах цилиндров (и каждый цилиндр имел 64 сектора, то есть 64 сектора * 512 байт / сектор = пространство 32 КБ) ,

введите описание изображения здесь

Legacy GRUB (GRUB1) мог бы использовать его для установки там загрузочного загрузчика GRUB1 1.5: http://www.gnu.org/software/grub/manual/grub.html#BIOS-installation .

Дополнительные ссылки:

  1. http://www.pixelbeat.org/docs/disk/
  2. /superuser/107235/how-do-boot-sectors-and-multiple-drives-works/108152#108152
  3. http://www.dedoimedo.com/computers/grub.html

1
Хорошо, спасибо за объяснение этого! Похоже, что GRUB2 использует ту же область между MBR и перед разделом для своего загрузочного кода. В соответствии с grub-install -vустановленным GRUB2, и если я выполняю, в dd if=/dev/sda obs=1 ibs=1 skip=512 count=2047 2>/dev/null | strings -n4этой области есть «загрузка», «Geom», «чтение», «ошибка», и они должны принадлежать GRUB2.
Мартин

@ Мартин Хм, интересное наблюдение. У меня там только "^ @", тоже grub2. Кажется, мой этап 2 прямо в файловой системе. :)
Борис Бурков

1
@Martin: Если ранее у вас был установлен GRUB 0.99, он все еще может находиться в этой области, даже если ваш текущий загрузчик GRUB 2.x и не использует его.
Бен Фойгт

6

Это оптимизация производительности и вообще не связана с Linux, только с аппаратным обеспечением. Современные диски (так называемые диски «4K») используют физические сектора размером 4096 байт вместо 512. Вы по-прежнему можете обращаться к отдельным 512-байтовым секторам, но это может серьезно повлиять на производительность, если разделы (или, скорее, файловые системы) не выровнены по 4K ,

Стартовый сектор 64 будет достаточно для этого требования. Увеличение до 2048 представляется профилактическим (например, позволяет разместить там загрузочный раздел UEFI, если диск будет преобразован в GPT позже).


Под оптимизацией производительности вы подразумеваете, что если файловая система начинается с середины сектора 4K, то все данные в этой файловой системе также не выровнены, и это будет означать, что если в файле в файловой системе изменить хотя бы один байт, тогда два физических сектора 4K должны быть прочитаны и изменены? Если файловая система выровнена, то нужно изменить только один сектор 4K, если все байты находятся в одном физическом секторе 4K?
Мартин

2
@Martin Проблема в том, что ядро ​​всегда записывает блоки 4K (размер страницы) на диск (потому что страницы кэшируются). В отличие от одного сектора страница 4K может быть частью двух секторов. В этом случае необходимо записать не 4K, а 8K. И что еще хуже: может случиться так, что один или даже оба блока 4K на диске должны быть прочитаны первыми.
Хауке Лагинг
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.