題 將VirtualBox VM移動到另一台計算機的推薦方法是什麼?


我在我的Ubuntu機器上使用VirtualBox 4.1.x,並且我已經設置了幾個虛擬機。由於有幾種方法可以將VirtualBox中的虛擬機移動到另一台計算機,我想知道哪一種是推薦的方式:

  1. 使用“導入/導出實用程序”。
  2. 複製整個虛擬機文件夾,包含 .vdi 和 .vbox 文件。
  3. 使用“Virtual Media Manager”克隆VDI,然後在目標計算機上重新創建VM,但使用克隆的VDI作為硬盤。

我已成功使用了 第一種方法 幾次,它一直有效。問題是在導出和導入後,磁盤映像將轉換為VMDK而不是VDI!

第二種方法 可能是最簡單的,但我不確定只是複製文件在目標機器上是否有效。在搜索這個方法時,我發現有些人遇到了必須編輯VirtualBox.xml文件來解決它的問題!

最後,有 第三種方法,但它需要額外的工作來創建類似於原始VM配置的VM,這是不可取的。

從上面的解釋可以清楚地看出,我想要的方法是第二個方法,但如果有效,我需要專家建議。我不希望任何XML編輯妨礙我!

使用VirtualBox將我的VM安全傳輸到另一台計算機的最佳方法是什麼?


204
2017-08-18 19:45


起源


只需傳輸文件並將它們放在同一位置即可。 - Ramhound
@seyed 1. A. 故障安全 具有高成功率/再現性的解決方案可能並非總是如此 推薦的 和/或 最好 解決問題和 反之亦然。但是,既然如此,你問的是 推薦的 解, 選項(2) 從你的列表(雖然容易出錯)將是最快的,因此建議! 選項(1)和(3) 落在了 故障安全 類別,因為他們 將 在大多數情況下工作。 P.S。:出口後,一些(大多數?)配置設置可以更改(如果使用選項1/3)! ... 希望這可以幫助。 - Amar


答案:


做你的研究做得好。我經常使用所有三個選項。

  1. (使用“導入/導出實用程序”)。這是最簡單的,因為它將整個VM組合成一個文件,並且每次都可以毫無問題地將其傳輸。但是,根據我在創建導出的OVA或OVF文件時的經驗,它會丟棄所有快照,如果不正確,則會導致VMDK文件。重新導入VM時,您應該能夠選擇要創建的HDD文件類型,VDI或VMDK。

  2. (複製整個虛擬機文件夾,包含 .vdi 和 .vbox 文件)。這是我的首選選項,雖然我不得不編輯XML文件幾次但是我自己的錯誤是弄亂了一些東西。確保在復制VM時,您將獲得與其關聯的所有文件。我遇到的問題是某些快照和輔助VDI文件位於錯誤的目錄中並且沒有正確複製。如果您複製所有文件(和權限),您不應該有任何問題。

  3. (使用“Virtual Media Manager”克隆VDI,然後在目標計算機上重新創建VM,但使用克隆的VDI作為硬盤)。  這是不太理想的,因為您有2個VM副本,它可能會導致許可問題,網絡問題等,具體取決於您克隆VDI文件的方式。

總之,我肯定會推薦選項2,只需確保在移動時獲得所需的所有文件。


143
2017-08-18 20:53



謝謝回复。我會再等幾天,看看是否有其他人有任何其他觀點。 (1) - Seyed Mohammad
看起來沒有人可以添加任何東西......所以我將此標記為答案。 - Seyed Mohammad
只是選項1的附加參考, 鏈接,導入後,格式為VDMK,似乎已確定且無法更改。 - simongcc
@tbenz如何在導出時避免獲取VMDK? - Don Rhummy
要完成:如果您執行選項2,請在目標計算機上執行此操作:Virtualbox>計算機>添加> [導航到所有VM文件所在的文件夾]。將新VM文件放在存儲所有其他VM的同一文件夾中可能是個好主意。 - Donn Lee


方法2現在運作良好 (使用VirtualBox 4.0及更高版本),無需任何XML修改:

  1. 停止您的虛擬機
  2. 退出VirtualBox
  3. 將VM文件夾複製到新位置
  4. 重新啟動VirtualBox,並刪除舊VM。
  5. 轉到計算機菜單≥添加並瀏覽到舊文件夾。

而已!

ps:我在OSX 10.10上有VirtualBox 4.3.20

看到 這個VirtualBox論壇帖子 更多細節。


