Linux 虚拟机磁盘空间不足时,只在虚拟化平台调大磁盘容量还不够:客户机里的分区和文件系统可能仍保持原大小。完整的Linux虚拟机磁盘扩容与文件系统调整,通常要依次处理虚拟磁盘、分区或 LVM、文件系统。操作前先确认磁盘布局并备份重要数据,避免把扩错设备的风险留到最后。
先确认扩容对象和磁盘布局
在虚拟化平台或宿主机管理界面扩大虚拟磁盘后,登录客户机执行以下命令。设备名称因平台和配置而异,常见形式包括 /dev/sda、/dev/vda 和 /dev/nvme0n1;不要直接照抄示例中的设备名。
- 查看块设备、分区、文件系统和挂载点:lsblk -f。
- 查看分区表和容量:sudo fdisk -l。确认目标磁盘是否已经显示新容量。
- 查看文件系统使用量:df -hT。记下空间不足的挂载点,例如根目录 /。
- 如容量尚未更新,可先刷新设备信息,或在虚拟化平台重启虚拟机;SCSI 设备也可按系统实际路径执行 rescan。具体方法取决于设备类型和发行版。
例如,磁盘显示为 /dev/vda,根分区是 /dev/vda1,文件系统为 ext4,且没有使用 LVM,适合按“扩大分区、扩展文件系统”的路径处理。如果设备下还显示 LVM 物理卷和逻辑卷,则应走 LVM 路径。
普通分区:扩展分区后再扩展文件系统
先确认目标分区位于磁盘末尾,且后方有连续未分配空间。若分区布局不符、存在复杂分区,或无法确认设备对应关系,应先停下核对,不能盲目重建分区。
- 安装系统已有的 growpart 工具;不同发行版的包名可能不同。该命令通常来自 cloud-guest-utils 或 cloud-utils-growpart。
- 假设磁盘为 /dev/vda、目标分区为第 1 分区,执行:sudo growpart /dev/vda 1。注意命令中磁盘与分区号分开填写。
- 执行 lsblk 检查分区是否变大。若系统尚未重新读取分区表,可运行 sudo partprobe /dev/vda;仍未更新时,安排重启后再检查。
- 按文件系统类型扩展:ext4 可执行 sudo resize2fs /dev/vda1;XFS 则对已挂载的目录执行,例如根目录为 / 时使用 sudo xfs_growfs /。
- 运行 df -hT,确认对应挂载点容量已变化。
ext4 的 resize2fs 目标通常是块设备分区;XFS 的 xfs_growfs 目标是挂载点,两者参数不能互换。XFS 通常需要在挂载状态下扩展,实际支持情况还应结合发行版工具版本确认。
使用 LVM:先扩物理卷,再扩逻辑卷
如果 lsblk 显示 LVM 结构,常见步骤是扩大底层分区(若使用了分区)、调整物理卷,再扩展逻辑卷和文件系统。下面以物理卷 /dev/vda2、逻辑卷路径 /dev/mapper/vg0-root 为例;实际名称应从 pvs、vgs、lvs 查询。
- 若物理卷所在分区需要变大,先按前文方法扩展对应分区。
- 让 LVM 识别新增空间:sudo pvresize /dev/vda2。
- 检查卷组可用空间:sudo vgs。
- 将卷组剩余空间分配给逻辑卷并尝试同步扩展文件系统:sudo lvextend -r -l +100%FREE /dev/mapper/vg0-root。
- 用 lvs 和 df -hT 分别核对逻辑卷与文件系统容量。
-r 会尝试调用合适的文件系统工具;若命令报错,先检查错误信息及文件系统类型,不要反复执行或改用其他设备路径。将全部空闲空间分给一个逻辑卷后,卷组就没有这部分余量可供其他卷使用。需要保留弹性时,可将命令中的空间比例改为明确的容量或较小比例。
容易出错的地方与验证
- 平台已扩、系统未识别:先核对平台显示的磁盘容量,再检查客户机设备扫描和分区表;扩展文件系统无法代替扩展虚拟磁盘。
- 分区工具提示空间不足:检查未分配空间是否紧邻目标分区。位于其他分区之前或之后的空闲空间,不能总是直接并入。
- 设备名混淆:NVMe 分区常见名称如 /dev/nvme0n1p1,分区号写法不同于 /dev/vda1,操作前以 lsblk 输出为准。
- 先做可恢复准备:重要业务数据应有可用备份;虚拟机快照可辅助回退,但不能替代独立备份。涉及分区表变更时,安排维护窗口更稳妥。
归纳起来,Linux虚拟机磁盘扩容与文件系统调整的关键是先辨认普通分区还是 LVM,再按 ext4 或 XFS 选择文件系统命令,并在每一步后核对设备和容量。
常见问题
扩容虚拟磁盘后必须重启吗?
不一定。客户机成功识别新容量时通常可在线继续;若设备扫描后仍未更新,可能需要重启,具体取决于虚拟化平台和磁盘类型。
ext4 和 XFS 能用同一条扩容命令吗?
不能。ext4 通常使用 resize2fs,XFS 使用 xfs_growfs,并以挂载点为目标。
扩容能缩小回原来的容量吗?
不能按扩容流程直接缩小。缩小文件系统和分区风险较高,且 XFS 通常不支持缩小;应先确认备份并制定迁移或重建方案。
为什么 df 显示的容量没有变化?
可能只扩大了虚拟磁盘,尚未扩展分区、LVM 或文件系统;也可能扩展了错误设备。对照 lsblk、lvs 与 df -hT 逐层检查。