准备工作:安全与规划
在进行任何磁盘操作之前,充分的准备工作是必不可少的,这可以有效避免数据丢失等灾难性事故。

- 
数据备份:这是最重要的一步,虽然 LVM 操作相对安全,但任何对磁盘的修改都存在潜在风险,请务必将重要数据、配置文件等进行完整备份。
 - 
检查当前磁盘状态:使用以下命令查看当前的磁盘分区和挂载情况,做到心中有数。
df -hT lsblk
df -hT会以易读的格式显示已挂载文件系统的空间使用情况及其类型(如 XFS, ext4)。lsblk则以树状结构清晰地展示磁盘、分区和逻辑卷之间的关系。 - 
确认新增磁盘空间:在虚拟化环境或物理服务器上新加了硬盘后,系统可能不会立即识别,您可以使用
echo 1 > /sys/class/scsi_device/.../device/rescan或重启服务器来使系统识别新硬件,通过fdisk -l命令可以查看到新加入的磁盘设备,/dev/sdb。 
扩展 LVM 分区(推荐方案)
假设我们已经有一块新磁盘 /dev/sdb,现在需要将其空间全部添加到根分区(通常为 /dev/mapper/centos-root)。
创建物理卷
需要将新磁盘初始化为 LVM 可以管理的物理卷(PV)。
pvcreate /dev/sdb
执行后,系统会提示成功创建物理卷,您可以使用 pvs 或 pvdisplay 命令查看新创建的物理卷信息。

扩展卷组
将新创建的物理卷添加到现有的卷组(VG)中,卷组的名称通常为 centos 或 cl,可以通过 vgs 命令查看。
# 假设卷组名为 centos vgextend centos /dev/sdb
执行此命令后,centos 卷组的总空间就增加了,同样,可以使用 vgs 或 vgdisplay 查看扩展后的卷组信息,您会看到 VSize(卷组总大小)和 VFree(可用空间)相应增加。
扩展逻辑卷
卷组有了空闲空间,我们可以将这些空间分配给需要扩容的逻辑卷(LV),例如根分区对应的逻辑卷。
# 假设逻辑卷路径为 /dev/centos/root # 使用 -l +100%FREE 参数将卷组所有空闲空间分配给该逻辑卷 lvextend -l +100%FREE /dev/centos/root
您也可以指定具体的大小,例如增加 50GB:
lvextend -L +50G /dev/centos/root
使用 lvs 或 lvdisplay 可以确认逻辑卷的大小已经更新。
调整文件系统大小
这是最后一步,也是至关重要的一步,虽然逻辑卷的大小已经改变,但上层的文件系统并不知道这一变化,需要手动通知它调整其边界,此操作根据文件系统的类型有所不同。
- 对于 XFS 文件系统(CentOS 7/8 默认):
xfs_growfs /dev/centos/root
 - 对于 ext4 文件系统:
resize2fs /dev/centos/root
 
执行完成后,再次使用 df -hT 查看,您会发现根分区的可用空间已经成功增加,整个过程无需重启服务器。

为了方便查阅,下表小编总结了核心命令:
| 操作阶段 | 命令示例 | 作用说明 | 
|---|---|---|
| 初始化物理卷 | pvcreate /dev/sdb | 
将新磁盘标记为 LVM 物理卷 | 
| 扩展卷组 | vgextend centos /dev/sdb | 
将物理卷加入指定卷组,增加总容量 | 
| 扩展逻辑卷 | lvextend -l +100%FREE /dev/centos/root | 
将卷组空闲空间分配给逻辑卷 | 
| 调整 XFS 文件系统 | xfs_growfs /dev/mapper/centos-root | 
在线扩展 XFS 文件系统至逻辑卷大小 | 
| 调整 ext4 文件系统 | resize2fs /dev/centos/root | 
在线扩展 ext4 文件系统至逻辑卷大小 | 
特殊情况:扩展现有磁盘上的分区
在某些虚拟化场景下,我们不是增加新磁盘,而是直接扩展了原有虚拟磁盘的大小(例如将 /dev/sda 从 100GB 扩展到 200GB),这种情况下,操作略有不同。
- 使用 
parted或fdisk删除原有分区并重新创建一个更大的分区(注意起始扇区必须与原分区完全一致)。 - 重新创建分区后,由于它已经是 LVM 类型的物理卷,无需再用 
pvcreate,只需使用pvresize命令刷新物理卷信息即可。pvresize /dev/sda2 # 假设扩展的是 /dev/sda2 分区
 - 后续步骤(
vgextend变为可选,如果卷组已经包含此PV)与上文中的“步骤三”和“步骤四”完全相同,直接扩展逻辑卷和文件系统即可。 
此方法风险较高,操作 fdisk/parted 时务必谨慎,确保起始扇区无误,否则数据将丢失。
相关问答FAQs
我可以缩小一个 LVM 分区吗?
解答:可以,但操作比扩展要复杂且风险更高,对于 XFS 文件系统,它不支持在线缩小的操作,通常需要备份数据,删除并重建逻辑卷,格式化后再恢复数据,对于 ext4 文件系统,虽然 resize2fs 支持缩小,但过程必须严格遵循“先缩小文件系统,再缩小逻辑卷”的顺序,任何缩小操作都强烈建议在备份数据后进行,并在维护窗口期执行。
执行完 lvextend 后,使用 df -h 查看空间没变怎么办?
解答:这是一个常见的疏忽。lvextend 命令只扩展了逻辑卷(LV)的“容器”大小,但没有自动扩展其内部的文件系统,您必须根据文件系统类型,执行对应的文件系统扩容命令(如 xfs_growfs 或 resize2fs),从 CentOS 7 开始,lvextend 命令提供了一个 -r 或 --resizefs 选项,可以在扩展逻辑卷的同时自动调整文件系统大小,lvextend -r -l +100%FREE /dev/centos/root,这会一步到位,更加便捷。