CentOS7原有磁盘扩容实战记录(LVM非LVM)【针对GPT分区】
一、环境
二、命令及含义
- fdisk
fdisk
是一个较老的分区表创建和管理工具,主要支持MBR
(Master Boot Record)格式的分区表。MBR
分区表支持的硬盘单个分区最大容量为2TB,最多可以有4个主分区。fdisk通过命令行界面进行操作,主要命令包括查看分区表(p)、创建新分区(n)、删除分区(d)、改变分区类型(t)等。fdisk适用于处理较小的硬盘和MBR分区表,但对于大于2TB
的硬盘或需要GPT分区表的场景则不适用
- parted
parted
是一个功能强大的磁盘分区工具,支持MBR
和GPT
两种分区表。与fdisk不同,parted可以直接对GPT格式的磁盘进行操作,适用于大容量硬盘(如大于2TB)的分区需求。parted也通过命令行界面进行操作,提供了更多高级功能,如调整分区大小、格式化分区等。其基本命令包括查看分区(p)、删除分区(rm)、创建新分区(mkpart)等。parted
在处理GPT
分区表时更为灵活和强大 - gdisk
gdisk
是一个功能强大的GPT
分区表管理工具,专门用于GPT
分区表。gdisk
支持大容量硬盘和复杂的分区需求,可以通过命令行进行操作。其基本命令包括查看GPT
分区表、创建新分区、删除分区等。gdisk
与parted
类似,但专注于GPT
分区表的操作
总结
fdisk
适用于处理较小的硬盘和MBR分区表,操作简单但功能有限。
parted
支持MBR和GPT分区表,功能强大,适用于大容量硬盘和复杂需求。
gdisk
专注于GPT分区表,功能与parted类似,但更专注于GPT的支持。
三、步骤
1.准备测试环境(非lvm)
lsblk
fdisk -l
parted -s /dev/sdc mklabel gpt mkpart xfs 0% 100% //静默扩容gpt模式
mkfs.xfs /dev/sdc1 //格式化xfs
mkdir /test //创建测试目录
mount /dev/sdc1 /test/ //挂载目录
df -h
# 创建测试数据
touch /test/{1,2,3,4,5,6}
echo "data" > /test/1
lsblk
# 给sdb原有基础上加100G
umount /test
partprobe /dev/sdc //取消挂载刷新或者reboot
lsblk
2.扩容(非lvm)
lsblk
fdisk -l
umount /dev/sdc1 //扩容前一定要取消挂载
parted /dev/sdc
print
resizepart 1 100% //因为centos7自带的是3.1版本则不支持此命令,改用gdisk
yum install -y gdisk
gdisk -l /dev/sdc //查看起始位置
gdisk /dev/sdc
d
n
1 //原始分区号
回车
回车
回车
w
y
partprobe /dev/sdc //如果没生效需要reboot
说明:这里因为内核没有识别 重启过所以sdc识别变成sdb了
mount /dev/sdb1 /test
xfs_growfs /test
# 验证数据
df -h
ls /test/
cat /test/1
3.准备测试环境(lvm)
lsblk
fdisk -l
parted -s /dev/sdb mklabel gpt mkpart xfs 0% 100%
pvcreate /dev/sdb1
vgcreate vg1 /dev/sdb1
vgs && pvslvcreate -l 100%FREE -n lv1 vg1
lvs && vgs
ls -l /dev/vg1/lv1
mkfs.xfs /dev/vg1/lv1
mount /dev/vg1/lv1 /test/
命令详解:
✅parted -s /dev/sdb mklabel gpt mkpart xfs 0% 100%
作用:在 /dev/sdb 上创建一个 GPT 分区表,并划出一个 100% 大小的分区。
-s:silent 模式,非交互式
mklabel gpt:创建 GPT 分区表(支持 2TB 以上磁盘)
mkpart xfs 0% 100%:新建一个分区,类型为 xfs(只是标注,实际格式化在后面),从磁盘起始到末尾
结果:你会得到一个新分区 /dev/sdb1,占满整个 /dev/sdb
✅pvcreate /dev/sdb1
作用:把 /dev/sdb1 初始化为一个 LVM 物理卷(PV)
这一步是让 LVM 能够接管这块分区作为底层存储
执行后可以用 pvs 查看这个 PV 状态
✅vgcreate vg1 /dev/sdb1
作用:创建一个新的 LVM卷组(VG),名字叫 vg1,并将 /dev/sdb1 加入其中
卷组是多个 PV 的逻辑聚合体,可以像资源池一样分配空间
✅vgs && pvs
作用:分别查看卷组(VG)和物理卷(PV)的状态
vgs:显示卷组名、可用容量等信息
pvs:显示物理卷的位置、属于哪个 VG、大小等
✅lvcreate -l 100%FREE -n lv1 vg1
作用:在卷组 vg1 中创建一个新的 逻辑卷(LV),名称为 lv1
-l 100%FREE:使用卷组中所有剩余的空间
-n lv1:设置逻辑卷名为 lv1
创建完成后,会生成 /dev/vg1/lv1
✅lvs && vgs
作用:查看逻辑卷(LV)和卷组(VG)的状态
lvs:列出逻辑卷的大小、路径、所属卷组等
vgs:确认剩余空间、逻辑卷数量等
✅ls -l /dev/vg1/lv1
作用:确认逻辑卷设备文件已生成(本质上是一个块设备)
你会看到:/dev/vg1/lv1 -> /dev/mapper/vg1-lv1(LVM 使用 dm 设备映射)
✅mkfs.xfs /dev/vg1/lv1
作用:将逻辑卷格式化为 XFS 文件系统
注意:你之前在 parted 中声明了 xfs,那只是“标签”,真正格式化要靠这一步
如果你想用 ext4 或其他,也可以改为 mkfs.ext4
✅mount /dev/vg1/lv1 /test/
作用:将逻辑卷挂载到 /test 目录
前提:目录 /test 必须存在
完成后你就可以在 /test 下读写新磁盘空间了
df -h
touch /test/{1,2,3,4,5,6}
echo "data" > /test/1
# 给sdb原有基础上加100G
umount /test
partprobe /dev/sdb //取消挂载刷新,如果没变那就需要重启reboot使内核识别
lsblk
4.扩容(lvm)
# 记得卸载挂载 umount /test
gdisk -l /dev/sdb //查看起始位置
gdisk /dev/sdb
d
n
1 //原始分区号
回车
回车
回车
w
y //如果输入了两次y 那么就需要重新在执行一遍gdisk分区
说明:
警告!次级标头在磁盘上放置得太早!你想吗
纠正这个问题?(Y/N):Y
已将第二个标题和分区表移动到正确位置。
因出现警告所以需要在执行一遍gdisk
gdisk /dev/sdb
d
n
1 //原始分区号
回车
回车
回车
w
y
partprobe /dev/sdb
说明:出现这个意思就是需要
reboot
才可以让内核识别变动。
reboot
lsblk
pvresize /dev/sdb1 //扩容物理卷 PV
lvextend -r -l +100%FREE /dev/vg1/lv1 // -r就是扩容文件系统
# 数据验证
mount /dev/vg1/lv1 /test
ls /test/
cat /test/1
df -h
lsblk
四、结束语
本次GPT
原有磁盘扩容实战记录LVM
、非LVM
就到此结束了,后期会给大家带来更多的脚本,感谢认真读完,如果觉得还可以,那么给作者点赞、收藏、关注吧!