38
2017-09-24 19:35



不能相信是不應該投票多少應該是!在同一操作系統中移動虛擬機時,這是最簡單的方法(太簡單!)。成功將兩個VM從驅動器C移動到驅動器D.我的是帶有Virtualbox 5.x的Win7 64位 - Edwin Yip
這實際上不僅僅是移動VDI文件,而只是移動整個虛擬機。 - DustWolf
@DustWolf對,但這就是op的問題所在。 - David
@DustWolf這就是大衛所說的。 “將VM文件夾複製到新位置”。就我而言,此文件夾包含整個虛擬機。我錯過了什麼嗎? - Nik-Lz
@RestlessCobra是的,新文件夾包含整個VM。 - David


我的首選方案是選項2:

  1. 複製整個VM文件夾,其中包含.vdi和.vbox文件。

但有時會發生UUID不匹配。如果您只是將一台計算機的VDI磁盤映像複製到另一台計算機上,但通常會發生這種情況,但我也在完整目錄的直接副本中發生了這種情況。

因此,如果這是移動虛擬機並嘗試在新設置中啟動它後得到的消息:

無法打開硬盤。

無法註冊硬盤,因為硬盤    UUID已經存在。

只需進入虛擬機目錄;當然改變實際路徑以匹配您要進入的實際路徑:

cd /full/path/to/virtualbox/virtualmachine/Sandbox

並運行此命令為磁盤分配一個新的UUID:

VBoxManage internalcommands sethduuid Sandbox.vdi

17
2017-09-25 17:14





如果其他人正在尋找答案,我成功地將5個Virtual Box虛擬機移動到同一台機器上的新硬盤上的另一個Win7安裝(實質上是在同一台PC上從一個客戶操作系統移動到另一個客戶操作系統)。我意識到一台全新機器上的驅動程序可能會有所不同,並可能對此移動產生負面影響,但我已經記錄了下面的過程,希望它可以幫助某人。

  • 無需克隆VM或更改xml文件。 VB版本是當前的:4.3.12r93773。
  • 在新文件夾/共享驅動器中創建了VM的新副本,以保持現有/舊VM完好無損。我仍然可以從我保留的舊硬盤啟動以進行冗餘/解決問題,直到我對我的新設置感到滿意為止;所以我可以在必要時訪問以前狀態的舊VM。
  • 根據您的設置,驅動器號會有所不同/可能沒有必要。

在舊的Win7主機上:

  1. 確保所有VM都已關閉。

