一、磁盘结构
这里讲的主要是网上所谓的老式磁盘,它是由一个个盘片组成的,我们先从个盘片结构讲起。
如图1所示,图中的一圈圈灰色同心圆为一条条磁道,
从圆心向外画直线,可以将磁道划分为若干个弧段,每个磁道上一个弧段被称之为一个扇区(图践绿色部分)。扇区是磁盘的最小组成单元,通常是512bytes(还有4kb的)。
由多个扇区组成的单位叫簇。
图1-老式磁盘的一个盘片
图2展示了由一个个盘片组成的磁盘立体结构,一个盘片上下两面都是可读写的,图中蓝色部分叫柱面(cylinder)。
图2-老式磁盘整体结构
简简单介绍了磁盘结构后,下面我们将对磁盘的参数进行讲解。磁盘的常见参数如下:
- 磁头(head)
- 磁道(track)
- 柱面(cylinder)
- 扇区(sector)
- 圆盘(platter)
图2中磁盘是一个 3个圆盘6个磁头,7个柱面(每个盘片7个磁道) 的磁盘,图2中每条磁道有12个扇区,所以此磁盘的容量为6*7*12*512字节。
即:
存储容量 = 磁头数 × 磁道(柱面)数 × 每道扇区数 × 每扇区字节数
下面讲一下现代磁盘,在老式磁盘中,尽管磁道周长不同,但每个磁道上的扇区数是相等的,越往圆心扇区弧段越短,但其存储密度越高。不过这种方式显然比较浪费空间,因此现代磁盘则改为等密度结构,这意味着外围磁道上的扇区数量要大于内圈的磁道,寻址方式也改为以扇区为单位的线性寻址。为了兼容老式的3D寻址方式,现代磁盘控制器中都有一个地址翻译器将 3D 寻址参数翻译为线性参数。
图3-一张Linux的分区表
参考:https://www.cnblogs.com/joydinghappy/articles/2511948.html
二、磁盘分区
在了解了磁盘结构后,了解下什么叫磁盘分区。
在鸟哥私房菜中是这样说的,整颗硬盘就像一根原木,你必须要在这根原木上面切割出你想要的区段, 这个区段才能够再制作成为你想要的家具!如果没有进行切割,那么原木就不能被有效的使用。所以要想使用就必须进行分区。而分区就是对下面的partition table进行设置。
分区主要有两种格式,
1、早期分区表格式,MBR(master boot record)主引导记录区:用来处理开机管理程序以及分区表,而MBR则通通放在第一个扇区(当然还包括partition table)。其中MBR占446bytes,partition table占64bytes,剩余的2bytes用来区分扇区间隔。
由于MBR大小限制,不能存放太多的开机程序,以及无法获取2.2T以上的磁盘(GPT的出现)。损坏后就无法恢复。
2.2T大小限制原因:http://blog.sina.com.cn/s/blog_8877bfa40101k29y.html
而partition table则由主分区或扩展分区组成。而默认的partition table最多能写入4组分区,只能有1个扩展分区(操作系统限制)。
为什么只有一个扩展分区,百度知道回答:扩展分区是所有逻辑分区的总和,如果你有多个分区的话,系统就不知道怎么样去引导多个分区了。这个和主去是一样的道理,如果条条大陆通罗马的话,系统是不知道走哪天路去罗马的。
一个硬盘最多只能划分为4个主分区,或者是3个主分区加上一个扩展分区,这是因为在硬盘的开头,也就是0磁头(head)、0柱(cyliner)、0面(side)、0磁道(track)、0扇区(sector)总共512字节存放着硬盘最重要的信息MBR(Master Boot Record,主引导记录)和分区的相关信息,由于记录空间只有那么大,所以也只能记录这4个分区的信息。
一个硬盘可以有4个主分区,但只能有一个扩展分区.
一个主分区能够独占一个磁盘的全部空间,或其中一部分.一个硬盘最多可有4个分区,并且所有这4个分区都可以是主分区,一个主分区能被格式化成一个单独的逻辑驱动器(而非多个逻辑驱动器).
在计算机第一个硬盘上的任何一个主分区都可以指定为活动分区.激活分区很重要,因为在计算机启动时,它试从计算机的第一个硬盘上的活动主分区上加载操作系统,Windows2000的操作系统分区必须位于计算机的第一个硬盘上的活动主分区中.
一个硬盘上只能有一个扩展分区.扩展分区不能被标识为活动分区,并且不能作为—台计算机的系统分区.
扩展分区能够格式化成一个或多个逻辑驱动器,每一个分区被赋予不同的驱动器符.逻辑驱动器能被格式化成FAT或者NTFS格式.用户可以使一个逻辑驱动器格式化为FAT格式,而将另一个位于同一扩展分区的逻辑驱动器格式化为NTFS格式.
扩展分区很方便地将一个物理驱动器分割成4个以上的逻辑驱动器。
分区的最小单位通常为柱面。每组分区记录了起始与与结束的柱面号码。那么只能划分4个分区吗?当然不会啦。
EBR(extended boot record)或者说EPBR(extended partion boot record)实现了多个分区,EBR在第一个扩展分区的第一个扇区,该扩展分区可以被细分为多个逻辑分区。
所以扩展分区只是用来记录分区信息的,能够存储数据的只有主分区和逻辑分区。
2、GPT(GUID partition table ,globally unique identifier,GUID):
它是可扩展固件接口(EFI)标准(被Intel用于替代个人计算机的BIOS)的一部分,被用于替代BIOS系统中的一32bits来存储逻辑块地址和大小信息的主引导记录(MBR)分区表。
因为过去一个扇区大小就是 512Bytes 而已,不过目前已经有 4K 的扇区设计出现!为了相容于所有的磁盘,因此在扇区的定义上面, 大多会使用所谓的逻辑区块位址(Logical Block Address, LBA)来处理。GPT 将磁盘所有区块以此 LBA(默认为 512Bytes 喔!) 来规划,而第一个 LBA 称为 LBA0 (从 0 开始编号)。
与 MBR 仅使用第一个 512Bytes 区块来纪录不同, GPT 使用了 34 个 LBA 区块来纪录分区信息!同时与过去 MBR 仅有一的区块,被干掉就死光光的情况不同, GPT 除了前面 34 个LBA 之外,整个磁盘的最后 33 个 LBA 也拿来作为另一个备份!
LBA0 (MBR 相容区块)
- 前 446 Bytes 与MBR类似,储存了第一阶段的开机管理程序(启动过程下文会提到)。
- MBR原本的分区表的记录区内,放入一个特殊标志的分区,用来表示此磁盘为 GPT 格式。 不支持GPT 分区表的磁盘管理程序就无法识别。
LBA1 (GPT 表头纪录)
- 纪录了分区表本身的位置与大小。
- 纪录了备份用的 GPT 分区 (最后 34 个 LBA 区块) 放置的位置。
- 放置了分区表的检验机制(CRC32),操作系统可以根据这个检验码来判断 GPT 是否正确。若有错误,可以通过这个纪录区来取得备份的 GPT(磁盘最后的那个备份区块) 来恢复 GPT 的正常运行。
LBA2-33 (实际纪录分区信息处)
- 从 LBA2 区块开始,每个 LBA 都可以纪录 4 笔分区纪录,默认的情况下,总共可以有 4*32(分区记录LBA数量) = 128 笔分区纪录。
- 除了每笔纪录所需要的识别码与相关的纪录之外,GPT 在每笔纪录中分别提供了 64bits 来记载开始/结束的扇区号码。
- 对于每个扇区大小为512字节的磁盘,那意味着可以有9.4ZB(9.4 x 10^21字节)或18 E 个512字节(9,444,732,965,739,290,426,880字节 或 18,446,744,073,709,551,615(2^64-1)个扇区 x 512(=2^9)字节每扇区)。
- GPT 分区已经没有所谓的主、延伸、逻辑
分区的概念,每笔纪录都可以独立存在, 每个都可以视为是主分区并格式化使用。