开始输入,可搜索发票、服务、域名、工单,以及 更多...
磁盘空间不够时,如果系统使用了 LVM(逻辑卷管理),就可以在不重装系统、通常也无需停机的情况下增加容量。本文介绍 Linux 使用 LVM 扩容磁盘的两种常见场景:新增一块硬盘加入卷组,以及原有磁盘被扩大后扩展分区;同时说明没有 LVM 时如何用 growpart 扩容根分区。命令适用于 Debian/Ubuntu 与 CentOS/Rocky/AlmaLinux,以 root 执行。
先安装 lvm2 和 growpart 所在的软件包,然后用 lsblk、pvs、vgs、lvs 了解当前布局:哪块磁盘是物理卷(PV),卷组(VG)叫什么名字,逻辑卷(LV)挂载在哪里。下文以卷组 vg0、逻辑卷 /dev/vg0/root 为例,请替换为实际名称。
# Debian / Ubuntu
apt update && apt install -y lvm2 cloud-guest-utils
# CentOS / Rocky / AlmaLinux
dnf install -y lvm2 cloud-utils-growpart
# Inspect the current layout
lsblk
pvs
vgs
lvs
df -hT
如果是额外添加了一块新硬盘(如 /dev/vdc),先将它初始化为物理卷,再加入现有卷组。执行后 vgs 中的 VFree 会增加,表示卷组有了可分配的空闲空间。注意不要对已有数据的磁盘执行 pvcreate。
# Scenario A: a new disk /dev/vdc was added
pvcreate /dev/vdc
vgextend vg0 /dev/vdc
vgs vg0
如果是原有磁盘容量被调大(例如从 40G 升级到 100G),需要先用 growpart 扩展分区到磁盘末尾,再用 pvresize 让物理卷识别新增空间。注意 growpart 的磁盘名和分区号之间有空格。
# Scenario B: the existing disk /dev/vda was enlarged and the PV is partition 2
growpart /dev/vda 2
pvresize /dev/vda2
vgs
卷组有空闲空间后,用 lvextend 把空间分配给目标逻辑卷。-l +100%FREE 表示使用全部剩余空间,-L +50G 表示增加固定大小。
# Give all free space in the VG to the logical volume
lvextend -l +100%FREE /dev/vg0/root
# Or add a fixed amount
lvextend -L +50G /dev/vg0/data
逻辑卷变大后,文件系统还需要同步扩展,df 中才会显示新容量。ext4 使用 resize2fs 指定逻辑卷路径,XFS 使用 xfs_growfs 指定挂载点。也可以给 lvextend 加 -r 参数,一步完成逻辑卷和文件系统的扩容。
# ext4
resize2fs /dev/vg0/root
# XFS (pass the mount point)
xfs_growfs /
# Alternative: extend LV and filesystem in one step
lvextend -r -l +100%FREE /dev/vg0/root
df -hT
很多云镜像的根分区是普通分区而非 LVM。磁盘升级后,只需 growpart 扩展分区,再扩展文件系统即可,全程在线完成,无需重启。
# Root partition without LVM, e.g. /dev/vda1 mounted on /
growpart /dev/vda 1
resize2fs /dev/vda1 # ext4
xfs_growfs / # XFS
df -hT /
说明分区后面没有可用空间,可能是磁盘容量尚未生效或分区已是最大。可先确认 lsblk 中磁盘大小是否已变大,必要时重启服务器后再试。
不可以,XFS 只支持扩大。如果需要缩小,只能备份数据后重新创建文件系统。ext4 支持缩小,但必须先卸载,操作风险较高,建议谨慎执行。
需要先关闭并删除该 swap 分区,扩容根分区后再改用 swap 文件,或在空闲空间重建 swap。此操作较复杂,如不熟悉可提交工单寻求协助。
如按以上步骤操作后仍无法解决,欢迎提交工单联系 IMIDC 7×24 技术支持。提交时请注明服务器 IP、操作系统、已执行的命令和报错截图,工程师可以更快定位问题。