область на диску після MBR та перед початковою точкою розділу


10

Якщо я використовую схему розділення MBR і створюю первинний або розширений розділ з fdisk(версія 2.20.1), він починається з сектору 2048. Якщо я пам'ятаю правильно, то старіші версії fdiskзапущеного першого розділу в секторі 63. Якщо MBR потрібно лише 512 байт, то чому не починається перший розділ на секторі 2? Що зберігається у цих 2047 секторах? Якийсь етап завантажувача?


FYI вирівнювання 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) міг би використати його для встановлення завантажувача 1,5-ступінчастого завантажувача GRUB1: 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.
Мартін

@Martin Гм, цікаве спостереження. У мене там тільки "^ @", grub2, теж. Здається, мій етап 2 є правильним у файловій системі. :)
Борис Бурков

1
@Martin: Якщо раніше було встановлено GRUB 0,99, він все ще може знаходитися в цій області, навіть якщо ваш поточний завантажувач GRUB 2.x і не використовує його.
Ben Voigt

6

Це оптимізація продуктивності і зовсім не пов'язана з Linux, а лише з обладнанням. Сучасні диски (так звані диски "4K") використовують фізичні сектори розміром 4096 байт замість 512. Ви все одно можете звертатися до одиночних 512-байтних секторів, але це може сильно вплинути на продуктивність, якщо розділи (а точніше: файлові системи) не вирівняні до 4K .

Стартового сектора 64 було б достатньо для цієї вимоги. Збільшення до 2048 року видається превентивним (наприклад, дозволяє розмістити туди завантажувальний розділ UEFI, якщо диск слід перетворити на GPT пізніше).


Під оптимізацією продуктивності ви маєте на увазі, що якщо файлова система запускається в середині 4K сектора, то всі дані в цій файловій системі також нерівні, і це означатиме, що якщо ви зміните навіть байт у файлі у файловій системі, то два фізичні сектори 4K потрібно прочитати та змінити? Якщо файлова система вирівняна, то потрібно змінити лише один сектор 4K, доки всі байти знаходяться в тому ж фізичному секторі 4K?
Мартін

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