为什么磁盘分区的时候,第一个分区前面总有一段空间(63或者2048个扇区)

news/2024/11/15 0:30:05/

背景

不论是MBR分区还是GPT分区,第一个分区的前面总有一段空闲的空间(除了MBR之外的空间),这段空间不属于任何分区。

这一段空间的意义

早期的操作系统对应的分区工具在分区的时候,其第一个分区总是63号扇区开始的,意味着在第一个分区之前总是有63个扇区,除了MBR扇区,其他的扇区都是空闲扇区。

This odd number is an artifact of cylinder-head-sector (CHS) addressing used in INT 13h, the legacy BIOS API used for disk access. On legacy systems and bootloaders that used the INT 13h API, all partitions must begin and end on cylinder boundaries. Even after logical block addressing (LBA) was introduced, fake CHS values (which did not correspond to the actual disk geometry) were used to maintain compatibility with the legacy API. Since CHS addressing originally supported a maximum of 63 sectors per cylinder, the first partition would begin on sector 63. Windows XP (before Service Pack 3) and earlier versions of Windows will not boot if the system volume isn't on a cylinder boundary.

从上面的引用可以看出,在最开始的BIOS中,INT13h的磁盘访问中断服务(早期的磁盘访问都通过该服务)要求磁盘分区必须是按照进行分配的,所以在早期磁盘的分区就必须按照柱面进行分配,即分区的以柱面对齐。对于早期磁盘来说,一个柱面上的某个盘面正好对应一条磁道,一条磁道上刚好有63个扇区,如果按照柱面分配,由于第一个扇区是MBR,所以那一个磁道上的所有扇区都不能分配给第一个分区,第一个分区必须从第二条磁道开始分配,导致第一个分区前面有一段空闲的扇区,这些扇区不属于任何分区。

后来磁盘引入了LBA寻址,磁盘的物理几何模型已经与CHS不相符了,但是为了保证兼容性,第一个分区之前依然要保留63个扇区,LBA0为MBR扇区,第一个分区从LBA63开始。这就是历史上的BIOS对磁盘分区的影响。

但是,随着磁盘容量越来越大,一些磁盘厂商的开始提供物理扇区为4KiB大小的磁盘,为了提高对磁盘的访问性能,分区就必须按照4KiB大小的物理扇区对齐进行访问,否则就会降低访问性能。

为什么不按照4KiB大小的物理扇区对齐进行分区就会造成性能访问损失呢?

对于物理扇区为4KiB的硬盘,其对外仍然提供逻辑扇区访问(LBA访问仍然是按照512Bytes大小寻址),逻辑扇区大小为512bytes。所谓逻辑扇区访问,其实就是将一个4KiB大小的物理扇区分成8份,8*512Bytes=4096Bytes。

当需要访问其中一个逻辑扇区并写入数据的时候,就需要先读出一个物理扇区,然后将物理扇区中其他逻辑扇区的数据与现在写入的逻辑扇区的数据进行整合,然后再写入这个物理扇区,这就造成一次逻辑扇区数据写入就需要先读再写,于是每次写入都多了一次读取数据与修改数据的过程,这就降低了写入性能,这被称为RMW(Read-Modify-Write)性能损失。

现代操作系统以及一些底层的磁盘访问软件,都已经支持4KiB的磁盘的访问了,当遇到磁盘的物理扇区大小为4KiB的时候,每次对磁盘的数据访问就会按照4KiB进行读写。

假设现在分区没有按照4KiB对齐,第一个分区从LBA63开始,则第8个物理扇区的最后1/8部分被分到了第一个分区,当操作系统访问第一个分区的时候,就会从该分区的第一个逻辑扇区开始访问,按照4KiB进行磁盘的数据读写,这就势必造成RMW性能损失,所以为了保证对这种磁盘的正常访问性能,磁盘分区就必须按照4KiB大小进行对齐。

那么,如果仍然按照原来的分区方式,第一个分区从LBA63开始,由于63不是8的倍数,使得分区没有按照4KiB进行对齐,于是就会造成RMW的性能损失问题。现代操作系统建议第一个分区从LBA2048开始,前面正好预留1MiB的空闲空间,2048正好是8的倍数,于是分区4KiB对齐了。

