一:概述

磁盘分区对于操作系统而言,每一个分区都相当于一个独立的磁盘,各个分区可以创建不同的文件系统。合理的分区能够保证我们的数据安全。合理的进行数据分区可以有效地保护系统磁盘空间,提高系统的运行速度。

二:磁盘分区的两种格式

在传统的MBR(Master Boot Record,主引导记录)中,分区信息存储在磁盘第一个扇区中。扇区是磁盘读写的最小单位。如果扇区的大小为512字节,则最多可以管理2TiB的容量。在MBR中,第一个扇区的位置和扇区数在LBA(逻辑块地址)中。MBR分区包括三种类型,分别是主分区、扩展区和逻辑分区。下面是这三种分区类型的介绍:

主分区:1个磁盘上最多可以创建4个主分区,分区号从1到4.可以在1个主分区中创建一个文件系统将其用作交换分区。

扩展分区:每个磁盘只能创建1个扩展分区,可以使用分区号1-4的其中之一。如果创建扩展分区,则基本分区的最大数目为3个。

逻辑分区:在扩展分区中可以创建多个分区,分区从5号开始。逻辑分区中可以创建1个文件系统,也可以用作交换分区。

这三种划分情况如下图所示:

                            磁盘分区_分区表

在/dev/sda中有三个主分区,1个扩展分区,在扩展分区中又划分了3个逻辑分区。

GPT(GUID Partition Tabel)是新一代的分区表格式,使用全局唯一标识符来标识设备。对于GPT,分区新信息存储在第二个扇区的GPT标头中,从第三个扇区开始存储32个(默认)个扇区。从第二个扇区的GPT标头存储条目数(默认128个)和大小(默认128字节)。从第三扇区开始分区与每个分区相对应的条目,并且通过每个条目中LBA将分区的第一个扇区和最后一个扇区的位置存储在8字节区域中,最多配置128个分区。如果扇区大小为512字节,可以管理多达8ZiB容量。

GPT标头包含磁盘的全局唯一标识符(GUID).每个条目均代表分区类型的GUID和表示分区的GUID。GPT标头和条目在磁盘存储为辅助文件,用于备份。GPT分区是UEFI的一部分,可以定义128个分区,没有主分区和扩展分区的概念,所以分区都能格式化。

三:对磁盘进行分区的方式

Linux中提供的主要分区管理工具是fdisk、GPT fdisk、GNU Parted和GNOME Partition这四个,下表是分区管理工具对应的命令及其说明:

分区工具

命令

说明

fdisk

fdisk

Linux早期提供的MBR分区管理工具

GPT fdisk

gdisk

GPT分区管理工具,采用类似于fdisk命令的用户界面

GNU Parted


parted

适用于MBR和GPT分区的多动能分区管理工具

GNOME Partition Editor

gparted

用于GNOME桌面环境的图形分区管理工具,支持MBR和GPT分区

fdisk分区管理工具的用法:

这是一个MBR分区管理工具,用于显示分区表,以及创建、删除和更改分区。

格式命令:fdisk [选项] [设备名称]

指定-I选项显示指定设备的分区,如果没有指定设备,会参照/proc/partitions文件显示每个设备的分区。在不带-i选项的情况下执行disk命令,将以交互的模式管理指定的设备。

fdisk的使用分为查询部分和交互部分,执行”fdisk设备名称“即可以进入命令交互操作界面,以交互的方式在命令提示符下输入?或help显示命令列表。交互模式命令以及说明如下表所示:

命令

说明

p

显示分区表

n

添加一个新的分区

d

删除分区

w

保存分区表并退出

q

退出而不保存分区表的更改

l

查看指定的分区类型

t

改变分区类型

x

进入高级操作模式

r

移至recovery&transfomation菜单

?

显示命令列表

m

显示每个交互命令的详细含义

o

创建DOS分区表

交互命令有很多,其中比较常用的有p、n、m、d、l、q、w这几个选项。执行fdisk -l表示查看系统中所有设备的分区情况,如下图所示,结果中显示只有/dev/sda一块磁盘,包括两个主分区/dev/sda1和/dec/sda2。这是还没有进行磁盘分区的情况。

                            磁盘分区_分区表_02

fdisk /dev/sdb可以在sdb磁盘中显示、创建和删除分区,在命令6提示符中输入p显示sdb磁盘的分区信息,可以看到这个磁盘的的大小,如下图所示:

                            磁盘分区_管理工具_03

想创建分区就输入n,表示在sdb磁盘中创建一个新的分区。分区类型默认选择p,表示创建一个主分区,分区号默认是1.选择默认分区的扇区2048,按下Enter键,指定新建分区的大小,这里我指定了3G.完成分区的创建之后可以输入p查看新建分区/dev/sdb1的信息。

完成第一个主区创建之后,可以继续输入n创建第二个主分区/dev/sdb2。分区号默认为2,然后指定默认扇区的大小,完成第二个分区创建。这是输入p可以看到两个主分区的信息。