在新的Win7主機上:

  1. 創建名為X:\ NewVMs \ VirtualBox VMs的新文件夾(來自New Win7機器以確保權限正常)
  2. 將舊文件夾中的所有VM和相關文件夾內容複製/粘貼(不要拖動)到此文件夾(使用新權限)
  3. 卸載VirtualBox(如果已安裝)
  4. 刪除.virtualbox文件夾和所有內容(如果存在)
  5. 重新啟動以確認沒有剩餘的程序文件或註冊表項(如果卸載舊的VirtualBox)。
  6. 安裝/重新安裝VirtualBox(確保您使用與在舊主機/機器上創建VM的VirtualBox相同的版本(在我的案例中為4.3.12r93773))
    重要提示:(安裝結束時不要選擇勾選框來打開/運行VirtualBox)
  7. 從舊Win7主機複製/粘貼(不要拖動).virtualbox文件夾和內容(通常為C:\ Users [username] .VirtualBox
  8. 現在打開VirtualBox
  9. 將新的默認VM創建文件夾的首選項設置為與新創建的VirtualBox VMs文件夾相同的文件路徑:X:\ NewVMs \ VirtualBox VMs
  10. 測試VM的狀態

祝好運。


9
2017-08-16 12:21



雖然這是一個提供信息的答案,但它不是關於所要求的。另一個問題可能是您的答案更合適的位置。 - akTed
@Steven,“......基本上是一個人的舉動 主辦 操作系統到另一個......“? - pythonlarry


對於特殊情況:

  • 你只有一個 單個VM (或想要移動所有虛擬機),
  • 而主持人是 具有相同OS版本的相同硬件 (或將同一OS重新安裝到同一台機器上)

如果 在這種情況下,事情很容易:

  1. 在兩台主機上關閉VirtualBox。
  2. 複製 .config/VirtualBox 和 VirtualBox VMs 來自源主機的文件夾。
  3. 將這些文件夾複製到目標主機。
  4. 在目標主機上啟動VirtualBox

2
2018-03-22 03:42





第四種方式

在VirtualBOX中:

  1. 關閉VM電源
  2. 右鍵單擊並刪除VM(不要刪除文件)
  3. 轉到文件>虛擬媒體管理器並刪除.vdi
  4. 轉到文件>首選項>常規,然後將默認計算機文件夾設置為新位置
  5. 創建新的VM使用專家模式以創建沒有硬盤的VM

在文件資源管理器

  1. 找到.vdi文件並進行複制
  2. 轉到新的默認機器文件夾,裡面會有一個VM文件夾
  3. 將.vdi文件粘貼到新VM文件夾中

返回VirtualBOX:

  1. 右鍵單擊VM並打開設置
  2. 轉至存儲>控制器:SATA並添加硬盤,單擊選擇現有磁盤 11.選擇新VM文件夾中的.vdi文件

注意: 如果方法2中斷VirtualBOX的安裝,請轉到C:\ Users \ .VirtualBox並刪除VirtualBox.xml並將VirtualBox.xml-prev重命名為VirtualBox.xml


1
2018-06-28 21:44





我也使用方法2來移動我的虛擬機,我沒有對任何XML文件進行任何更改,但是在USB和文件共享方面遇到了一些錯誤,以下是我如何修復它們以及進程:

  1. 將虛擬機從舊PC複製到新PC。虛擬機文件與Oracle虛擬機本身不同。這些文件通常是 c:\ users \\ VirtualBox VMs \。我拿起了整個 VirtualBox虛擬機 部分並將其複製到新PC上的類似位置。這會復制我在原始PC上擁有的所有虛擬機。

  2. 現在在新PC上運行虛擬框並轉到菜單>機器>添加,然後從復制的文件夾中選擇.vbox文件。而已。

  3. 現在當我在新PC上運行虛擬機時,我在啟動時遇到錯誤:

enter image description here

  1. 我不知道為什麼USB控制器不起作用,因為同樣適用於原始計算機。我繼續安裝 VirtualBox擴展包

  2. 這個安裝有點奇怪,因為安裝下載不是可執行文件。我點擊了Oracle_VM_VirtualBox_Extension_Pack-5.1.4-110228.vbox-extpack並選擇了“從已安裝程序列表中選擇一個程序”,然後選擇了Oracel virtualbox並安裝了擴展程序。這解決了問題,但另一個不太理想的解決方案是你可以禁用usb。

  3. 如果您在原始VM中有共享文件夾,它們可能會有所不同,您將收到錯誤消息。查看設置>>共享文件夾中的那​​些並刪除已損壞的那些。錯誤消息將如下所示

this

就這樣。


0
2017-09-12 21:36





zar,首先要做的事情......永遠不要移動處於保存狀態的機器,在移動之前必須關閉客人,而不僅僅是保存狀態。

另外,請確保在兩台主機上使用相同版本的VirtualBOX,但不僅僅是VirtualBOX版本,還有擴展包版本......或者至少新主機版本更高版本,但在任何一個版本中都不會使用較低版本。

最後,我學到了很難的方法,在移動機器之前刪除VirtualBOX上的SHARED文件夾配置,然後以正確的方式重新創建它......當主機是不同的操作系統(Windows / Linux主機)時非常重要。

而且只是作為旁注...我總是,總是使用不可變的硬盤VDI文件用於操作系統以及數據VDI(這種方式相同的DATA VDI可以用於多個來賓),特別是4GiB pagefile.sys的技巧

最後一部分,重用一個不可更改的VDI文件會讓事情變得更難,VirtualBOX有一個很大的缺點。

要查看Bug中的操作:

  • 創建一個不可變的VDI(就像我用於pagefile.sys的那個)
  • 在VirtualBOX上創建兩個或三個VM
  • 將其中一個移到列表頂部(以避免損壞您的任何一個)
  • 備份您創建的每台機器的.vbox文件(用於在BUG發生後進行比較)
  • 將不可更改的VDI附加到多台計算機上(列表頂部除外)
  • 現在看到列表頂部的機器的.vbox

該機器已經過編輯,它引用了其他機器不可靠的VDI。

所以BUG是:編輯一台機器,添加另一台機器使用的可更換VDI會影響列表頂部的機器。

為什麼我會在所有Windows機器上重複使用相同的4GiB VDI?很簡單,它是一個帶有FAT32分區的MBR磁盤,我放了pagefile.sys,因為它是不可變的,所有虛擬機都會在他們的快照文件夾中創建一個存儲更改的文件,並在下次啟動時丟失,所以我做存儲在主機磁盤上的每個訪客都不需要4GiB,只需要一個...這樣我節省了很多GiB,因為我有20多個不同的窗口用於測試我為自己開發的應用程序,所有組合(XP,Vista) ,7,8,8.1,10)*(32位,64位)*(就像在第一次安裝時一樣,在每個ServicePack之後,在完全Windows更新之後),我得到了很多,很多客人...所以他們都我共享虛擬RAM(pagefile.sys)的不可靠的4GiB VDI。

