在CentOS系统中,随着业务数据的增长,原有的磁盘分区空间可能会变得紧张,此时对已有分区进行扩容便成为一项常见的运维任务,LVM(逻辑卷管理)是CentOS中默认且推荐的磁盘管理方案,它提供了极高的灵活性,使得在线扩容成为可能,本文将详细介绍如何为基于LVM的分区进行扩容。

在开始任何磁盘操作之前,最重要的一步是备份重要数据,尽管LVM操作相对安全,但任何对磁盘的写入都存在潜在风险,数据备份是规避风险的最后一道防线。
准备工作:识别当前磁盘状态
我们需要了解当前的磁盘布局和LVM结构,可以使用以下命令进行查看:
lsblk或fdisk -l:查看系统中的所有磁盘设备及其分区情况,确认是否有未分配的磁盘空间。df -hT:查看已挂载文件系统的使用情况,确定需要扩容的目标分区, 根分区或/home。pvs,vgs,lvs:这三个命令分别用于查看物理卷(PV)、卷组(VG)和逻辑卷(LV)的详细信息,这是操作LVM的核心。
假设我们的场景是:新添加了一块磁盘 /dev/sdb,需要将其全部空间扩容到根分区 (对应的逻辑卷通常是 /dev/mapper/centos-root)。
扩容流程详解
整个扩容流程可以概括为:创建新分区 -> 初始化为物理卷 -> 扩展卷组 -> 扩展逻辑卷 -> 调整文件系统大小。
第一步:创建新分区
使用 fdisk 或 parted 工具在新磁盘上创建分区,这里以 fdisk 为例:
fdisk /dev/sdb
进入 fdisk 交互界面后,依次输入以下命令:
n:创建一个新分区。p:选择主分区。1:分区号为1。- 按两次回车:使用默认的起始和结束扇区,即使用整个磁盘空间。
t:更改分区类型。8e:将分区类型设置为Linux LVM。w:保存更改并退出。
完成后,使用 partprobe 命令使内核同步新的分区表。
第二步:初始化物理卷并扩展卷组
将刚刚创建的分区 /dev/sdb1 初始化为LVM物理卷(PV):

pvcreate /dev/sdb1
将这个新的物理卷添加到现有的卷组(VG)中,通过 vgs 命令可以查看卷组名称,通常是 centos。
vgextend centos /dev/sdb1
执行后,卷组的可用空间就增加了,可以通过 vgs 再次确认,会发现 VSize 和 VFree 字段值变大。
第三步:扩展逻辑卷
我们可以将卷组中的空闲空间分配给需要扩容的逻辑卷(LV),通过 lvs 或 df -h 确定根分区对应的LV路径,如 /dev/mapper/centos-root。
有两种方式扩展LV:
-
指定大小扩容:增加固定大小的空间,例如增加50GB。
lvextend -L +50G /dev/mapper/centos-root
-
使用全部剩余空间:将卷组中所有可用空间都分配给该LV。
lvextend -l +100%FREE /dev/mapper/centos-root
推荐使用第二种方式,因为它能最大化利用磁盘空间。
第四步:调整文件系统大小
逻辑卷的空间已经扩大,但上层的文件系统(如XFS或ext4)并不知道,最后一步就是通知文件系统更新其容量。

-
对于XFS文件系统(CentOS 7/8默认):
xfs_growfs /
注意:
xfs_growfs使用挂载点(如 )作为参数。 -
对于ext4文件系统:
resize2fs /dev/mapper/centos-root
注意:
resize2fs使用逻辑卷设备路径作为参数。
操作完成后,再次使用 df -h 查看,你会看到目标分区的容量已经成功增加,整个扩容过程无需重启服务器,实现了在线平滑扩容。
FAQs
Q1:如果我的根分区不是LVM,而是标准的ext4分区,还能扩容吗?
A1:可以,但过程要复杂得多,且通常需要离线操作(进入救援模式或使用Live CD),基本流程是:使用 parted 或 gparted 等工具删除原分区,在原位置创建一个更大的新分区(确保起始扇区与原分区一致),然后使用 resize2fs 调整文件系统大小,这个过程风险较高,强烈建议在操作前进行完整备份,并优先考虑迁移到LVM环境以便未来管理。
Q2:扩容后如何验证操作是否成功且数据无损?
A2:验证分为两个层面,使用 df -hT 命令检查目标分区的总容量(Size)、已用容量(Used)和可用容量(Avail)是否已按预期增长,访问该分区下的关键应用和数据目录,随机抽查几个文件,确保其可以正常打开和读写,从而确认数据完整性,对于数据库等应用,最好重启服务并进行一致性检查。