删除分区可以使用d命令,这里使用d命令删除/dev/sdb2分区。输入需要删除的分区号即可删除分区,输入p显示/dev/sdb磁盘中只有/dev/sdb1一个分区,/dev/sdb2分区已被删除,输入w保存退出命令交互模式。

四:添加一个新的磁盘分区

在关闭虚拟机的情况下添加,在”Oracle VM Virtualbox管理器“界面单击”设置“按钮,选择”存储>控制器:SATA“选项,在右侧的两个按钮中选则”添加虚拟磁盘“按钮,在弹出的对话框中按照提示创建新的虚拟磁盘。完成磁盘创建之后,启动虚拟机,再次使用fdisk -l命令可以看到新增一个还没有分区的新磁盘/dev/sdb。

五:gdisk管理工具

它用户划分容量大于2T的磁盘,用户界面与fdisk命令相似,包括显示分区表,创建、删除、修改分区以及MBR和GPT分区的转换。

命令格式:gdisk [选项] [设备名称]

使用-l选项执行gdisk命令之时,显示指定的设备分区,不指定-l选项的情况下,设备分区管理以交互方式执行,在交互方式下有三种类型的菜单,如下表所示:

菜单

命令

说明

main menu

-

主菜单模式,显示、创建和删除分区

p

显示分区表

l

列出分区类型

n

创建一个新的分区

d

删除分区

w

保存分区并保存并退出

q

退出而不保存分区表

r

移至recovery&transformation菜单

?

显示命令菜单

recovery&

transformation

menu

-

恢复和分区标准换模式、分区表备份,GPT到MBR转换等

b

从备份GPT标头创建GPT标头

d

从主GPT标头创建备份GPT标头

g

将GPT转换为MBR并退出

m

返回主菜单

experts' menu

-

专家模式,用于更改磁盘GUID和分区GUID,显示每个分区的详细信息

l

显式指定分区的详细信息

g

更改磁盘GUID

c

更改分区向导

m

返回主菜单

在命令提示符中输入?或者help可以显示命令列表。显示分区表、创建和删除分区操作与fdisk命令相同。使用gdisk命令从MBR分区转换为GPT分区。从执行结果来看,MBR:MBR only表示当前分区为MBR分区,GPT:not present表示当前不是GPT分区。

                            磁盘分区_分区表_04

这里我没有创建,就不演示这个了。

这个p命令和fdisk命令一样可以显示分区表。输入w命令写入分区信息时,分区信息将从MBR转换为GPT,在确定信息时输入Y。

转换之后,指定gdisk -l /dev/sdb命令可以看到当前分区类型已经从MBR转换成GPT了,GPT:present表示已更改为GPT分区。

使用gdisk命令可以从MBR分区转换为GPT分区,同样也可以从GPT分区转换为MBR分区。执行gdisk /dev/sdb命令显示当前分区为GPT分区,输入p命令显示分区表。

输入r命令可以将对话模式转换至Recovery/transformation菜单,在交互模式中输入?可以显示当前菜单中的交互命令。

在转换分区之前,你还要确认指定的磁盘是否正确,否则会导致数据丢失。输入g命令就可以将GPT转换为MBR了,使用p命令再次显示分区表,然后输入w命令将分区信息写入磁盘,再确认提示中输入Y,更改分区。

执行完上述转换操作之后,使用gdisk /dev/sdb命令可以查看到分区已经从GPT转换为MBR。

六:parted工具

这个工具比fdisk更加灵活,功能更加丰富,它可以创建分区、调整分区的大小、移动和复制分区、删除分区等。在功能使用方面parted与fdisk类似,parted也有两种模式,分别是命令行模式和交互模式,在命令模式执行命令时需要指定parted命令,如果未指定,则为交互模式,提示parted信息,等待命令输入。

格式:parted [选项]   [设备名称{子命令}]

这个命令和之前的不同需要指定子命令进行管理磁盘分区。

子命令

说明

help或?

显示帮助信息

mklabel

指定分区表格式(msdos即MBR分区或GPT)

mkpart

创建一个新分区。使用格式为:mkpart[分区类型] [FS类型] [起始位置] [结束位置]

print

显示分区信息

rm

删除分区

select

选择设备

quit

结束

rescur

恢复丢失的分区,使用参数指定开始位置和结束位置

unit

指定位置和大小,显示单位

执行parted /dev/sda print显示sda分区的信息。如下图所示:

                            磁盘分区_分区表_05

使用mklabel子命令指定GPT分区,输入确任信息Yes可以将分区指定为GPT。指定mkpart子命令可以在sdb磁盘中创建一个分区,执行print子命令显示分区信息:

                            磁盘分区_管理工具_06

磁盘分区使用较多的工具是fdisk,但是fdisl工具对管理的分区大小有限制,只能划分小于2TB的磁盘,parted比fdisk更加灵活。要使用parted命令需要安装parted工具包,查看系统是否安装,如果没有安装,则执行apt -y install parted命令进行安装(Ubuntu)。

指定rm命令删除分区,操作时需要指定分区编号将其删除,然后执行print子命令,结果显示之前在sdb中创建的分区已经删除。

除了上面的命令行模式创建,还可以命令交互模式中显示、创建和删除分区。