linux下的磁盘分区
前段时间,自己在练习linux磁盘分区的时候把系统搞坏了,自己搭建在那台主机上的博客也随之消失了O_o。于是自己不得不重新安装系统,搭建环境,还好之前写的博客源文件还有备份,要不然损失真就大了。
也好久没有更新博客了,今天就总结下linux磁盘分区的知识吧!
磁盘组成
既然我们是给磁盘来分区的,那就先来复习下磁盘的组成,磁盘主要包括以下几个部分:
- 圆形的盘片(记录数据)
- 机械手臂和机械手臂上的磁头(可读写盘片上的数据)
- 主轴马达(可以转动盘片)
从上面我们明白数据存储和读取的重点在于盘片,而盘片的物理组成如下:
相关概念说明如下:
- 扇区(Sector)为最小的物理存储单位,每个扇区为521bytes。
- 将扇区组成一个圆,就是一个磁道(Track)。
- 多个盘片(platter)同一位置的磁道组成一个柱面(Cylinder)。
另外我们需要明白的是,柱面是磁盘分区(partition)的最小单位。
MBR和磁盘分区表
整个磁盘的第一个扇区是很重要的,因为它里面包含两部分内容:MBR
和磁盘分区表
。
MBR
MBR即硬盘主引导记录(Master boot record),它占有446bytes,保存了最基本的引导加载程序(boot loader)
。
而引导加载程序(boot loader)是一个可读取内核文件来执行的软件,它提供了以下几个功能:
- 提供菜单: 用户可以选择不同的开机选项,这也是多重引导的重要功能。
- 载入内核文件: 直接指向可开机的程序区段来开始操作系统。
- 转交其他loader: 将引导加载程序转交给其他loader负责。
而我们的开机流程与MBR息息相关,我们知道,BIOS是一个写入到主板上的韧体(写入到硬件上的软件程序),它是开机时计算机系统会主动执行的第一个程序。接下来BIOS会依据用户设置去读取计算机的第一个可开机设备,比如硬盘。并且到该硬盘里面去读取第一个扇区的MBR。至此,BIOS任务完成,剩下就转交给MBR的boot loader来完成了。
磁盘分区表
partition table即分区表,它占有64bytes,保存了与磁盘分区相关的信息。
它的作用就在与告诉操作系统:某分区可以访问的磁盘区域是柱面A到柱面B之间的块。
正如上图所示,linux分区表中仅能记录四条分区信息,其中每条记录区记录了该分区的起始柱面和结束柱面号码。
到现在,我们对分区应该大致理解如下:
- 所谓的分区,就是对分区表的64bytes设置而已。
- 硬盘默认的分区仅能写入四组分区信息。
- 这四组分区我们成为主(primary)分区或者扩展(extended)分区。
- 分区的最小单位为柱面(cylinder)。
磁盘与分区的设备文件名
了解了磁盘的基本组成之后,我们需要知道,在linux中,磁盘和分区的设备文件名分别怎么表示。
磁盘设备文件名
个人计算机常见的磁盘接口有两种,分别是IDE
和SATA
接口。
以IDE接口来说,通常一个主机有两个IDE接口(primary和secondary),而一个IDE接口可以通过一个IDE扁平电缆连接两个IDE设备(Master和slave)。所以,一台主机通常最多可以连接4个IDE设备。
这4个IDE设备在linux中会有如下的设备文件名:
再以SATA接口来说,由于SATA/USB/SCSI
等设备接口都是用SCSI
模块来驱动的,因此这些设备的设备文件名都是/dev/sd[a-p]
的格式。
况且与IDE接口不同的是,他们没有一定的顺序,而他们设备文件名的顺序则取决于linux内核检测到磁盘的顺序。
下面来看一个案例:
假设你有一个USB磁盘和两个SATA磁盘,并且你的PC主板上有6个SATA插槽,你将这两个SATA磁盘分别安插在SATA1、SATA5插槽上,请问这三个磁盘在linux中的设备文件名是什么?
答案如下:
- SATA1插槽上的磁盘文件名:/dev/sda
- SATA2插槽上的磁盘文件名:/dev/sdb
- USB插槽上的磁盘文件名:/dev/sdc (由于开机完成之后才被系统识别)
分区设备文件名
就拿设备文件名为/dev/hda
的这块磁盘来说,假设这块磁盘的分区情况如下:
上图中看出,我们硬盘的分区记录仅使用了两个,其中P1为主分区,P2为扩展分区。
请注意:扩展分区的目的是使用额外的扇区来记录分区信息,扩展分区本身并不能用来格式化。这样我们可以通过扩展分区所指向的那个区块继续做分区的记录。
这样,我们就可以进一步将扩展分区P2划分出L1-L4这几个逻辑分区。
并且,以上几个分区的设备文件名如下所示:
- P1:
/dev/hda1
- P2:
/dev/hda2
- L1: /dev/hda5
- L2: /dev/hda6
- L3: /dev/hda7
- L4: /dev/hda8
我们注意到: 怎么分区的设备文件名没有/dev/hda3
和/dev/hda4
呢?
这是因为,前面四个号码都是保留给Primary或者Extended用的。所以,逻辑分区的设备文件名号码就由5开始了。
概念小结
这里将主分区、扩展分区、逻辑分区的相关概念,做个总结:
- 主分区与扩展分区最多可以有4个(硬盘的限制)。
- 扩展分区最多只能有一个(操作系统的限制)。
- 逻辑分区是由扩展分区持续切割出来的分区。
- 主分区和逻辑分区可以被格式化,而扩展分区不可以被格式化。
- 逻辑分区的数量因操作系统而不同。在linux中,IDE硬盘最多有59个逻辑分区(5号到63号),SATA硬盘最多有11个逻辑分区(5号到15号)。
fdisk
前面总结了理论,这里来实践一下。以下是linux中分区可能用到的命令:
|
|
我上次就是使用这个命令进行分区的时候,将系统弄奔溃的,所以使用时候一定要万分小心,最后确定分区表是正确的之后,才输入w
。
今天就总结到这里。