MBR之后且分区起点之前的磁盘上的区域


10

如果我使用MBR分区方案并使用fdisk(版本2.20.1)创建主分区或扩展分区,则该分区从扇区2048开始。如果我没记错,则旧版本的fdisk分区63上将启动第一个分区。如果MBR仅需要512字节,那么为什么第一个分区不从扇区2开始?在这2047个部门中保留了什么?引导加载程序的某个阶段?


仅供参考,1 MiB(2048扇区)对齐fdisk在2010年2月22日发布的util-linux-ng-2.17.1/fdisk/fdisk.c功能中引入了Linux update_sector_offset(void)。Windows Vista于2006-11发行。
pts

Answers:


16

MBR和文件系统的第一个扇区之间的旧32KiB间隙称为DOS兼容性区域或MBR间隙,因为DOS要求分区从柱面边界开始(每个柱面都有64个扇区,即64个扇区* 512字节/扇区= 32KiB空间) 。

在此处输入图片说明

旧版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。
马丁

@Martin Hm,有趣的观察。我也只有“ ^ @”,grub2。似乎我的阶段2在文件系统中正确。:)
鲍里斯·伯科夫

1
@Martin:如果您以前安装了GRUB 0.99,则即使您当前的引导加载程序是GRUB 2.x并且未使用它,它也可能仍在该区域中。
Ben Voigt 2014年

6

这是一项性能优化,与Linux完全无关,仅与硬件无关。现代磁盘(所谓的“ 4K”磁盘)使用4096字节而不是512字节的物理扇区。您仍然可以寻址单个512字节的扇区,但是如果分区(或更确切地说:文件系统)未与4K对齐,则可能会严重影响性能。 。

起始扇区64足以满足此要求。增加到2048似乎是预防性的(例如,如果磁盘稍后应转换为GPT,则允许在其中放置U​​EFI引导分区)。


通过性能优化,您的意思是,如果文件系统从4K扇区的中间开始,那么该文件系统中的所有数据也都未对齐,这意味着如果文件系统上的一个文件甚至更改了一个字节,那么需要读取和修改两个物理4K扇区吗?如果文件系统是对齐的,那么只要所有字节都在同一4K物理扇区上,就只需要修改一个4K扇区?
马丁

2
@Martin问题是内核总是将4K块(页面大小)写入磁盘(因为已缓存页面)。与单个扇区相比,4K页面可以是两个扇区的一部分。在这种情况下,必须写入的不是4K,而是8K。更糟糕的是:可能必须首先读取磁盘上的一个甚至两个4K块。
Hauke Laging
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.