我拙劣地将虚拟机从一个硬盘转移到另一个硬盘。现在我只剩下基本的 vdi 和一大堆快照。
我的脚步
由于冲突,无法添加基础 vdi 文件,因此将基础 vdi 的 UUID 更改为
VBOXMANGE.EXE internalcommands sethduuid <path/to/vdi>
Run Code Online (Sandbox Code Playgroud)这是错误(网络是名称):
Failed to restore the snapshot networked of the virtual machine lfs.
Could not open the medium 'H:\vm\ft.vdi'.
VD: error VERR_PATH_NOT_FOUND opening image file 'H:\vm\ft.vdi' (VERR_PATH_NOT_FOUND).
Result Code: E_FAIL (0x80004005)
Component: Medium
Interface: IMedium {53f9cc0c-e0fd-40a5-a404-a7a5272082cd}
Run Code Online (Sandbox Code Playgroud)
旧硬盘是驱动器 H:新硬盘是驱动器 N:
如何修改快照/VM 以查找N:\vm\ft.vdi基本 vdi?我已经在 VirtualBox 中设置了一般的默认设置(默认的 vm/vm 快照位置)。
或者如果不是这样,我如何将旧快照与基础 vdi 合并,因为唯一改变的是基础 vdi 的 UUID?
jma*_*hew 10
这是我如何解决我的问题。
首先,我使用jordoncm的脚本取消更改我的基本 VDI 文件上的 UUID
然后我尝试简单地更改 vbox 文件中的路径以匹配新位置。这不起作用,因为出现了各种不同的错误,我什至无法使用 vbox 文件添加 VM。
所以我找到了 Peter Porter 的这篇博客文章,他建议:
由于每个 .vdi 仅包含从上一个 .vdi 更改的扇区,因此按时间顺序复制 .vdi 应该为我们提供一个包含所有先前快照的完整副本的 .vdi。
...
使用“VBoxManage clonehd”命令基于原始文件创建一个新的 .vdi 文件,然后使用“–existing”参数添加每个后续文件,只需将数据添加到您正在构建的现有 .vdi 中即可。以下命令列表基于我上面的示例:
VBoxManage clonehd Machine.vdi Machine-full.vdi
VBoxManage clonehd 快照{UUID1}.vdi Machine-full.vdi
VBoxManage clonehd 快照{UUID2}.vdi Machine-full.vdi
VBoxManage clonehd 快照{UUID3}.vdi Machine-full.vdi
VBoxManage clonehd 快照{UUID4}.vdi Machine-full.vdi
这将为您提供一个“Machine-full.vdi”文件,该文件代表您的机器处于活动状态的完整状态,与父 .vdi 文件没有任何关系。您现在可以在新虚拟机上使用此“Machine-full.vdi”文件或编辑现有 VM,删除旧的 .vdi 文件并添加此 .vdi。
通过一些似乎对我有用的调整:
这是硬盘及其快照:
<HardDisk uuid="{ed1428ca-76be-440a-894b-e666b50f5c86}" location="H:/vm/ft.vdi" format="VDI" type="Normal">
<HardDisk uuid="{8d8be78f-6648-4503-bee3-8810cb853a99}" location="Snapshots/{8d8be78f-6648-4503-bee3-8810cb853a99}.vdi" format="VDI">
<HardDisk uuid="{cce0ee4f-5052-4be7-81ff-47ea08202716}" location="Snapshots/{cce0ee4f-5052-4be7-81ff-47ea08202716}.vdi" format="VDI">
<HardDisk uuid="{c297d4b9-972d-4b07-a839-5d76ee8d0387}" location="Snapshots/{c297d4b9-972d-4b07-a839-5d76ee8d0387}.vdi" format="VDI">
<HardDisk uuid="{8e9ca914-648f-464c-b515-2606c644d7f0}" location="Snapshots/{8e9ca914-648f-464c-b515-2606c644d7f0}.vdi" format="VDI"/>
</HardDisk>
</HardDisk>
</HardDisk>
</HardDisk>
Run Code Online (Sandbox Code Playgroud)
这些是我运行的命令(对不起,其中一些被切断了它的窗户......):
C:\Program Files\Oracle\VirtualBox>VBoxManage clonehd N:\vm\ft.vdi N:\vm\ft_full.vdi
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
Clone hard disk created in format 'VDI'. UUID: a7fb5e25-c248-4644-a898-f1e26f6570a4
C:\Program Files\Oracle\VirtualBox>VBoxManage clonehd "N:\vm\VirtualBox VMs\lfs\Snapshots\{8d8be78f-6648-4503
VBoxManage.exe: error: Parent medium with UUID {ed1428ca-76be-440a-894b-e666b50f5c86} of the medium 'N:\vm\Vi
03-bee3-8810cb853a99}.vdi' is not found in the media registry ('C:\Users\ <user>/.VirtualBox\VirtualBox.xml')
VBoxManage.exe: error: Details: code E_FAIL (0x80004005), component Medium, interface IMedium, callee IUnknow
Context: "OpenMedium(Bstr(pszFilenameOrUuid).raw(), enmDevType, AccessMode_ReadWrite, fForceNewUuidOnOpen, pM
xManageDisk.cpp
Run Code Online (Sandbox Code Playgroud)
废话似乎我需要在 MediaRegistry->HardDisks 下的 VirtualBox.xml 中添加一个条目,但我必须确保在每次复制后按时间顺序将每个快照添加到其中。所以它是这样的:
Copy VM
Add entry to VirtualBox.xml
Copy VM ...
Run Code Online (Sandbox Code Playgroud)
以及我所做的其他事情,以防它对其他人有所帮助:
C:\Program Files\Oracle\VirtualBox>VBoxManage clonehd --existing "N:\vm\VirtualBox VMs\lfs\Snapshots\{8d8be78
_full.vdi
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
Clone hard disk created in format 'VDI'. UUID: a7fb5e25-c248-4644-a898-f1e26f6570a4
C:\Program Files\Oracle\VirtualBox>VBoxManage clonehd --existing "N:\vm\VirtualBox VMs\lfs\Snapshots\{cce0ee4f-5052-4be7-81ff-47ea08202716}.vdi" N:\vm\ft_full.vdi
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
Clone hard disk created in format 'VDI'. UUID: a7fb5e25-c248-4644-a898-f1e26f6570a4
C:\Program Files\Oracle\VirtualBox>VBoxManage clonehd --existing "N:\vm\VirtualBox VMs\lfs\Snapshots\{c297d4b9-972d-4b07-a839-5d76ee8d0387}.vdi" N:\vm\ft_full.vdi
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
Clone hard disk created in format 'VDI'. UUID: a7fb5e25-c248-4644-a898-f1e26f6570a4
C:\Program Files\Oracle\VirtualBox>VBoxManage clonehd --existing "N:\vm\VirtualBox VMs\lfs\Snapshots\{8e9ca914-648f-464c-b515-2606c644d7f0}.vdi" N:\vm\ft_full.vdi
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
Clone hard disk created in format 'VDI'. UUID: a7fb5e25-c248-4644-a898-f1e26f6570a4
Run Code Online (Sandbox Code Playgroud)
然后我简单地使用 ft_full.vdi 作为它的基础创建了一个新的 VM。匹配 gui 设置窗格中的其余设置。
| 归档时间: |
|
| 查看次数: |
15350 次 |
| 最近记录: |