我有一台 VirtualBox VM(主机和客户机都使用 Windows Server 2012)。我在配置一些困难的东西时创建了几个快照:
Before installing OS
\____ Before installing software A
\____ Before installing software B
\____ Before installing software C
\____ Testing this
\____ Testing that
\____ Current state
现在一切正常,我需要磁盘空间,所以我想丢弃所有快照。我的研究表明,除了逐个删除快照之外没有其他方法,而且速度非常慢。我无法克隆或导出虚拟机,因为它已经使用了 75% 的主机磁盘空间。
我应该从上到下删除还是反之?什么会导致合并速度更快?或者这真的不重要?
答案1
答案2
根据经验,我建议只有一种正确的删除快照的方法:从最新快照开始向后移动,一次删除一个。
始终按顺序删除 - 切勿删除“中间”快照。或者更糟的是,最旧/顶层快照。您可能认为 VB 会介入并阻止您犯下这个巨大的错误,但它却很乐意允许这样做。它应该只是在删除之后弹出一条横幅,上面写着“哈哈,你会后悔的!”。
如果您从未弄乱过删除除最新快照和按顺序向后移动之外的任何东西,那么您应该能够删除包括最旧/顶层在内的所有内容。
如果您弄乱了它并删除了中间快照,那么您可能会陷入困境,无法摆脱一切。通常,当您尝试删除时会出现错误,并且您留下了剩余的快照,并且无法删除它们。您需要在任何开始点(安装或导入)重新加载 VM。
请务必注意,每个删除过程可能需要相当长的时间,每个快照可能需要近 10 分钟或更长时间,具体取决于系统大小。
答案3
使用 VirtualBox 7.0 版本,我没有遇到任何中间删除快照的问题。
我中间需要删除大约 15 个快照,我使用以下脚本来执行此操作。
@echo off
:: Rename the following two lines to the correct VM name and executable path.
set VM_NAME="Win10ProWrk64TorrentTest"
set VBoxManageCMD="C:\Program Files\Oracle\VirtualBox\VBoxManage.exe"
for /F "tokens=* delims=" %%a in (SnapshotsList.txt) DO (
Echo Deletting snapshot %%a from VM %VM_NAME%
%VBoxManageCMD% snapshot %VM_NAME% delete %%a
Echo *********************************************
)
我将此脚本与一个名为的文件一起使用SnapshotsList.txt
,该文件存储了我想要删除的快照的名称。
例子:
"qBitTorrent Installed"
"Increased Resolution"
"Updated VM software"
"After downloading MiniTool Tourent and before MiniTool install"
"Post Minitool Install and other torrent downloads"
"EaseUS Data Recovery Wizard Installed"
"EaseUS Partition Master installed"
"Removed bad DiskGenius installs"
"Removed Failed AOMEI_PartAssist"
"MiniTool Partition Wizard Installed"
"Wondershare Reparit installed"
"qTorrent option changes"
"Before removing Recoverit"
SnapshotsList.txt
使用以下命令可以轻松创建该文件:
"C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" snapshot "MyVmNameHere" list --machinereadable >SnapshotsList.txt
编辑文件以仅包含要删除的 SnapshotName。
如果您尝试此操作,请记住对快照名称和虚拟机名称使用双引号。