虚拟机镜像文件默认存放在安装目录的特定子文件夹中,Windows、Linux、macOS 三大平台路径各不同,直接复制、删除或移动整个文件夹会造成数据损坏,必须掌握每个平台的具体位置和清理逻辑。
虚拟机镜像默认存储位置在哪?三大平台路径盘点
镜像目录位置由你使用的虚拟机软件决定,VMware Workstation、VirtualBox、Hyper-V 以及 Linux 下的 KVM 各自有约定俗成的存放路径,搞清楚这些路径才能谈得上管理和清理。
Windows 平台:VMware 与 VirtualBox 的默认目录
VMware Workstation 的默认镜像目录是 C:\Users\用户名\Documents\Virtual Machines,这里每个虚拟机独占一个独立文件夹,镜像文件后缀多为 .vmdk,如果你安装时修改过“虚拟机位置”选项,路径会相应变更,直接在软件首选项里也能查到当前工作目录。
VirtualBox 的默认路径则是 C:\Users\用户名\VirtualBox VMs,每个虚拟机同样独立成文件夹,镜像文件后缀为 .vdi,需要注意的是,VirtualBox 还默认把虚拟硬盘固定在“机器文件夹”下,若你曾经把 ISO 安装镜像也扔进了这个目录,它同样会计入系统盘占用。
Linux 平台:libvirt 默认目录与自定义习惯
多数发行版通过 libvirt 管理 KVM/QEMU 虚拟机,默认镜像存储位置为:
/var/lib/libvirt/images/(系统级,存放.qcow2格式镜像)/home/用户名/VirtualBox VMs/(若在 Linux 上安装 VirtualBox)
系统级目录需要 root 权限才能读写,不少运维人员会单独挂载一块数据盘,把镜像目录改到 /data/kvm/images 这类自定义位置,避免系统盘被撑爆。
macOS 平台:VirtualBox 与 UTM 的存储习惯
macOS 上 VirtualBox 的默认路径为 ~/VirtualBox VMs,和 Windows 类似,使用 UTM(基于 QEMU)的用户,镜像通常存放在 ~/Library/Containers/com.utmapp.UTM/Data/Documents/ 中,这里被很多用户忽略,清理时可以优先检查这个隐藏目录。
镜像目录太占地?先分清虚拟磁盘、快照和日志再动手
直接删除 .vdi 或 .vmdk 文件是新手最常见的翻车操作,清理镜像目录的第一步是搞清楚哪些文件占空间,哪些文件不能碰。
| 文件类型 | 常见后缀 | 可否直接删除 | 说明 |
|---|---|---|---|
| 虚拟磁盘 | .vdi / .vmdk / .qcow2 | 不可 | 包含虚拟机全部数据,删除等于销毁系统 |
| 快照文件 | .vmsn / .vmem / .snap | 需在软件内删 | 记录虚拟机某一时刻状态,手动删除会导致还原链断裂 |
| 日志文件 | .log / .vbox-prev | 可以 | 记录启动日志,容量较小,可安全清理 |
| 暂存文件 | .tmp / .lock | 可以 | 崩溃后残留,通常无实际价值 |
行业共识认为快照文件是镜像目录膨胀的最大隐性来源,快照本质上是差异文件,原始镜像保持不变,所有新增数据写入快照,快照数量越多、存活时间越长,目录体积膨胀得就越快,多数情况下,快照体积甚至能超过原始镜像本身。
虚拟机镜像文件太大了怎么清理瘦身?三步操作立竿见影
清理虚镜像文件瘦身为虚拟机释放磁盘空间,思路是“内部清空→外部压缩→手动收尾”,顺序不能颠倒。
第一步:从虚拟机内部清空无效空间
先启动虚拟机,删除系统内不再需要的软件包缓存、临时文件和回收站内容,Windows 虚拟机建议执行磁盘清理(cleanmgr),Linux 虚拟机建议执行:
sudo apt clean sudo journalctl --vacuum-size=100M
这只是把文件标记为“未使用”,宿主机上的镜像文件体积暂时不会变化,真正的作用是把虚拟磁盘中的空闲区域置零,为后一步压缩做准备。
第二步:借助虚拟化工具收缩镜像体积
VirtualBox 用户执行以下流程:
- 关闭虚拟机
- 打开命令行工具,进入 VirtualBox 安装目录
- 执行
VBoxManage modifymedium disk "C:\Users\用户名\VirtualBox VMs\虚拟机名\系统盘.vdi" --compact
VMware 用户的步骤略有不同:
- 关闭虚拟机
- 打开 VMware Workstation 主界面,选择“编辑” → “首选项”
- 在“虚拟机”下拉菜单选择“清理磁盘空间”,选择目标镜像文件进行收缩
这一步能回收因内部文件删除而留下的空白块,通常能释放 10% 到 20% 的空间,清理后的镜像目录空间会明显减少。
第三步:手动清理残留的临时文件
虚拟机关机后,检查镜像目录下是否存在以 .log、.lck、.vmem 结尾的临时文件,这些文件仅在虚拟机运行时产生,正常关机后应该消失,如果存在残留,确认虚拟机已完全退出后手动删除。
虚拟机镜像目录整体迁移:给 C 盘腾出空间
涉及如何把整个虚拟机镜像目录搬移到其他磁盘,解决系统盘资源不足的问题。
迁移前的备份与路径记录
首先记录当前虚拟机的名称、模板、网络配置和共享文件夹映射关系。其次在虚拟机软件中移除(不是删除)该虚拟机,确保没有占用文件。最后把整个虚拟机文件夹从原磁盘移动到目标位置,比如从 C: 盘转移到 D:\Virtual Machines\。
迁移后重新添加虚拟机路径
打开 VM 软件,选择“打开虚拟机”,定位到新目录中的 .vmx 或 .vbox 文件,确认启动后能正常进入系统,若提示“找不到虚拟磁盘”,说明镜像文件相对路径发生漂移,手动重新定位 .vmdk 或 .vdi 文件即可。
镜像存储与备份策略:从源头控制目录膨胀
基于平时项目中管理大量虚拟机的经验,镜像目录膨胀的根因多半是备份策略缺失,等到空间告急再来清理,往往为时已晚。
定期清理快照但保留完整备份
快照不是备份档位,它只是虚拟机的“后悔药”,药效一过就该扔掉,业内专家指出,快照的合适存活期不超过 72 小时,业务系统在完成大版本更新或补丁安装后,应尽快删除旧快照并将当前状态另存为完整备份。
对于镜像目录的备份,采用 3-2-1 原则比较稳妥:3 份副本、2 种介质、1 份异地,本地镜像保留当前版本和上一个稳定版本,第三份副本放移动硬盘或 NAS,不占用宿主机工作目录。
给镜像建个“生命周期”清单
长期保留的虚拟机、已停机的旧版本虚拟机、废弃的测试机都堆在同一目录,会严重影响后续查找效率,建议按月归档一次:
- 当前活跃使用的虚拟机 → 留在默认目录
- 停产但需保留的虚拟机 → 转移到独立归档盘,并标注最后使用日期
- 同一虚拟机存在多个快照 → 只保留最近一份,其余全部删除
Q&A:虚拟机镜像目录常见疑问解答
Q1:虚拟机镜像文件能直接删除吗?
不能,直接删除虚拟机文件夹里的 .vdi 或 .vmdk 文件,会破坏虚拟机的配置数据,虚拟机软件无法识别剩余文件,且磁盘文件处于非释放状态时需要手动处理,正确做法是在虚拟机软件中移除虚拟机(可勾选“删除磁盘文件”来彻底释放空间),再核对镜像目录是否已清空。
Q2:虚拟磁盘扩容和镜像清理哪个先做?
建议部分用户先进清理,后做扩容,扩容操作会把 qcow2 或 vdi 文件的物理体积人为撑大,清理工作反而更难回收空间,先清理瘦身能显著降低扩容后的镜像目录容量。
Q3:删除快照就能完全释放镜像目录空间吗?
不一定,删除快照时,虚拟机会将快照中的差异数据合并到原始磁盘中,这个合并过程自身需要额外的临时存储空间,如果宿主机的余量不足,合并会失败,此时需要先迁移虚拟机到存储更充足的宿主机,再执行快照删除操作。