zar, 首先…..永远不要移动处于保存状态的机器,在移动之前,你必须先关闭访客,而不是只保存状态。
最后,我也学到了一个很重要的方法,在移动机器之前,先删除VirtualBOX上的SHARED文件夹配置,然后用正确的方法重新创建………..当主机是不同的操作系统(Windows/Linux主机)时,这一点非常重要。 sys
最后一部分,重新使用不可篡改的VDI文件会让事情变得更加困难,VirtualBOX有一个很大的BUG。 vbox文件(用于BUG发生后的比较)
- 将不可篡改的VDI附加到多个机器上(除了列表上的那台机器)
- 现在看到列表上的机器的.vbox
那台机器已经被编辑了,它有对其他机器不可篡改的VDI的引用。编辑一台机器,添加一个被另一台机器使用的inmutable VDI会影响到列表顶部的机器。很简单,它是一个MBR磁盘,有一个FAT32分区,我把pagefile.sys放在那里,因为它是不可更改的,所有的虚拟机都会在他们的快照文件夹中创建一个文件,在那里存储变化,在下一次启动时就会丢失,所以我不需要4GiB的主机磁盘上存储的每个客机都有4GiB,只需要一个….. 这样一来,我可以节省很多GiB,因为我有20多个不同的窗口来测试我自己开发的应用程序,所有的组合(XP, Vista, 7, 7, 8, 8, 8.1, 10)(32位, 64位) (就像第一次安装时一样,每次ServicePack之后,在windows更新后,我就会得到很多,很多的访客………..所以在所有的这些窗口上,我都会共享不可更改的4GiB的VDI来做为虚拟内存(pagefile.sys)。
如果你让这个BUG继续下去,试着把这些机器中的一个移到另一个VirtualBOX主机上(记住,它们只是有配置的虚拟机,还没有安装客机),你会发现VirtualBox不允许你添加它们,因为有些VDIs不见了(这是FALSE和TRUE,是这样的,是这样的第一台机器拥有这些VDIs的引用,而不是在正确的机器上)。 VBOX文件和之前的BackUp…..注意到有一个是怎么被修改错的吗? 是的,就是列表上的那个。
还有,如果你把虚拟机上最上面的那一个移到较低的位置,关闭VirtualBox,然后重新启动………..会告诉你有些机器已经损坏了,无法启动…… 是的,列表上的第一个必须用不同的形式来处理,如果你不想惹上很多麻烦的话。
我克服了这个问题,我有一个机器叫:
它有一个空的配置,只有一个VDI,是的,你猜对了,你猜对了,就是我为其他虚拟机共享的不可更改的VDI。
当我打开.VBOX文件的时候,我看到里面有很多行,在<MediaRegistry>
<HardDisks>
部分,每台机器上都有一个不可移动的VDI…… …作为一个例子(我删除了私人数据):
<MediaRegistry>
<HardDisks>
<HardDisk uuid="...UUID..." location="D:\VDIs\_Virtual_Memory_.vdi" format="VDI" type="Immutable">
<HardDisk uuid="{...UUID...}" location="Snapshots\{...UUID...}.vdi" format="VDI" autoReset="true"/>
<HardDisk uuid="{...UUID...}" location="D:\VMs\Windows001 ... // This belongs to other virtual Machine
<HardDisk uuid="{...UUID...}" location="D:\VMs\Windows002 ... // This belongs to other virtual Machine
<HardDisk uuid="{...UUID...}" location="D:\VMs\Windows003 ... // This belongs to other virtual Machine
<HardDisk uuid="{...UUID...}" location="D:\VMs\Windows004 ... // This belongs to other virtual Machine
<HardDisk uuid="{...UUID...}" location="D:\VMs\Windows005 ... // This belongs to other virtual Machine
<HardDisk uuid="{...UUID...}" location="D:\VMs\Windows006 ... // This belongs to other virtual Machine
<HardDisk uuid="{...UUID...}" location="D:\VMs\Windows007 ... // This belongs to other virtual Machine
<HardDisk uuid="{...UUID...}" location="D:\VMs\Windows008 ... // This belongs to other virtual Machine
<HardDisk uuid="{...UUID...}" location="D:\VMs\Windows009 ... // This belongs to other virtual Machine
<HardDisk uuid="{...UUID...}" location="D:\VMs\Windows010 ... // This belongs to other virtual Machine
<HardDisk uuid="{...UUID...}" location="D:\VMs\Windows011 ... // This belongs to other virtual Machine
<HardDisk uuid="{...UUID...}" location="D:\VMs\Windows012 ... // This belongs to other virtual Machine
<HardDisk uuid="{...UUID...}" location="D:\VMs\Windows013 ... // This belongs to other virtual Machine
... and so on ... // This belongs to other virtual Machine
</HardDisk>
</HardDisks>
</MediaRegistry>
&001
很大的BUG,多年来一直没有解决。 VBOX文件,在将.VBOX文件添加到列表中之前,将所有的磁盘引用放在第一台机器上的新主机上(列表中最上面的那台),所以在添加时,VirtualBOX会有丢失的VDI的引用(由于大BUG导致的丢失)。
我不完全确定在列表中会发生什么事情,第一台机器上没有这样的VDI………..最好不要尝试,我看到了。
- 内部结构(XML)取决于主机(Windows或Linux)
- 编辑一台机器可以改变另一台机器,而不仅仅是被编辑的机器
- ….. …还有什么?注意到所有机器的列表(顺序,分组等)
- 记下列表中的第一个机器(所有配置)
- 记下我想转移到另一台主机上的所有机器的属性
- 将 .vbox 文件复制为 .txt 文件 (列表中最上面的那台机器+我想迁移的所有机器)
5.在新主机上的 VirtualBox 中重新创建所有机器 (并且在列表的最上面有一个特殊的机器)
6.在新主机上关闭 VirtualBox
关闭新主机上的VirtualBox
- 打开VirtualBox,将所有的VDI按照正确的顺序连接到新主机上
- 再次在新主机上关闭VirtualBox
10.将旧的.txt文件与新的.vbox文件进行比较,并将.txt文件从.txt复制到.vbox的某些部分用人的方式 “修复",而不仅仅是Copy&Paste
其余的(快照文件夹和VDI文件)我都用正常的方式复制(文件系统复制&粘贴)。它编辑/修改一个机器没有被修改的机器,当你附加一个不可移动的VDI,在多个机器上使用,否则一个简单的Copy&Paste的.VBOX文件就足够了(修复共享文件夹路径等)。