我可以将一个 VirtualBox 磁盘用于多台机器吗?

我可以将一个 VirtualBox 磁盘用于多台机器吗?

我不确定要使用什么搜索词,浏览 VirtualBox 手册也对我没有帮助,所以我在这里问了两个问题...

我的设置如下:PC 具有双启动功能,可启动 Windows 7 和 Debian 操作系统(均为 64 位)。我在 Windows 下创建了一个虚拟机(Kubuntu,64 位),并将其 VDI 文件放在我的 NAS 的 SMB 共享上。
然后,我在 Linux 下使用相同的内存等设置创建了一个 VM,并将现有的 VDI 文件分配给它。我的想法是,我也可以在 Windows 和 Linux 中使用该虚拟机。(1)一般来说,这应该可以毫无问题地运行吗?

我注意到快照给我带来了麻烦,因为它们似乎在其他操作系统上不可见:我在安装客户系统后拍摄的快照在 Linux 下不可见。这就是为什么我在使用后关闭虚拟机,并且在运行时不保存其状态的原因。

我当前的问题是这样的:我先在 Windows 下使用虚拟机,然后在 Linux 下使用。现在它只能在 Linux 上启动。在 Windows 上尝试此操作时,客户操作系统检测到某种硬盘错误,并且由于无法安装其驱动器而无法启动。显然虚拟硬盘不会出现故障,所以这一定与我在 Linux 下使用它有关。
(2)我该如何解决这个问题?
更新:看起来,我在 Linux 下的 VM 中所做的任何更改都已通过尝试在 Windows 下启动而被重置。看起来它回到了最新的快照。我很困惑...

更新

我的第一个问题的答案如下。简而言之:只要您不使用快照,它就可以工作。

我的第二个问题的答案是:在 Windows 下,将虚拟机设置回最新快照,然后丢弃快照以便合并。最后应该没有剩余的快照。如果您有多个快照,请先丢弃最早的快照(快照 1,然后是 2、3,...)。我不确定如果从末尾开始会发生什么(...,3、2、1)。这
当然会导致一些数据丢失,因为您会恢复自上次快照以来的所有更改。但至少虚拟机可以再次使用。

答案1

是的,您可以像以前一样共享 VDI 文件,因为您一次只有一个 VirtualBox 实例访问 VDI 文件。

然而,还有另一个注意事项需要考虑 -一旦创建快照,就无法共享 VDI 文件

虽然此主题有点旧,它应该能让你合理地理解为什么在创建快照后不能共享 VDI 文件。

因此,避免使用快照,您应该能够在 Windows 和 Linux 安装之间共享您的 VDI 文件。

答案2

纠正此帖子中的一些错误信息。

  • 您可以在多台机器之间共享单个 VDI(虚拟磁盘映像)。
  • 这些机器可以同时运行,但有不同的变化。
  • 此外,他们都可以利用快照功能。
  • 即使在拍摄快照之后,您也可以从机器历史记录中的任何点分支并生成新机器。

不久前我专门为此写了一篇文章……

http://blog.mrverrall.co.uk/2010/06/spawning-many-virtualbox-machines-from.html

另请参阅前一篇关于“在 VirtualBox 中使用多个快照克隆虚拟机”的文章,该文章可以解决原始海报的主要问题……即将机器、快照等全部移动到新的操作系统。

:)

答案3

为了进一步说明 Convict 所说的内容,不要使用快照,只需关闭虚拟机并“保存状态”。这会将所有更改保存回 VDI 文件本身。

如果需要执行相当于快照的操作,您可以制作 VDI 文件的实际副本。当然这会占用一些磁盘空间,但磁盘很便宜。

答案4

只需澄清一件事......VirtualBox 机器不仅仅是 VDI 文件,VBOX 文件与 VDI 文件一样重要。

我在同一台计算机上的物理硬件上运行的两个操作系统(一次只能运行一个)之间共享一个虚拟机(我不使用服务器,但概念相同)。

我在 Linux 上安装了 VirtualBOX 并将其保存VirtualBox.xml在另一个磁盘上,该磁盘仅用于虚拟机。

我在 Windows 上安装了 VirtualBOX 并将其保存VirtualBox.xml在另一个磁盘上,该磁盘仅用于虚拟机。

我确实使用(Linux 符号链接到文件夹)和(Windows 连接)来实现这一点。

我创建虚拟机(无论是在 Linux 还是 Windows 上),它将在两者上都可见,因为虚拟机的基本存储在同一个磁盘上,所以 Linux VirtualBOX 和 Windows VirtualBOX 都将读取/写入同一个位置。

这样,在物理计算机运行 Linux 时对 VBOX 文件、快照等所做的任何更改都将在物理计算机运行 Windows 时可见,反之亦然。

