导读目录
硬盘的组成
-
硬盘的物理结构
主要针对的是机械硬盘及其内部的结构加以介绍,以下内容可能不是硬盘内部全部的部件,本次的介绍的重点是说明与硬盘读写相关主要部件的作用。
刚接触到linux,学习到硬盘分区的部分,感觉需要对机械硬盘的内部结构了解的太少了,所以经过翻阅资料,在这里稍微整理下硬盘内部的结构内容,有助于对硬盘分区的理解。- 磁头
- 主要任务完成盘片上数据的读写操作,盘片在高速旋转时,磁头会飞行在盘面上方,而不是接触盘面。
- 每个盘片的两面都会有一个磁头,当然有的硬盘的盘片有可能只有一个磁头,磁头的编号从0开始。
- 机械臂
- 使磁头部件作径向移动的装置,已完成磁道变换
- 盘片
- 含有磁性的合金盘片,用来存取写入的数据
- 每张盘片的容量成为单碟容量,而硬盘的容量就是所有盘片容量的总和
- 由于单碟容量的限制,通常一个硬盘会含有多张盘片
- 盘片的厚度在0.5mm左右,盘片的转速与盘片大小有关
- 5400r/min,7200r/min,12000r/min,15000r/min
- 每个盘片都会有上下两面,都可以被利用来存储数据;能存储数据的盘面成为有效盘面,每个盘面都会有一个盘面号,其和磁头编号是相对应的,从0开始编号。
- 含有磁性的合金盘片,用来存取写入的数据
- 主轴马达
- 盘片安装在主轴上,马达的转动,带动盘片高速旋转
- 磁头
以上就是对硬盘内部物理结构主要部件的介绍,下面继续介绍盘片上的内容,盘片主要是用来存储数据的,究竟是怎么完成对存取数据的划分,就需要对盘片进行逻辑划分;这中操作在硬盘出厂的时候就已经设置好了,这种属于对硬盘的低级格式换,主要的作用就是对硬盘划分扇区、磁道和柱面等,硬盘的CHS就是在这时候被确定下来的。
盘片的逻辑划分
这里即是对硬盘的低级格式化,会划分出扇区、磁道及柱面等其他的一些硬盘参数;对扇区进行编号(C/H/S)。
- 扇区
- 盘片在转动时,磁头在盘面上画过的一段圆弧,成称扇区,即sector
- 扇区并不是连续的,在磁道上被划分成一段一段的,从1开始编号
- 是硬盘最小的物理存取单位,每个扇区为512byte
- 磁道
- 磁盘在格式化时被划分成许多同心圆,这些同心圆轨迹叫做磁道,即track
- 磁道从外向内从0开始编号,盘面的容量越大,包含的磁道数越多
- 磁道是看不见的,只是盘面上一些被磁化的区域
- 柱面
所有盘面上相同编号的磁道构成的圆柱,称为柱面,即 cylinder
每个柱面上的磁头(header)由上到下从0开始编号
-
数据的读写是按照柱面进行的,而非按照盘面进行
数据的读/写按柱面进行,即磁头读/写数据时首先在同一柱面内从“0”磁头开始进行操作,依次向下在同一柱面的不同盘面即磁头上进行操作,只在同一柱面所有的磁头全部读/写完毕后磁头才转移到下一柱面,因为选取磁头只需通过电子切换即可,而选取柱面则必须通过机械切换。电子切换相当快,比在机械上磁头向邻近磁道移动快得多,所以,数据的读/写按柱面进行,而不按盘面进行
一个磁道写满数据后,就在同一柱面的下一个盘面来写,一个柱面写满后,才移到下一个扇区开始写数据 柱面是分区的最小单位
硬盘的分区
以上通过对硬盘的内部结构及盘片划分的介绍,对硬盘的大致读写方式及数据的有了大致的了解,出厂前的是低级格式化,是针对整个一个盘的操作,那么硬盘的分区就是将整个物理硬盘分隔成逻辑的区域,对分区进行操作的。
- 分区概述
-
什么是分区
分配指定的柱面范围,划定磁盘上数据存取的区域分区的概念,相当于一套房子里,有卧室,有厨房,卫生间。或者可以比喻成一个柜子,里面有很多个抽屉,有大的,有小的,抽屉就可以理解成分区。
一块硬盘,使用前,要经过三个步骤
1. 低级格式化
2. 分区
3. 高级格式化
其中,低级格式化,是硬盘厂商做的事情,每一块硬盘出厂前,厂商就已经对它进行低级格式化了,这也是一个必须的步骤,低级格式化的目的是将磁盘划分出柱面和磁道,再将磁道划分成若干个扇区,每个扇区又划分出标识部分ID,间隔区GAP和数据区DATA等等。另外,低级格式化,对硬盘是一种损耗,不到万不得已,不建议进行低级格式化。
分区的就是硬盘的区分,这个概念在之前已经提过,而高级格式化,也就是创建文件系统,就是我们在电脑上的格式化操作。 -
分区的作用
- 大硬盘搜索范围大,效率低
- 在不损失数据的情况下重装系统
- 针对不同的挂载点开启不同的挂载选项
- 针对不同挂载点的特性分配给分区合适的文件系统以合理发挥性能
- 对磁盘的频繁读取限定在分区内,降低磁盘的受损;对于经常访问的挂载点单独分区
-
- 硬盘的标识
- 分区的命令规则
对于linux来说一切皆文件,所以硬盘也不例外,不同的硬盘设备及分区都有对应的文件名。 - 硬盘分类
硬盘的分类可以通过多个纬度来区分的,本次主要以硬盘的接口类型来进行区分-
IDE接口的硬盘
- 支持IDE接口类型的硬盘,一个IDE扁平电缆可以接两块硬盘,一般主机会提供两个IDE接口,故最多可以接4个IDE硬盘。
- /dev/hd[a-d]x
hd:代表为IDE接口的硬盘
a:代表第一个IDE接口的主硬盘
b:代表第一个IDE接口的从硬盘
c:代表第二个IDE接口的主硬盘
d:代表第二个IDE接口的从硬盘
x:代表硬盘上分区的标识
IDE(Integrated DriveElectronics)接口是一种在个人电脑中曾经广泛使用的磁盘接口。其采用并行数据传输的方式,接口体积比较大,IDE总线是一条共享总线,为了增加一条IDE总线上的设备数量,每个IDE总线可以支持两个设备,分别为主设备和从设备。
-
SCSI/SATA/SAS/USB硬盘
这几种硬盘类型使用的接口都不同与IDE接口,但SCSI和IDE接口的硬盘接口类型都属于并口,SATA/SAS接口类型属于串口。IDE是一种比较旧的硬盘接口类型,随着串行IDE驱动器的发明,既SATA(串行ATA)接口的出现,IDE驱动器的名称也发生了改变。
SCSI(Small ComputerSystem Interface)为小型计算机系统接口,是一种连接主机和外围设备的接口,SCSI接口和IDE都是一种并行接口类型。但和IDE相比,SCSI接口具有更好的传输性能,因此通常应用在服务器硬盘中。采用这种接口的硬盘具有更好的稳定性、更快的性能
由于串行接口在数据传输要由于并行接口,所以在之前的ATA的基础上出现了串行ATA即SATA;在SCSI的基础上发展形成了SAS。
1. /dev/sd[a-p]x
sd:代表硬盘为SCSI/SATA/SAS/USB硬盘
[a-p]:代表第几个硬盘,通常为优先检测到的硬盘用a表示,第二个硬盘用b标识,以此类推。
x:代表硬盘上分区标识
-
- 分区的命令规则
- 分区机制
对于硬盘的分区机制主要有两种,一种是MBR,一种是GPT。-
MBR分区
即Master Boot Record)主引导记录,是传统的分区机制,应用于绝大多数使用BIOS的PC设备。
对于MBR分区机制,才会有主分区、扩展分区和逻辑分区的概念。
所谓的“分区”只是针对那个64bytes 的分区表进行设置而已。
- MBR分区机制的特点
支持32位和64位操作系统
支持分区数量有限
只支持不超过2T的硬盘,超过2T的硬盘将只能用2T空间 - MBR引导扇区结构
- 位于磁盘的0磁道的第一个扇区,不参与硬盘分区;主要用来存储MBR,主引导记录
- 一共有512byte,其中系统引导加载器(boot loader)占446byte;分区表(partition table)占64byte,每16byte标识一个分区,一共可以标识4个分区(主分区+扩展分区),所以最多可以支持4个主分区,需要4个以上的分区就需要将一个主分区用于扩展分区,在扩张分区的基础上划分逻辑分区;结束标识占2byte,用4个16进制数来表示55AA,表示前面的510byte是有效的。
-
分区表的结构
从上边的图示很直观的看到MBR分区表64bytes中16byte的结构,其中有4byte是用来记录分区的扇区总数的,所以可以计算出一个扇区最多支持2^32扇区,一个扇区512byte,所以最大支持2T的分区。
-
-
MBR的分区方式
通过对MBR分区表的介绍,可以知道其对分区的数量是有限制的,所有通常MBR的分区方式为:首先需要确保至少有一个主分区,对windows来说用来安装系统,而linux系统,在安装时也需要将/boot放在主分区。
- 主分区
主分区是单纯的一个分区,一块硬盘最少要有一个主分区。 - 扩展分区
实际上是无法直接使用的,需要在扩展分区的基础之上再划分逻辑分区,才可以使用,这个理论上可以划分无限个逻辑分区的。除了主分区以外,就是扩展分区,只能有一个。
-
什么是扩展分区?
所谓扩展分区,严格地讲它不是一个实际意义的分区,它仅仅是一个指向下一个分区的指针,这种指针结构将形成一个单向链表。这样在主引导扇区中除了主分区外,仅需要存储一个被称为扩展分区的分区数据,通过这个扩展分区的数据可以找到下一个分区(实际上也就是下一个逻辑磁盘)的起始位置,以此起始位置类推可以找到所有的分区。无论系统中建立多少个逻辑磁盘,在主引导扇区中通过一个扩展分区的参数就可以逐个找到每一个逻辑磁盘 -
扩展分区结构:扩展引导记录(EBR)+ 逻辑分区
扩展分区中的每个逻辑驱动器都存在一个类似于MBR的扩展引导记录( Extended Boot Record, EBR) -
扩展引导扇区(EBR):类似于MBR的扩展引导记录,扩展引导记录包括一个扩展分区表和该扇区的标签.
扩展引导记录将记录只包含扩展分区中每个逻辑驱动器的第一个柱面的第一面的信息,但是,如果磁盘上没有扩展分区,那么就不会有扩展引导记录和逻辑驱动器。 -
EBR结构:
逻辑分区前扇区,如扩展分区0号扇区(512bytes)- 前446bytes:未使用,全为0;
- 扩展分区表(64bytes):记录分区状态,每16bytes分为一个项,共四个项。
第一项:指向它自身的引导扇区;
第二项:指向下一个逻辑驱动器的EBR,注:如果不存在进一步的逻辑驱动器,第二项不会使用,且被记录成一系列零。
第三项:未使用
第四项:未使用 - 结束标识(2bytes): 55AA ,有效性标识;55AA为有效
- 主分区
- MBR分区机制的特点
-
GPT分区
全局唯一标识分区表(GUID Partition Table,缩写:GPT),是一种新的分机管理机制,解决了 MBR 分区表机制存在的缺点,可以支持超过 2T 的硬盘,可以兼容 MBR。GPT 分区机制,不再有扩展分区和逻辑分区的概念,只有主分区,GPT 最大支持的分区可以达到 128 个。它是可扩展固件接口(EFI)标准(被Intel用于替代个人计算机的BIOS)的 一部分,被用于替代BIOS系统中的一32bits来存储逻辑块地址和大小信息的主引导记录(MBR)分区表,GPT分配64bits给逻辑块地址,
- GPT的特点
与目前普遍使用的主引导记录(MBR)分区方案相比,GPT提供了更加灵活的磁盘分区机制。它具有如下优点:- 支持2TB以上的大硬盘。
- 每个磁盘的分区个数几乎没有限制(Windows系统最多只允许划分128个分区)。
- 分区大小几乎没有限制。
- 分区表自带备份。在磁盘的首尾部分分别保存了一份相同的分区表,其中一份被破坏后,可以通过
另一份恢复; - 循环冗余检验值针对关键数据结构而计算,提高了数据崩溃的检测几率;
- 虽然MBR提供1字节分区类型代码,但GPT使用一个16字节的全局唯一标识符(GUID)值来标识分区
类型,这使分区类型更不容易冲突; - 每个分区可以有一个名称(不同于卷标)。
-
GPT分区硬盘结构
由于比较专业,直接摘取别的地方,如下:
- LBA0:保护性MBR,
在GPT分区表的最开头,处于兼容性考虑仍然存储了一份传统的MBR(LBA 0),这个MBR叫做保护性MBR(Protective MBR)。其中包含有磁盘签名,MBR分区表,结束标志。这里没有引导代码,分区表中只有一个分区表项,GPT不会用到,这个分区项只是为了让系统认为磁盘是合法的. - LBA1:主要GPT头部:
主要GPT头部位于1号扇区,会定义分区表的起始位置,结束位置,分区表项个数;
分区表头还记录了这块硬盘的GUID,记录了分区表头本身的位置和大小以及备份分区表头和分区表的位置和大小(在硬盘的最后)。它还储存着它本身和分区表的CRC32校验。固件、引导程序和操作系统在启动时可以根据这个校验值来判断分区表是否出错,如果出错了,可以使用软件从硬盘最后的备份GPT中恢复整个分区表,如果备份GPT也校验错误,硬盘将不可使用。 - LBA2-33:分区表项
分区表位于GPT磁盘的2-33号扇区,一共占用32个扇区,能够容纳128个分区表项。每个分区表项大小为128字节。因为每个分区表项管理一个分区,所以GPT磁盘可以创建128个分区。
GPT分区表使用简单而直接的方式表示分区。一个分区表项的前16字节是分区类型GUID。接下来的16字节是该分区唯一的GUID(这个GUID指的是该分区本身,而之前的GUID指的是该分区的类型)。再接下来是分区起始和末尾的64位LBA编号,以及分区的名字和属性。 - LBA34:分区区域
GPT分区区域就是用户使用的分区,也是用户进行数据存储的区域。分区区域的起始地址和结束地址由GPT头定义。 - LBA -33~-2:分区表备份
分区区域结束后就是分区表备份,其地址在GPT头备份扇区中有描述。分区表备份是对分区表32个扇区的完整备份。如果分区表被破坏,系统会自动读取分区表备份,也能够保证正常识别分区 - LBA -1:GPT头备份
GPT头有一个备份,放在GPT磁盘的最后一个扇区,但这个GPT头备份并非完全GPT头备份,某些参数有些不一样。复制的时候根据实际情况更改一下即可。
- LBA0:保护性MBR,
- GPT的特点
-