parted命令是由GNU组织开发的一款功能强大的磁盘分区和分区大小调整工具,与fdisk不同,它支持调整分区的大小。作为一种设计用于Linux的工具,它没有构建成处理与fdisk关联的多种分区类型,但是,它可以处理最常见的分区格式,包括:ext2、ext3、fat16、fat32、NTFS、ReiserFS、JFS、XFS、UFS、HFS以及Linux交换分区。
背景
fdisk命令是针对MBR分区进行操作,MBR分区因为自身设计原因,不能处理大于2TB的硬盘,并且只能有4个分区(3个主分区和1个扩展分区或者4个主分区)。针对大于2TB的硬盘,需要采用GPT分区,使用parted命令进行操作。
MBR和GPT的区别
MBR:MBR分区表(即是主引导记录),所支持的最大卷是2T,而且对分区有限制:4个主分区或者3个主分区加一个扩展分区
GPT:GPT(即GUID分区表),是源自EFI标准的一种新的磁盘分区表结构的标准,是未来磁盘分区的主要形式。与MBR相比有一些优点,如:支持大于2T的卷,最大可以是18EB;每个磁盘最多可以支持128个分区等
命令
parted 命令分为两种模式:命令行模式和交互模式。
parted [options] [device [command [options...]...]]
option:
-h, --help 显示此求助信息
-l, --list 列出所有设备的分区信息
-i, --interactive 在必要时,提示用户
-s, --script 从不提示用户
-v, --version 显示版本
command:
help [COMMAND] #打印通用求助信息,或关于 COMMAND 的信息
mklabel 标签类型 #创建新的磁盘标签 (gpt、msdos等)
mkpart 分区类型 [文件系统类型] 起始点 终止点 #创建一个分区,分区类型可以为primary、extended等
name MINOR 名称 #将编号为 MINOR 的分区命名为“名称”
print #打印分区表,或者分区
quit #退出程序
rescue 起始点 终止点 #挽救临近“起始点”、“终止点”的遗失的分区
resize MINOR 起始点 终止点 #改变位于编号为 MINOR 的分区中文件系统的大小
rm NUMBER #删除编号为NUMBER的分区
select DEVICE #选择要编辑的设备
set NUMBER 标志 状态 #改变编号为NUMBER的分区的标志,标志分为boot,lvm,swap等,状态分为on或off
实例
1、打印某磁盘分区表
parted -s /dev/sda print
2、删除分区
parted -s /dev/sda rm 1 #删除分区1
3、查看所有磁盘分区信息
parted -l
4、建立分区
指定分区标签
parted -s /dev/sda -- mklabel gpt
解释:磁盘的分区格式gpt,指定分区格式//如果出现特殊情况,比如命令执行不了的情况,先执行partprobe 命令
做swap分区
/sbin/parted -s /dev/sda -- mkpart swap 2048s 2000
/sbin/parted -s /dev/sda -- mkpart primary 2001 2500
/sbin/parted -s /dev/sda -- mkpart primary 2501 -1
解释:这里的2048s表示 2048个扇区(sector),而非 2048 字节等,后面的 2000 表示磁盘截止容量。表示创建了个 2G 的 swap 分区,这里的单位为 MB
parted -s /dev/sdx -- mkpart primary 1 -1
解释:从第一个盘到最后一个盘全部作为一个分区
5、设置/dev/sda的第三个分区为启动分区
/sbin/parted -s /dev/sda set 3 boot on
6、格式化成指定文件类型
mkfs.ext4 -F -b 4096 -i 8192 -I 256 -m0 /dev/sda2
对于大磁盘分配inode节点会占用大量磁盘空间,因此一般会人工制定。
解释:
-i:指定多大磁盘空间分配一个 inode,这里设置为8192 字节/inode
-b: 指定 block 大小,默认 4096
-I: 指定 inode大小,默认 256
-m:指定保留 block 占用总数百分比,默认 5%
-F:强制格式化
实例:6T的数据盘,分成5个分区
parted /dev/sdl mklabel gpt
parted /dev/sdl mkpart primary 0% 20%
parted /dev/sdl mkpart primary 20% 40%
parted /dev/sdl mkpart primary 40% 60%
parted /dev/sdl mkpart primary 60% 80%
parted /dev/sdl mkpart primary 80% 100%