先确认挂载点和数据归属,再选择安全删除或彻底擦除,最后同步回收宿主机存储空间,避免“删了文件但磁盘没释放”的假象。
在虚拟化运维中,清理虚拟机内部目录是日常高频操作,但这项工作远非执行一条 rm -rf 那么简单,目录类型不同、挂载方式不同、文件系统状态不同,对应的清除策略天差地别,如果一上来就暴力删除,轻则磁盘空间无法释放,重则误删虚拟磁盘文件导致整台虚拟机无法启动,本文结合常见虚拟化平台的实际操作路径,梳理一套从识别、清除到验证的完整流程。
清理虚拟机目录之前必须先确认的三件事
任何清理动作开始前,先花两分钟回答下面三个问题,能避免绝大多数灾难性误操作,行业专家指出,相当一部分虚拟机数据丢失事故并非恶意破坏,而是源自清理时的盲目操作。
- 目录是否由外部存储挂载? 通过 df -h 或 mount 命令查看目标目录的挂载来源,如果目录挂载自宿主机共享存储、NFS 或云盘,直接在虚拟机内部删除很可能只是删掉了一个挂载点映射,底层数据元数据残留,甚至可能影响其他关联虚拟机。
- 是否位于虚拟磁盘的活动分区内? 如果目录直接写在虚拟机的系统盘或数据盘上(/var、/home、/opt),删除后通过快照或备份恢复的粒度会受限制。
- 是否有进程占用目录内文件? 使用 lsof +D /目标目录 或 fuser -mv /目标目录 检查,文件被进程占用时,删除操作会成功,但磁盘空间要到进程退出后才释放,极易造成“已删除但空间没变化”的困惑。
不同场景下虚拟机清除目录的具体操作路径
清理 Linux 虚拟机的临时文件与日志目录
这是最常见的需求,目标目录通常是 /tmp、/var/log、/var/cache,Linux 虚拟机跑久了,日志和缓存累积速度远超想象。
操作步骤如下:
- 先分析目录占用情况:
du -sh /var/log/ | sort -rh | head -20,按体积倒序排列,精准锁定大文件。 - 清理已轮转的旧日志:
find /var/log -type f -name ".gz" -mtime +30 -delete,保留近 30 天的压缩日志是多数生产环境的安全阈值。 - 清理软件包管理器缓存,Ubuntu/Debian 系统执行
apt clean,CentOS/RHEL 系统执行yum clean all,这一步通常能释放数百 MB 到数 GB 空间。 - 清理 systemd 日志:
journalctl --vacuum-time=7d,只保留最近 7 天的运行日志。

做完以上步骤后,使用 df -h 确认分区使用率下降,如果使用率变化不明显,优先考虑文件是否被进程持有。
删除 Windows 虚拟机的用户临时目录
Windows 虚拟机里,用户临时目录集中在 C:Users用户名AppDataLocalTemp 和 C:WindowsTemp,但这俩目录里常有文件被系统进程锁定,直接删除会跳出“操作无法完成”的报错。
推荐走系统自带工具:
- 打开“设置 > 系统 > 存储”。
- 点击“临时文件”,系统会自动扫描可清理项。
- 勾选“临时文件”“缩略图”“回收站”等分类,点击“删除”。
这套路径比手动进目录删文件安全得多,系统自行判断哪些文件可安全删除,对于清理后需要压榨更多空间的场景,可以额外关闭休眠文件(powercfg /h off),通常能释放出与物理内存等量的 C 盘空间。
VMware ESXi 中虚拟机如何清理目录及释放磁盘
VMware 环境下的目录清理有点特殊,涉及两个层面:虚拟机内部和宿主机数据存储。
虚拟机内部清理:操作与普通系统一致,关键在于清理后必须回收虚拟磁盘中未使用的空间,否则 vmdk 文件体积不会缩小。
宿主机数据存储回收:在虚拟机内部清理后,vmdk 依然是占用完整空间的,需要执行以下步骤:
- 登录 ESXi 的 Web Client。
- 找到目标虚拟机,确认其已关机或处于维护窗口期。
- 右键虚拟机,选择“快照”中的“整合”功能,合并长期累积的快照增量。
- 若虚拟机内未配置自动精简置备,需在虚拟机设置中将 SCSI 控制器类型改为“VMware Paravirtual”,或直接使用 vmkfstools -K 命令手动回收空白块。
多数情况下,整合快照这一步能一次性收回几十 GB 到上百 GB 的数据存储空间,值得注意的是,频繁快照是 vmdk 文件膨胀的第一诱因,日常维护应减少不必要的快照保存时长。
Proxmox VE 中清理虚拟机目录的便捷路径
PVE 管理界面提供了“磁盘”面板,可以直接查看每一台虚拟机的磁盘映射和分配情况,而无需进入虚拟机内部。
- 清理 VM 内部的垃圾文件:通过 noVNC 控制台进入系统后,按前文 Linux/Windows 的逻辑操作。
- 回收精简置备磁盘空间:在 PVE 的 Shell 中执行
qm disk resize <VMID> <disk> +0,或者直接执行qm set <VMID> --delete <disk>删除不再需要的数据盘(注意操作不可逆,需确认盘中数据已备份)。

