在Linux中,常用的磁盘管理工具包括 fdisk、parted、gdisk 等。它们可以用于创建、删除、调整分区、查看分区表等操作。
传统的MBR分区表(即主引导记录)大家都很熟悉,是过去我们使用windows时常见的。所支持的最大卷2T,且对分区有限制:最多4个主分区或3个主分区加1个扩展分区。
GPT(GUID Partition Table,全局唯一标识分区表)是一种较新的分区方式,它兼容MBR,能够处理超过2TB的磁盘。另外,GPT突破了MBR只有4个主分区的限制,最多可以有128个主分区,每个分区的容量也可以超过2TB。
GPT分区可以使用parted命令实现。parted命令是GNU开发的一款功能强大的磁盘管理工具,既可以管理MBR分区,也可以管理GPT分区,但通常用来管理GPT分区。
parted是一种支持多种文件系统的磁盘分区工具,它可以用于创建、删除、移动、调整分区大小等操作。parted 命令可以使用交互式、命令行方式或脚本方式进行操作。
关于fdisk及gdisk分区,可参考文章Linux CentOS7 fdisk。本文重点讨论parted工具的运用。
parted 命令分为两种模式:命令行模式和交互模式。
parted [option] device [command] ,该模式可以直接在命令行下对磁盘进行分区操作,比较适合编程应用。如:
# parted /dev/sdb print –显示磁盘/dev/sdb分区。
parted [option] device parted /dev/sdb
进入交互模式,建议使用交互模式,尤其是对parted命令不是很熟悉的情况下。
parted [选项]… [设备 [命令 [参数]…]…]
选项 描述
-h --help 显示此求助信息
-l --list 列出所有设别的分区信息
-i --interactive 在必要时,提示用户
-s --script 从不提示用户
-v --version 显示版本
parted交互命令 说明
check NUMBER 做一次简单的文件系统检测
cp [FROM-DEVICE] FROM-NUMBER TO-NUMBER 复制文件系统到另一个分区
help [COMMAND] 显示所有的命令帮助
mklabel,mktable LABEL-TYPE 创建新的磁盘卷标(分区表)
mkfs NUMBER FS-TYPE 在分区上建立文件系统
mkpart PART-TYPE [FS-TYPE] START END 创建一个分区
mkpartfs PART-TYPE FS-TYPE START END 创建分区,并建立文件系统
move NUMBER START END 移动分区
name NUMBER NAME 给分区命名
print [devices|free|list,all|NUMBER] 显示分区表、活动设备、空闲空间、所有分区
quit 退出
rescue START END 修复丢失的分区
resize NUMBER START END 改分区大小
rm NUMBER 删除分区
select DEVICE 选择需要编辑的设备
set NUMBER FLAG STATE 改变分区标记
toggle [NUMBER [FLAG]] 换分区表的状态
unit UNIT 设置默认的单位
Version 显示版本
格式 mklabel 分区类型
分区类型主要有:
aix amiga atari bsd dvh gpt loop mac msdos pc98 sun
格式 print
格式 mkpart 分区名称 起始点 结束点
起始点 结束点:可以为0 % 或者numberMiB/GiB/TiB
如1 默认为1M 0%起始点 100%结束点
格式 rm 分区编号
在使用gpt分区管理时,可以使用简写命令:
如(此版本命令执行时忽略大小写):
打印分区表print 可以简写p
退出quit 可以简写q
设置新卷标(为分区命名,可以不用数字代表分区,而用英语单词或拼音等)mklabel 可以简写为mkl(改变卷标会删除原分区信息)
创建分区 mkpart 可以简写mkp
寻求帮助help 可以简写h
需要选择时,可以只录入首字符,如需要选择忽略(Ignore)时录入i
在录入命令时,支持Tab键补全
当对某一命令不熟悉时,可以录入help寻求帮助,如下:(如果命令录入错误,也会出现如此说明,提醒正确录入或选择)
在正式分区前,需要设置卷标类型,录入mkl
回车确认后,提示录入卷标类型。如不清楚,可以按两次Tab键
如果想设置为dos类型,可以直接录入mkl msdos
如设置后更改类型,可以再次执行mkl命令。出现提示后选择确认。
选择MBR分区类型,就需要指定分区类型。然后再指定文件系统
设置起始点很重要,一般设置有问题时会有提示。简单地说,以设置0%为好,或设置为1。中间分区的起始点,可按上一分区的结束点设置,以*%方式为佳。
结束点可以设置为*M *G,或*%。最后设置为100%
前后分区的起始点与结束点可以相互参照。
可以执行print free命令,查看还有多少自由空间。
六.案例
用parted命令对一块20G磁盘进行msdos分区,每个分区约2G,共10个分区
a.先设置卷标类型
parted /dev/sdb mkl msdos
b.开始从1M处分区,共2G
parted /dev/sdb mkp P 1 2G
其中p是主分区的标志(e 是扩展分区l是逻辑分区)
查看分区情况
parted /dev/sdb p
c.按向上光标键,可以调出前一个命令(可作适当修改,再执行)
parted /dev/sdb mkp p 2G 4G
parted /dev/sdb mkp p 4G 6G
d.创建扩展分区
因为MBR分区,只能有四个主分区,或者三个主分区,一个扩展分区(再分为多个逻辑分区)
parted /dev/sdb mkp e 6G 100%
其中e 代表创建扩展分区,而100%代表为所有空间
e.创建逻辑分区
parted /dev/sdb mkp l 6G 8G
其中l 代表创建逻辑分区,从6G处开始,到8G处结束
f.设置执行命令后不作提示
从上图及前面多个截图,可以看到信息提示,我们都进行了忽略。能不能不让提示出现?可以在parted命令后加一选项-s
parted -s /dev/sdb mkp l 8G 10G
g.多次分区,完成全部
从上截图可知,加上-s选项,执行命令后不再出现提示!
更改分区类型及重新分区(共2个分区,每个分区各占50%)
原先用MBR分区,现准备用GPT分区,可以直接执行parted命令先删除原分区,再重新分区
与fdisk分区一样,parted也只能一次删除一个分区,不支持批量删除多个分区!!
a.提前备份数据
b.查看磁盘分区信息
parted -l
(即使指定某一盘,仍然查询的是所有盘)
parted /dev/sdb p
c.删除原分区
利用for循环可以快速删除/dev/sdb所有分区
for i in {1..11};do parted /dev/sdb rm $i;done
如果不想出现提示信息,可添加选项-s
查看删除后的信息,达到目的。
d.更改分区类型
从查看磁盘信息,可知原来是MBR分区,现更改为GPT。
parted -s /dev/sdb mkl gpt
更改分区类型一定会有提示,不希望出现,就加-s
e.创建分区
parted -s /dev/sdb mkp li1 0% 50%
parted -s /dev/sdb mkp li2 50% 100%
parted /dev/sdb p
parted的操作都是实时的,也就是说执行了一个分区的命令,就实实在在地分区了,而不是像fdisk那样,需要执行w命令写入所做的修改,所以进入parted的测试千万注意不能在生产环境中!