总结,回顾一下扩大 Proxmox VE 上的 Debian 虚拟机磁盘空间所经历的全部无损操作,以及解决后续问题(交换空间和启动延迟)的完整流程。
💾 Debian VM 磁盘扩容及优化步骤总结
您的 VM 使用的是传统分区而非 LVM,且空闲空间位于根分区之后,因此操作流程较为复杂,需要删除并重建分区表。
阶段一:磁盘硬件和分区表的调整(根分区扩容)
| 序号 | 目标 | 执行命令 / 动作 | 环境 | 结果 |
|---|---|---|---|---|
| 1 | 扩大虚拟磁盘 | 在 PVE 界面中,关机 VM,将 /dev/sda 磁盘从约 5.3G 扩大到 10G。 | PVE | 磁盘硬件变大。 |
| 2 | 删除旧分区 | 使用 parted 删除 /dev/sda5 (Swap) 和 /dev/sda2 (Extended)。 | 运行中的 Debian | 警告: 内核无法更新分区表。执行重启。 |
| 3 | 扩大分区表 | 重启后,重新进入 parted,使用 resizepart 1 100% 将 /dev/sda1 的边界扩展到 10.7G。 | 运行中的 Debian | /dev/sda1 分区表大小扩大。 |
| 4 | 扩大文件系统 | 使用 sudo resize2fs /dev/sda1 在线扩大文件系统。 | 运行中的 Debian | 成功: /dev/sda1 的可用空间达到 9.8G。 |
阶段二:恢复交换空间
| 序号 | 目标 | 执行命令 / 动作 | 环境 | 结果 |
|---|---|---|---|---|
| 5 | 创建交换文件 | 使用 fallocate -l 1G /swapfile 创建 1GB 交换文件。 | 运行中的 Debian | 创建 /swapfile。 |
| 6 | 格式化与启用 | 使用 chmod 600 /swapfile、mkswap /swapfile 和 swapon /swapfile 启用交换空间。 | 运行中的 Debian | 成功: 1GB 交换空间恢复。 |
| 7 | 持久化配置 | 编辑 /etc/fstab,添加 /swapfile none swap sw 0 0,并删除或注释掉旧的 /dev/sda5 交换分区条目。 | 运行中的 Debian | 交换空间配置持久化。 |
阶段三:解决启动延迟(Waiting for resume device)
| 序号 | 目标 | 执行命令 / 动作 | 环境 | 结果 |
|---|---|---|---|---|
| 8 | 诊断延迟原因 | 检查 /etc/default/grub 和 update-initramfs -u 的警告。 | 运行中的 Debian | 发现 initramfs 仍然硬编码了旧的 /dev/sda5 的 UUID 作为 RESUME 设备。 |
| 9 | 清除 RESUME 配置 | 查找并编辑 /etc/initramfs-tools/conf.d/resume 或相关文件,将 RESUME=UUID=... 改为 RESUME= (空值)。 | 运行中的 Debian | 清除休眠功能对旧 UUID 的依赖。 |
| 10 | 重建内核环境 | 执行 sudo update-initramfs -u(这次应无警告)。 | 运行中的 Debian | 内核启动环境更新,不再寻找不存在的旧交换分区。 |
| 11 | 最终验证 | 执行 sudo reboot。 | VM | 预期: 启动时间恢复正常,且磁盘空间和交换空间均已配置好。 |
现在只需要完成最后一步:执行步骤 9 和 10 来解决启动延迟问题,然后进行最终重启。