背景

前段时间发现一个生产环境中的虚拟机磁盘空间不足,需要扩容。

这是生产环境,业务复杂不方便迁移,也只有一个硬盘分区。所以不能停机,也无法卸载分区。这里介绍一种不影响服务运行的扩容方法。

此方法仅限 xfs 格式!其他格式的分区此方式不一定可用。

VM 信息如下:

  • CentOS 7.9
  • xfs 格式,只有一个分区

步骤

调整硬盘容量

首先需要在 PVE 后台中把 VM 的磁盘进行扩容。双击或者点击上方的磁盘操作即可扩容。

我这里已经扩容完成了,就只加 1G 作为示例:从 20G 扩容至 21G。

进入 VM SSH

检查分区格式

先确认下分区的文件系统格式

1
df -T

可以看到是 xfs 格式,本文教程也仅限于此格式。

先使用确认磁盘空间已经调整成功

1
lsblk

可以看到在 PVE 调整后已经从原本的 20G 变成了 21G。但这部分容量还没分配到 sda1 的可用分区中。

现在使用 growpart 拓展分区

1
sudo growpart /dev/sda 1

意思是拓展 /dev/sda 的第一个分区,在我们这里也就是目标分区 /dev/sda1。这条命令将会扩展分区 /dev/sda1 到整个磁盘的大小(只要磁盘空间允许)。

使用 xfs_growfs 扩展 xfs 文件系统

1
sudo xfs_growfs /

如果你要扩展的文件系统挂载在根目录(/)上,只需指定挂载点 /。对于其他挂载点(例如 /data),可以指定对应的挂载点路径(如 xfs_growfs /data)。

结束

现在可以使用 df -h 查看新的空间信息,确认是否扩容成功。

可以看到 /dev/sda1 已经成功变成 21G 了。

这样,无需卸载分区或中断系统运行,就能完成 xfs 文件系统的在线扩展操作。