现代操作系统默认安装的时候,其第一个分区正好从LBA2048开始,不论是MBR分区还是GPT分区方式,都是如此。例如,windows和linux,它们在默认安装的时候,第一个分区都是从LBA2048开始的,而且假如使用其默认的分区工具,第一个分区默认也是从LBA2048开始的,当然用户使用分区工具分区的时候,可以自行指定第一个分区开始的位置,当然必须保证4KiB对齐。

个人觉得,直接默认就好。

至此,这一段空间为什么存在的原因完全理清了。

  • BIOS影响导致第一个分区从LBA63开始。
  • 4KiB对齐影响导致第一个分区从LBA2048开始。

对于linux来说,其使用grub进行引导,grub会充分利用这一段空闲的空间,其会将自身引导程序的一部分写入到这一段空间之中(MBR分区下是这样的,GPT分区下不是这样的。GPT分区下会将这一部分内容写入到另外的地方。),这是真节省呀。

磁盘分区方式对比(MBR与GPT)_lengye7的博客-CSDN博客


http://www.ppmy.cn/news/869988.html

相关文章

windows下获取柱面、扇区数,扇区大小

物理硬盘命名为\\.\PhysicalDrive0 用CreateFile打开物理硬盘&#xff0c;然后用DeviceIoControl的参数IOCTL_DISK_GET_DRIVE_GEOMETRY&#xff0c;代码如下 #include <windows.h> #include <stdio.h> #include <winioctl.h>#define wszDrive L"\\\\.\…

OS | 磁盘地址结构 、柱面号 盘面号 扇区号的计算

一、前情回顾 1、磁盘读写时间 问题&#xff1a; 2、减少延迟时间的方法&#xff1a;交替编号 3、磁盘地址结构的设计 书里推荐的这种物理地址结构&#xff0c;也就是柱面号放在盘面号之前会发生什么情况呢&#xff1f; 为什么磁盘的物理地址是&#xff08;柱面号&#xff0c;盘…

Ceph分布式存储 - 常见OSD故障排除

1.常见的OSD故障排除 在排除OSD故障之前&#xff0c;请检查显示器和网络。如果ceph health或ceph -s返回健康状态&#xff0c;则表示监视器形成了法定人数。如果监视器未达到仲裁或监视器状态不正确&#xff0c;请首先解决监视器问题。验证您的网络并确保其正常工作&#xff0c…

【记录】smartctl|Linux如何通过smartctl查看有没有坏的磁盘?以及使用时长、电源周期、故障记录等

smartctl是一个用于监测和分析硬盘健康状态的工具&#xff0c;可以用于检测是否存在坏的磁盘。以下是使用smartctl检查磁盘健康状态的步骤&#xff1a; 安装smartctl软件 在Linux系统中&#xff0c;smartctl通常包含在smartmontools软件包中。如果您还没有安装smartmontools&am…

城市内涝监测设备-内涝监测终端

随着我国城市化发展迅速、全球极端天气现象频发带来的暴雨天气增多&#xff0c;汛期暴雨引发道路低洼处、立交桥底、隧道、涵洞等城市 内涝时有发生&#xff0c;甚至开启城市看海模式&#xff0c;对交通、电力、通讯等造成了严重的影响和破坏&#xff0c;严重时造成人民生命、财…

互联网医院源码|互联网医院系统源码|互联网医院诊疗系统

互联网医院系统开发可以提供许多好用的功能&#xff0c;以下是一些常见的功能&#xff1a;   在线挂号预约&#xff1a;用户可以通过系统在线选择医生、科室和就诊时间&#xff0c;并进行挂号预约&#xff0c;避免了传统排队等候的麻烦。   问诊咨询&#xff1a;用户可以通…

GX Works 3安装中断,提示无法登录注册表

解决办法&#xff1a;安装前关闭杀毒软件&#xff0c;以管理员权限运行程序

益配资

益配资是一家集金融服务、基金管理、股权投资、资产管理、实体项目投资等业务的综合金融企业。战略合作伙伴有东海证券、海通证券、申万宏源证券、国泰君安证券、招商证券、国信证券、四川信托、云南信托等多家合作银行及券商金融机构。 公司凭借多年金融行业投资经验、以客户为…