有没有办法从VBox客户机内部恢复快照?
我有一台托管多台机器的Windows机器。目前我们正在使用Ubuntu guest虚拟机处理某些事情,要让切换机器只是为了还原快照真的很痛苦。
我想到的是将机器设置为“基本”状态,每次我想要进行操作时,我只需键入一些命令:
revertbase
机器将在之前的快照中重新启动,我只需要重新启动ssh即可继续。
答案 0 :(得分:1)
你无法对正在运行的机器进行快照,你必须先将其冻结,所以我的猜测是主机本身不能这样做。
在主机中,您可以使用VBoxManage从命令行执行此操作。
该文件位于
Program Files / Oracle / VirtualBox / VBoxManage.exe
用作VirtualBox的命令行界面。
使用命令:
VBoxManage snapshot "MachineName" take SnapShotName
之后他们:
VBoxManage snapshot "MachineName" discardcurrent -state
要返回上一个状态,要更多阅读下面的文字,轻松访问VBoxManage将其添加到您的路径中:
PATH=%PATH%;c:\Program Files\Oracle\VirtualBox
管理快照
虚拟化软件最有用的功能之一是能够拍摄虚拟机的快照。在对VM进行更改之前拍摄VM的快照始终是个好主意。快照有助于在硬件级别上恢复由于硬件配置更改而导致无法使用的系统,并且在软件级别上可以防止因意外删除或病毒导致的数据丢失。
从VirtualBox CLI拍摄快照是孩子的游戏。 VBoxManage快照“Fedora”采用snap1-stable-system在一切运行完美时拍摄稳定的Fedora VM的快照。保存快照可能需要一些时间,具体取决于VM和主机上的资源。为了确保在拍摄快照时不对系统进行更改,VirtualBox会使整个VM界面变灰,并且在保存快照之前不能使用它。
掌握稳定的快照,继续使用系统。如果遇到麻烦并且机器无法启动或启动异常,则可以恢复到稳定机器的快照。为此,首先使用VBoxManage controlvm“Fedora”poweroff关闭VM,然后使用VBoxManage快照“Fedora”discardcurrent -state恢复到最后一个快照。如果您有多个快照,则可以使用-all开关而不是-state恢复到最后一个但只有一个快照。
当然,当您恢复到旧状态时,自该快照以来所做的所有更改都将丢失,包括所有配置更改以及对旧文件和新文件的更改。您可以通过指定数据应存储在“writethrough”磁盘上来解决此问题,该磁盘的行为类似于普通磁盘但不受快照影响。换句话说,当您拍摄快照时,VirtualBox会忽略写入磁盘。您可以将所有重要数据和文件或完整/主目录存储在该磁盘上。
 
要添加写入磁盘,请在使用createvdi创建新磁盘时使用-type writethough选项。您还可以更改先前创建的磁盘并使其写入。为此,首先使用VBoxManage modifyvm“Fedora”-hdb none从VM中取消它,然后使用VBoxManage unregisterimage disk fourgig取消注册(使用系统上的磁盘名称代替fourgig)。现在再次注册它,但作为一个写入磁盘与VBoxManage registerimage磁盘“fourgig”类型writethrough。最后,使用VBoxManage modifyvm“Fedora”-hdb fourgig将其附加回VM。
现在您可以安全地将数据保存在此磁盘上,无论VM处于什么状态,数据始终都是安全的。但请记住,不要恢复到创建此磁盘之前保存的状态;如果你这样做,VirtualBox将只删除磁盘,因为它在该状态下不存在。此外,VirtualBox目前不允许您拍摄附加了写入磁盘的VM的快照,因此您必须在保存VM状态之前取消附加一个写不清的磁盘,然后重新附加它。我希望在即将推出的VirtualBox版本中,写入磁盘的存在对快照过程没有影响。
答案 1 :(得分:0)
更新的答案。你仍然无法直接从客人那里做到。
您可以通过共享驱动器/文件夹和主机上运行的脚本来触发主机重新启动guest虚拟机,该脚本将在更新共享文件时重新加载guest虚拟机。
包含我的Windows脚本以重新启动来宾。 Canesin给出的命令对我不起作用。我在CMD文件中有以下内容。
PATH=%PATH%;c:\Program Files\Oracle\VirtualBox
vboxmanage controlvm "DEMO" poweroff
timeout /t 10
vboxmanage snapshot "DEMO" restorecurrent
timeout /t 10
vboxmanage startvm "DEMO"