原来磁盘分区是这么回事,这回就都懂了

存储 存储软件
装过系统的人都知道必须要分区后才能安装系统,形象点的说比如windows里C:、D:之类的东西;如果你要问硬盘为什么要分区,我也说不上来很严格的原因,首先从使用习惯上来讲,我们不希望数据杂乱无章堆积在一起,其次,如果不分区,如何才能在一块硬盘上使用不同的文件系统(下面讲到)呢,学院派的说法是:数据安全和性能考虑。

 磁盘的分区

装过系统的人都知道必须要分区后才能安装系统,形象点的说比如windows里C:、D:之类的东西;如果你要问硬盘为什么要分区,我也说不上来很严格的原因,首先从使用习惯上来讲,我们不希望数据杂乱无章堆积在一起,其次,如果不分区,如何才能在一块硬盘上使用不同的文件系统(下面讲到)呢,学院派的说法是:数据安全和性能考虑。

先要说硬盘中最最重要的***扇区,因为整块硬盘的重要信息都在这里:

MBR(Master Boot Record 主启动记录):开机引导程序就在安装在此,占用446byte

DPT(Disk Partition table 硬盘分区表):记录硬盘上的分区元信息,占用64byte

[[231474]]

MBR是如何工作的呢,不用深究,反正就是系统开始时会主动读取数据的地方,这样才能引导进行操作系统的启动;DPT要仔细的讲讲,分区的大致意思就如同抢地盘,不过人家比较规矩,按照柱面(最小的分区单位)分配,比如***个分区从柱面1-200,第二个分区201-500,但三个分区501-1000...(省略并非可以***分配下去哦)

图1

图2

为啥说不能一直分配下去呢,技术柱面数量足够,因为上面说到硬盘分区表只有64个字节,每条分区记录需要占用16字节,最多只能分4个。疑问在此:我的电脑怎么分了5个(cdeg)?

其实我说的4个分区是所谓的主分区,为了能支持很多分区引入了扩展分区的概念, 也就是说,可以使用DPT中一条记录来记录扩展分区的信息,然后在扩展分区中再继续划分逻辑分区,而逻辑分区的分区信息则记录在扩展分区的***个扇区中,如此则可以像链表一样划分出很多分区来。但注意,一个分区表中可以有1~4条主分区,但是最多只能有1个扩展分区。

图3

图4

分区表之间是如何关联的,详细讲一下,分区表是一个单向链表,***个分区表,也就是位于硬盘***个扇区中的DPT,可以有一项记录扩展分区的起始位置柱面,类似于指针的概念,指向扩展分区(图3),根据这项记录我们可以找到扩展分区的某柱面0磁头1扇区(CHS),而这个扇区中又存放了第二个分区表,第二个分区表***项记录一般表述了当前所在的逻辑分区的起始/终止柱面,第二项记录表述了下一个逻辑分区所在的0磁头1扇区(CHS),第三、第四项记录不存任何信息(图4)。

请看下图,主引导记录/分区表所在的是硬盘***个分区,基本分区1、基本分2、基本分区3都是主分区、扩展分区内有2个逻辑分区,每个逻辑分区的***个扇区都是分区表。

分区后的系统启动

之前提到MBR中安装的引导加载程序,他的作用是什么?

① 提供开机菜单选项:可以供用户选择启动哪个操作系统,这是多重引导功能。

② 加载操作系统内核:每个操作系统都有自己的内核,需要引导程序来加载

③ 转交给其他引导程序:可以将工作移交给其他引导程序来进行上述操作。

其实引导加载程序除了可以安装在MBR中,还可以直接安装在每个分区的引导扇区(DBR)中,注意下,每个分区(主分区、逻辑分区)都有一个自己的启动扇区,专门用来安装引导加载程序,如上图左边“图表3分区结构”。

系统启动过程

① 首先,BIOS启动后,读取硬盘***个扇区MBR中的引导加载程序(可能是windows或者linux的grub)

② MBR中的引导程序提供开机菜单,你可以选择1)直接加载windows 内核 2)将工作转交给windows 分区内的引导扇区中的加载程序,让他自己去加载内核 3)转交给linux分区内引导扇区,让他去加载linux.

③ 根据用户选择的选项和引导加载程序中记录的分区,到分区表找对应的分区柱面号等分区信息,启动内核或者分区加载程序。

Window安装时默认会自动将MBR和windows所在分区的引导扇区都装上引导程序,而不会提供任何选项给用户选择,因此如果之前装过其他操作系统,然后再另外装一个windows时,会把公用的MBR覆盖掉,如此,原来的操作系统就无法启动了。

如果先装windows,然后装linux,linux 会覆盖MBR,然后让用户选择是否将windows等其他操作系统的启动项添加进来,如果你选择了添加进来,那么你在开机时就会有两个选项让用户进行选择了。

文件系统

文件系统也是很大很复杂的话题,我们仍然以比较通俗、粗颗粒度来讲解,试想一下,我们的文件如何对应到磁盘的扇区上呢,所以光有底层的概念 磁道 扇区是没有用的,需要更加抽象的数据类型或结构来抽象底层的细节。

文件系统是一套实现了数据的存储、分级组织、访问和获取等操作的抽象数据类型(Abstract data type)。文件系统是一种用于向用户提供底层数据访问的机制。它将设备中的空间划分为特定大小的块(扇区),一般每块512字节。

数据存储在这些块中,大小被修正为占用整数个块。由文件系统软件来负责将这些块组织为文件和目录,并记录哪些块被分配给了哪个文件,以及哪些块没有被使用。

不过,文件系统并不一定只在特定存储设备上出现。它是数据的组织者和提供者,至于它的底层,可以是磁盘,也可以是其它动态生成数据的设备(比如网络设备)。

 

责任编辑:武晓燕 来源: ATM故障代码查询
相关推荐

2020-06-30 08:12:32

VMwareKVMDocker

2022-10-21 08:17:13

MongoDB查询Document

2022-08-15 08:01:00

三色标记JVM算法

2021-07-29 16:56:59

微信腾讯注册

2020-11-12 07:32:53

JavaScript

2020-03-04 08:47:10

Kafka架构原理

2011-01-18 09:51:59

Linux磁盘分区

2011-01-18 10:25:19

Linux磁盘分区

2009-10-19 18:01:35

Linux磁盘分区

2011-01-18 10:00:59

Linux磁盘分区

2017-09-13 09:23:04

磁盘分区bash

2020-01-11 19:00:01

GParted磁盘分区工具开源

2017-05-10 07:00:20

磁盘分区dcfldd工具备份分区

2014-06-09 10:09:31

Linux磁盘分区

2013-08-23 14:07:45

磁盘分区

2009-12-15 08:50:58

Windows 7系统分区

2017-03-09 14:58:19

GPartedLinux磁盘分区

2023-01-31 14:00:01

TIAPUUID

2014-06-06 13:51:36

磁盘分区IO分析

2014-05-30 09:44:18

磁盘分区Windows平台
点赞
收藏

51CTO技术栈公众号