1.概述
在Linux系统中,当需要对大于2TB的磁盘进行分区时,传统的MBR(Master Boot Record)分区表已无法满足需求,必须使用GPT(GUID Partition Table)分区表。parted是一个功能强大的磁盘分区工具,完全支持GPT分区表,特别适合处理大容量磁盘。
2.环境准备
在开始分区之前,首先需要识别系统中的磁盘设备。使用以下命令查看磁盘信息:
[root@bjbj ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sda 8:0 0 4.4T 0 disk
├─sda1 8:1 0 600M 0 part /boot/efi
├─sda2 8:2 0 1G 0 part /boot
├─sda3 8:3 0 100G 0 part /
├─sda4 8:4 0 8G 0 part [SWAP]
└─sda5 8:5 0 4.3T 0 part
└─rl-kvmdata 253:0 0 4.3T 0 lvm /kvmdata
sdb 8:16 0 2.2T 0 disk
[root@bjbj ~]#

[root@bjbj ~]# fdisk -l
Disk /dev/sdb:2.18 TiB,2398999281664 字节,4685545472 个扇区
磁盘型号:RAID 730-8i 1GB
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 4096 字节
I/O 大小(最小/最佳):65536 字节 / 65536 字节
Disk /dev/sda:4.36 TiB,4797998563328 字节,9371090944 个扇区
磁盘型号:RAID 730-8i 1GB
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 4096 字节
I/O 大小(最小/最佳):65536 字节 / 65536 字节
磁盘标签类型:gpt
磁盘标识符:7C848FED-B401-4182-9BD5-AE7F2AD1D935
设备 起点 末尾 扇区 大小 类型
/dev/sda1 2048 1230847 1228800 600M EFI 系统
/dev/sda2 1230848 3327999 2097152 1G Linux 文件系统
/dev/sda3 3328000 213043199 209715200 100G Linux 文件系统
/dev/sda4 213043200 229820415 16777216 8G Linux swap
/dev/sda5 229820416 9371088895 9141268480 4.3T Linux LVM
Disk /dev/mapper/rl-kvmdata:4.26 TiB,4680327364608 字节,9141264384 个扇区
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 4096 字节
I/O 大小(最小/最佳):65536 字节 / 65536 字节
[root@bjbj ~]#

上面输出显示系统中有两块磁盘:
-
/dev/sda:4.4TB磁盘,已分区并包含LVM卷 -
/dev/sdb:2.2TB磁盘,未分区(这是我们即将操作的目标磁盘)
3.使用parted进行分区操作
(1)启动parted工具
使用parted对/dev/sdb进行分区:
[root@bjbj ~]# parted /dev/sdb
GNU Parted 3.5
使用 /dev/sdb
欢迎使用 GNU Parted!输入 'help' 来查看命令列表。
(parted)
(2)查看可用命令
进入parted交互界面后,输入help查看所有可用命令:
(parted) help
align-check 类型 N 检查分区 N 是否为 (最小=min|最佳=opt) 对齐类型
help [COMMAND] 打印通用求助信息,或 COMMAND 的帮助
mklabel,mktable LABEL-TYPE 创建新的磁盘卷标 (分区表)
mkpart 分区类型 [文件系统类型] 起始点 结束点 创建一个分区
name 编号 名称 将指定"编号"的分区命名为"名称"
print [devices|free|list,all] 显示分区表、可用设备、剩余空间或所有分区
quit 退出程序
rescue 起始点 终止点 挽救临近"起始点"、"终止点"的遗失的分区
resizepart NUMBER END 改变 NUMBER 的大小
rm NUMBER 删除编号为 NUMBER 的分区
select 设备 选择要编辑的设备
disk_set 旗标 状态 变更已选设备上的旗标
disk_toggle [旗标] 切换已选设备上的旗标状态
set 编号 旗标 状态 改变指定"编号"分区的旗标
toggle [编号 [旗标]] 切换"编号"分区上的"旗标"状态
type NUMBER TYPE-ID or TYPE-UUID type set TYPE-ID or TYPE-UUID of partition NUMBER
unit 单位 设置缺省的"单位"
version 显示目前 GNU Parted 的版本与版权信息
(parted)
# 主要命令说明:
-
mklabel:创建新的磁盘标签(分区表类型) -
mkpart:创建新分区 -
print:显示分区表信息 -
rm:删除指定编号的分区 -
quit:退出程序
(3)创建GPT分区表
对于大于2TB的磁盘,必须使用GPT分区表,输入mklabel命令,然后输入gpt:
(parted) mklabel
新的磁盘卷标类型? gpt
(parted)
(4)查看当前分区状态
下面显示分区表类型为GPT,由于还没有分区,所以看不到有任何分区。
(parted) print
型号:Lenovo RAID 730-8i 1GB (scsi)
磁盘 /dev/sdb:2399GB
扇区大小 (逻辑/物理):512B/4096B
分区表:gpt
磁盘标志:
编号 起始点 结束点 大小 文件系统 名称 标志
(parted)
(5)创建分区
使用mkpart命令创建分区:
(parted) mkpart
分区名称? []? sdb1
文件系统类型? [ext2]? xfs
起始点? 1
结束点? 100%
# 参数说明:
-
分区名称:为分区指定一个名称(可选)
-
文件系统类型:指定分区将使用的文件系统类型
-
起始点:分区起始位置,通常从1开始(1MB处,避免对齐问题)
-
结束点 :分区结束位置,
100%表示使用全部剩余空间

(6)验证分区创建
再次通过print命令可以看到已创建的分区信息,包括编号、起始点、结束点、大小和文件系统类型。
(parted) print
型号:Lenovo RAID 730-8i 1GB (scsi)
磁盘 /dev/sdb:2399GB
扇区大小 (逻辑/物理):512B/4096B
分区表:gpt
磁盘标志:
编号 起始点 结束点 大小 文件系统 名称 标志
1 1049kB 2399GB 2399GB xfs sdb1
(parted)

(7)退出parted
输入quit保存退出,分区立即生效。
(parted) quit
信息: 你可能需要 /etc/fstab。
[root@bjbj ~]#
4.创建文件系统(格式化磁盘)
分区完成后,需要创建文件系统才能使用,先查看刚才的分区情况:
[root@bjbj ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sda 8:0 0 4.4T 0 disk
├─sda1 8:1 0 600M 0 part /boot/efi
├─sda2 8:2 0 1G 0 part /boot
├─sda3 8:3 0 100G 0 part /
├─sda4 8:4 0 8G 0 part [SWAP]
└─sda5 8:5 0 4.3T 0 part
└─rl-kvmdata 253:0 0 4.3T 0 lvm /kvmdata
sdb 8:16 0 2.2T 0 disk
└─sdb1 8:17 0 2.2T 0 part
[root@bjbj ~]#

然后使用mkfs命令对刚才的分区的磁盘进行格式化,XFS文件系统特别适合大容量存储,支持在线扩展等高级功能。
[root@bjbj ~]# mkfs -t xfs /dev/sdb1
meta-data=/dev/sdb1 isize=512 agcount=32, agsize=18302896 blks
= sectsz=4096 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=0
= reflink=1 bigtime=1 inobtcount=1 nrext64=0
data = bsize=4096 blocks=585692672, imaxpct=5
= sunit=16 swidth=16 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=285982, version=2
= sectsz=4096 sunit=1 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
[root@bjbj ~]#
5.挂载分区
创建文件系统后我们还需要进行挂载,才能写入数据。
(1)临时挂载
先创建挂目录,然后再挂载分区:
[root@bjbj ~]# mkdir /backup
[root@bjbj ~]# mount -t xfs /dev/sdb1 /backup
[root@bjbj ~]#
完成后,验证是否挂载成功,进入目录写文件进行测试:
[root@bjbj ~]# df -Th
文件系统 类型 容量 已用 可用 已用% 挂载点
devtmpfs devtmpfs 4.0M 0 4.0M 0% /dev
tmpfs tmpfs 126G 0 126G 0% /dev/shm
tmpfs tmpfs 51G 19M 51G 1% /run
efivarfs efivarfs 512K 81K 427K 16% /sys/firmware/efi/efivars
/dev/sda3 xfs 100G 9.7G 91G 10% /
/dev/sda2 xfs 960M 354M 607M 37% /boot
/dev/sda1 vfat 599M 7.1M 592M 2% /boot/efi
/dev/mapper/rl-kvmdata xfs 4.3T 31G 4.3T 1% /kvmdata
tmpfs tmpfs 26G 124K 26G 1% /run/user/0
/dev/sdb1 xfs 2.2T 16G 2.2T 1% /backup
[root@bjbj ~]#

(2)永久挂载
为避免重启后需要重新挂载,需将挂载信息添加到/etc/fstab文件中:
[root@bjbj ~]# vim /etc/fstab
/dev/sdb1 /backup xfs defaults 0 0

# 配置项说明:
-
第一列:设备名或UUID(建议使用UUID避免设备名变化)
-
第二列:挂载点目录
-
第三列:文件系统类型
-
第四列 :挂载选项,
defaults表示默认选项 -
第五列 :dump备份标志,
0表示不备份 -
第六列 :fsck检查顺序,
0表示不检查
获取UUID:
blkid /dev/sdb1