针对 qcow2 格式的虚拟磁盘,清理后收缩镜像体积的命令是 qemu-img convert -O qcow2 原镜像.qcow2 新镜像.qcow2,这条命令在 PVE 中配合主干链路使用,效果明显。
虚拟机删除目录后磁盘空间未释放的排查思路
删除目录后空间没变化,这是虚拟化运维中被问及最多的问题之一,其实原因往往就集中在以下几种情况。
- 删除动作本身没生效:因权限不足或目录被锁定,rm 命令返回错误但未删除,shell 未提示,解决办法是先
ls -ld 目录检查属主,再namei -l 目录查看权限链。 - 文件被进程占用:即使删除,inode 引用仍存在,用
lsof | grep deleted一次性列出所有已删除但被占用的文件,确认对应的服务进程后,重启该服务即可。 - 快照文件占用空间:删除文件后空间被快照层引用,依然占用虚拟磁盘体积,需按前文 VMware 或 PVE 的方式处理快照合并。
- 写入时未实时分配空间:Windows 虚拟机的 NTFS 格式若未开启 TRIM 支持,删除文件后空间标记未及时回传 hypervisor,在 Windows 中执行
optimize-vd“ef -DriveLetter C:”或计划整理优化驱动器即可。
清除目录后优化宿主机存储空间的操作技巧
| 虚拟化平台 | 磁盘格式 | 清理后的回收操作 | 预期效果 |
|---|---|---|---|
| VMware ESXi | vmdk | 快照整合 + vmkfstools -K | 回收精简置备空间 |
| Proxmox VE | qcow2 | qemu-img convert 重建镜像 | 镜像体积显著缩小 |
| 通用 Linux KVM | raw | 需要 fallocate 配合重建 | 占用空间回落 |
| 通用 Windows | vhdx | Hyper-V 管理器中“优化磁盘” | vhdx 体积收缩到实际数据大小 |
不论哪个平台,操作逻辑总结为三步:虚拟磁盘内部清零、hypervisor 层做空间回收、确认数据存储的容量变化。
哪些目录只可清理不可删除
清理时务必保留某些系统运行必需品,误删可能损坏系统稳定性。
- /boot 目录中的内核文件,仅删除不用的旧内核即可,应保留至少两个现行版本。
- Windows 的 C:WindowsSystem32 中任意子目录,不要手动枚举和删内容,系统文件占用往往在运行状态中动态变化。
- PVE 或 ESXi 的管理日志目录 /var/log,这是排障的“唯一黑匣子”,建议定期压缩归档而非直接清空。
虚拟机目录误删后的紧急恢复思路
经常出现没备份却误删了目录的情形,此时操作优先级如下:
- 立即停止对被删目录所在分区的一切写操作,挂载为只读状态。
- 若虚拟磁盘基于 LVM,可检查 LVM 快照是否有历史时间点。
- 对于 ext4/xfs 文件系统,试试 extundelete 或 xfs_undelete 工具,在卸载状态下执行扫描。
- 若以上手段都无结果,从云平台或宿主机侧的快照恢复整机,Vmware 的 CBT(Changed Block Tracking)和 PVE 的 vzdump 备份都是日常应启用的兜底方案。
虚拟机清除目录常见问题解答
清理 Linux 虚拟机 /var/log 目录后系统日志服务报错怎么办?
journald 或 rsyslog 在日志文件丢失时会自动重建,但需要重启服务或重启虚拟机,报错多出现在手工删除了正在写入的 .log 文件但未同步重启 rsyslog 的场景,执行 systemctl restart rsyslog 或 systemctl restart systemd-journald 即可恢复。
删除 KVM 虚拟机时保留数据盘后,新虚拟机如何挂载这块盘?
新建虚拟机时选择“使用现有磁盘”,指定原数据盘文件路径,开机后新系统内执行 blkid 查看分区的 UUID,然后修改 /etc/fstab 写入挂载信息,重启验证挂载稳定即可。
Proxmox VE 清理 qcow2 磁盘空间时提示“镜像文件被锁定”如何处理?
确认虚拟机已完全关机且无迁移或备份任务占用,必要时检查 /var/lock/qemu-server/ 下的锁文件,清理过期锁后重新执行 qemu-img convert(据行业实践,锁文件残留是 PVE 节点非正常重启后的常见残留物)。
图片来源于AI模型,如侵权请联系管理员。作者:酷小编,如若转载,请注明出处:https://www.kufanyun.com/ask/909770.html


评论列表(1条)
读了这篇文章,我深有感触。作者对清理的理解非常深刻,论述也很有逻辑性。内容既有理论深度,又有实践指导意义,确实是一篇值得细细品味的好文章。希望作者能继续创作更多优秀的作品!