背景

不论是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博客

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

  1. mysql的二级分区_分布式数据库一级分区和二级分区

    1.1 一级分区 OceanBase1.0现在支持的一级分区类型有:HASH, KEY, RANGE, RANGE COLOMNS (LIST, LIST COLUMNS, INTERVAL分区正在开 ...

  2. 第一阶段(admin02-day01)磁盘分区,挂载,交换分区

    一,磁盘空间管理 (1),磁盘空间管理 1),磁盘空间管理 扇区时磁盘存储数据最小的单位,扇区默认512字节:遵循宁可多给不可少给的原则. 1,查看识别硬盘(fsblk命令)见下图 2,一块磁盘的&q ...

  3. 【Linux】MBR磁盘分区表只能有四个分区?

    看<鸟哥的Linux私房菜>的时候,说是partition table只能有四个分区,想知道为什么,以下参考自Wiki 1 第一个扇区 磁盘的第一个扇区(也可以叫做MBR,根据语境确定是第 ...

  4. Linux中磁盘的管理(格式化、分区、挂载)

    文章目录 Linux中磁盘的管理(分区.格式化.挂载) 一.认识磁盘 1.什么是磁盘: 2.磁盘运行机理: 3.磁盘的扇区.磁道.柱面: 4.磁盘的分类: 二.磁盘的分区 1.为什么要分区 (1)易于 ...

  5. Linux系统之磁盘分区(基本分区和LVM逻辑卷分区)

    一.磁盘简介 1.磁盘属性简介 •定义:  磁盘=硬盘=disk,与内存不一样的是容量比较大. •类型  从工作原理上分为机械硬盘和固态硬盘  机械硬盘:机械硬盘即是传统普通硬盘,主要由:盘片,磁头, ...

  6. Linux基础篇——Linux磁盘操作(磁盘基础知识、分类、分区、挂载、卸载、扩容)详解

    目 录 1. 概 念 2. 为啥要分区 3. 磁盘的结构 4. 磁盘的分类 4.1 IDE硬盘 4.2 SCSI硬盘 4.3 SATA硬盘 4.4 固态硬盘 5. 磁盘分区命名规则 6. 磁盘分区类型 ...

  7. 计算机磁盘管理给优盘分区,U盘怎么给分区的高级技巧

    U盘怎么给分区的高级技巧 把U盘分区,相信大家都知道一二了,但下面要告诉大家的这个方法却不为人所熟悉的.不相信?我们来看看吧. 一般U盘在我们的电脑中,显示的是可移动的存储.我们现在就是要把它改成&q ...

  8. Linux磁盘分区详解(新建分区,现有分区扩容,分区减容)

    目录 一.Linux文件系统简介 1.磁盘概念 2.分区的概念 3.LVM 管理命令 4. 基本术语 二.给虚拟机增加磁盘 1.虚拟机添加新磁盘 2.查看新加的磁盘 三.服务器新建磁盘空间 1.新建分 ...

  9. 超过2t硬盘分区_磁盘超过2T无法用fdisk分区的问题

    当硬盘空间大于2TB时,不能使用fdisk进行分区,因为fdisk最大支持2TB,且ext4不支持16TB以上的磁盘格式化,建议使用parted和xfs. parted /dev/vdb 对/dev/ ...

最新文章

  1. k means聚类算法_一文读懂K-means聚类算法
  2. hadoop启动页面_轻松搞定Windows下的Hadoop环境安装
  3. Spring简单总结
  4. python第一周小测验_荐测验1: Python基本语法元素 (第1周)
  5. Undefined exploded archive location Tomcat之项目不能发布
  6. POJ2369 置换群
  7. ffmpeg ffplay播放延时大问题:播放延时参数设置
  8. shopee虾皮科技测试工程师第一次笔试
  9. Java 必须掌握的 12 种 Spring 常用注解
  10. 理解 loader 的工作流
  11. SpringMVC一路总结(一)
  12. 西瓜播放器xgplayer的简单使用demo
  13. 文章原创度检测神器:copyscape及duplichecker
  14. python 读取文件夹下文件,将文件名作为制作标签,训练样本
  15. 阿里云移动推送 - 异常记录
  16. TMS320F28335 和 VS1003B 之间的通信
  17. 【动态规划】流水作业调度问题与Johnson法则
  18. Ubuntu 查看硬盘容量
  19. python三阶魔方_三阶魔方还原公式
  20. 对一个数组排序之后求相邻数的最大差值

热门文章

  1. nodejs学习_安装npm及cnpm(Windows)
  2. 微信小程序之----视频上传
  3. woff字体-xml-python根据坐标画字
  4. 神经网络主要由哪些层构成,神经网络拓扑结构图
  5. 复苏与增长:美通社2020亚太区企业新闻稿发布趋势数字读解
  6. Bi-directional Cross-Modality Feature Propagation with Separation-and-Aggregation Gate for RGB-D Sem
  7. 【pytorch】WinError126解决方案
  8. 大数据分布式计算开源框架Hadoop的介绍和运用
  9. 用计算机怎么弹出凉凉这首歌,凉凉歌词的意思是什么 凉凉歌曲表达的意思
  10. ListT 赋值时 的深拷贝和浅拷贝