有时我不希望两个物理系统上的所有虚拟机都相同(VirtualBOX 列表)...有时我希望它们具有不同的虚拟机列表...为此,我在该驱动器上创建一个或多个文件夹(我称它们为、、、Host_Windows10等...每个文件夹代表在同一​​台计算机上的物理硬件上运行的操作系统。Host_Windows11Host_LinuxUbuntuHost_LinuxManjaro

VirtualBox.xml对于每个操作系统来说,方法都是不同的。

但是我想在多个虚拟机上安装同一个虚拟机...所以我将该虚拟机的所有文件(和文件夹)放在该磁盘上的特定文件夹中,然后我使用我想要该机器运行的第一个操作系统启动计算机并将其添加到列表中...然后我启动我也想要该机器运行的另一个操作系统并将其添加到列表中...如此反复。

此后,每个操作系统都有自己的“VirtualBox.xml”,并且在它们内部,其中一些引用同一个虚拟机。

想一想:

LinuxVirtualBox.xml/MyDrive/Host_LinuxManjaro/ Windows 上有不同,VirtualBox.xml在 D:\Host_Windows10`

/MyDrive 和 D:\ 是同一驱动器上的同一根文件夹。

虚拟机文件和文件夹存储在:如果在 Linux 上看到:/MyDrive/MyVirtualMachine/ 如果在 Windows 上看到:D:\MyVirtualMachine\

该文件夹内有 VBOX 文件、所有 VDI/VHD/etc、日志文件夹、快照文件夹等...所有虚拟机都在里面(除了告诉 VirtualBox 列表该机器必须出现在列表中的那一行)。

我编辑机器 VBOX 文件以确保没有完整路径。

并且,对虚拟机所做的任何更改(快照、安装程序等)都是在同一硬件上运行的 VirtualBOX(Linux 和 Windows)已知的路由上完成的(启动 Linux 或启动 Windows)。

请注意,VirtualBOX 的两个版本必须相同,如果您更新一个版本,请不要忘记在运行虚拟机之前更新另一个版本。

它还适用于...正在运行的虚拟机,关闭它并保存其状态,重新启动到其他物理操作系统并恢复虚拟机。

这里的关键点是 VirtualBOX 保存了什么...不仅 VDI 很重要...VBOX 文件在哪里以及VirtualBox.xml文件在哪里也很重要。

提示:我通常使用 Notepad++ 来更改虚拟机的 VBOX,而不是使用 VirtualBox 的 GUI,这样我就可以更精细地控制我所更改的内容。

额外:对于所有那些希望不可变机器在安全关机后在启动时不会丢失更改的人,在部分内<HardDisk ...>(部分内<MediaRegistry>),它可以在虚拟机 VBOX 文件内或里面VirtualBox.xml,有文本autoReset="true",只需将其替换为autoReset="false"或简单地删除参数。

提示(当 autoReset 不为真时):如果在定义机器之后(或重置完成后),您可以将 /Snapshots/ 文件夹(小尺寸)中的文件复制(到父文件夹的另一个子文件夹),那么当您想要重置时,您会复制回小文件,所有更改都会丢失...提示:不要将此类复制的文件放在被复制文件的完整路径的任何文件夹中,例如,如果文件在,/A/B/S/here请不要将其放在/Anor /A/B、nor/A/B/S等...例如,将其放在/A/B/BackUPs...VirtualBox 和一些工具在某些操作上会查找路径上直到父级的文件(任何名称),直到找到具有搜索到的 UUID 的文件,更改名称无济于事。

额外:在<AttachedDevice ...>SSD/NVME 部分,它会很有用nonrotational="true"

额外:在<AttachedDevice ...>使磁盘被视为可移动的部分,它可能会很有用hotpluggable="false"

额外:为了能够在机器运行时连接磁盘,至关重要的是机器在参数部分中定义了比正在使用的端口更多的端口<StorageController ...>PortCount="..."如果没有可用端口,VirtualBox 将不允许动态添加另一个磁盘。

Snapshots额外:如果您还更改了 VBOX 文件(或)中的引用(VirtualBox.xml无论文件在哪个部分内注册),则可以重命名文件夹内的文件<MediaRegistry>

不要惊慌,对VirtualBox.xml和/或 VOX 文件的所有更改都是用 Notepad(Notepad++)纯文本编辑器进行的,但 VirtualBOX 完全关闭(没有机器运行、没有 VirtualBOX 的 GUI 等);在更改它们之前对它们进行备份,然后进行更改,运行 VirtualBOX 并查看结果。

一些修改必须手动完成(或者至少我仍然不知道如何进行)。

请确保指向磁盘映像的文件中的所有路径都是相对的,而不是完整路径;路径分隔符并不重要 / 或 \ 可以起作用,并且在同一路线上混合它们似乎效果很好。

请确保如果您有物理 Windows 和物理 Linux,并且它们VirtualBox.xml保存在不同的文件夹Host_Windows10、、 Host_Windows11Host_LinuxManjaro上……如果处理与多个不同的(Linux/Windows)物理操作系统相同的问题会很麻烦。

希望所有这些信息都有帮助...有时手动编辑VirtualBox.xml*.vbox文件对于获得想要的东西至关重要。

很抱歉把它写得这么长……一篇文章要教的内容太多了,VirtualBOX 的内部线路(在文本文件上)本身就需要一个完整的教程,当需要“特殊”的事情发生时则需要更多……我只想教……并且大声地说……why on the hell VirtualBOX GUI lacks a lot of what can be done editing by hand the text files?比如在启动时为不可变虚拟磁盘保存/不保存状态;允许对不可变磁盘的差异虚拟磁盘进行不可变(即多于一个级别的更改)而无需快照,即不可变链、不可变分支等……所有这些都必须手动完成,距离“普通”用户很远,而且完全没有记录。

相关内容