如果你讓BUG更進一步,嘗試將其中一台機器移動到另一台VirtualBOX主機(記住它們只是虛擬機上有配置而且還沒有安裝客戶機),你會發現VirtualBox不允許你添加它們,因為缺少一些VDI(它是FALSE和TRUE,這是第一台機器保存對這些VDI的引用,這些VDI被保證在正確的機器上運行)。

現在將它們的.VBOX文件與previos BackUp進行比較...注意如何修改錯誤的文件?...是的,它是列表頂部的文件。

好吧,幾年前這個BUG被告知VirtualBOX,他們仍然無法修復它......它造成了很多問題。

此外,如果您將虛擬機上的頂部移動到較低位置,請關閉VirtualBox並重新啟動它...將告訴您某些機器已損壞且無法啟動...是列表中的第一個如果你不想遇到很多麻煩,必須以不同的形式對待。

這是一個非常糟糕的BUG,花了我很多天才發現(幾年前)我很難學到它!

我用一台叫過的機器克服了它:

  • Common Inmutable Disks

它有一個空配置,只有一個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>

漂亮的BUG,多年來都沒有解決。

好吧,要移動這樣的機器......你必須手動編輯.VBOX文件,在添加.VBOX之前將所有這些磁盤引用放在第一台機器上的新主機上(位於列表頂部的那台機器上)將文件添加到列表中,因此在添加它們時,VirtualBOX會引用缺少的VDI(由大BUG引起的丟失)。

之所以發生這種情況,是因為每次連接在另一台機器上使用的VDI時,VirtualBOX都會更新兩台機器.VBOX文件(屬於您正在使用的機器的文件)和列表中的第一台。

我不完全確定在列表中會發生什麼,第一個沒有附加這種常見的VDI ...最好不要嘗試它,看到我所看到的。

因此,遷移到另一個HOST比看起來更複雜,因為.VBOX文件內部結構的實現非常糟糕,而且當VirtualBOX編輯它們時真的很大的BUG。

失敗:

  • 內部結構(XML)依賴於HOST(Windows或Linux)
  • 編輯一台機器可以改變另一台機器,而不僅僅是編輯的一台機器
  • ... 還有什麼 ?

需要更多...我總是遷移機器這樣做(並沒有問題,從來沒有):

  1. 記下所有機器的清單(訂單,分組等)
  2. 記下列表中的第一個(所有配置)
  3. 記下我想要移動到另一台主機的機器的所有屬性
  4. 將.vbox文件複製為.txt文件(列表頂部的文件+我要遷移的所有計算機)
  5. 在新主機上的VirtualBox內重新創建所有計算機(並在列表頂部有一個特殊計算機)
  6. 關閉新主機上的VirtualBox
  7. 差異將舊的.txt與新的.vbox文件進行比較,然後以。人文的方式從.txt複製到.vbox的某些部分,而不僅僅是複制和粘貼
  8. 打開VirtualBox並以正確的順序連接所有VDI
  9. 再次關閉新主機上的VirtualBox
  10. 差異將舊的.txt與新的.vbox文件進行比較,並將.txt中的'fix'與.vbox進行比較,以人為方式處理某些部分,而不僅僅是複制和粘貼

所有其餘的(快照文件夾和VDI文件)我以正常方式複制它們(文件系統複製和粘貼)。

所有這些艱苦的手動工作都是由Big BUG VirtualBox引起的:當你附加在多台機器上使用的不可更改的VDI時,它編輯/修改一台未被修改的機器,否則簡單的複制和粘貼.VBOX文件就足夠了(之後)修復共享文件夾路徑等)。


-1
2018-01-03 15:03





將包含機器的文件夾複製到目標,然後從菜單:“機器”--->“添加”,然後選擇vbox文件,而不是vdi文件。對我而言,這完美無瑕。不確定我是否幸運,或者它是否應該以這種方式工作。


-2
2018-04-27 23:51