Làm cách nào để di chuyển tệp VirtualBox?


165

Theo mặc định, VirtualBox lưu trữ tất cả dữ liệu trong một thư mục bên dưới thư mục chính. Tôi biết cách thay đổi nhưng làm cách nào để thay đổi vị trí của các hình ảnh hiện có (mà không cần chỉnh sửa VirtualBox.xml theo cách thủ công)?

Tôi đang làm việc trên Windows và không muốn thử sử dụng bất kỳ liên kết NTFS nào .


4
À, tôi sẽ đề xuất các liên kết tượng trưng (họ giải quyết mọi thứ ™), nhưng bạn đã chặn ý tưởng đó ... :(
DMA57361

2
Tôi hoàn toàn không tin tưởng vào các liên kết trên Windows. Mặc dù NTFS có khả năng của nó, Windows XP không biết gì về nó và đã có đủ vấn đề với nó. Tôi có thể là kẻ hèn nhát không cần thiết ...
maaartinus

À, phải rồi, tôi sẽ không chạm vào chúng trên XP. Nhưng hỗ trợ trên 7 khá chắc chắn - bạn vẫn phải xây dựng chúng từ dòng cmd, nhưng đó không thực sự là việc vặt. Tôi không chắc chắn về Vista ...
DMA57361

Thậm chí còn tệ hơn, phiên bản XP của NTFS không hỗ trợ các liên kết cứng, nhưng chúng không thể mở rộng âm lượng . Rõ ràng, tôi muốn di chuyển dữ liệu sang một phân vùng khác.
maaartinus

Hardlinks không thể bao giờ trải rộng khối lượng, chỉ symlink có thể (và có thể được sử dụng cho các loại điều này, thư mục của tôi sử dụng được tất cả symlinked để HDD thứ hai của tôi, ví dụ). Nhưng, cá nhân tôi vẫn tránh các liên kết cứng trong XP (ngay cả khi chúng là một tùy chọn).
DMA57361

Câu trả lời:


138

Nếu bạn muốn di chuyển tất cả VM của mình đến một vị trí hoàn toàn mới, bạn chỉ nên làm theo 2 câu trả lời sau:

Sao chép bài đăng ở đây:

  1. Tắt VirtualBox, sao lưu tệp .VirtualBox \ VirtualBox.xml của bạn.
  2. Tìm thư mục "Virtualbox VMs" hiện có của bạn và sao chép (không di chuyển) toàn bộ thư mục có nội dung vào ổ đĩa mới E:
  3. Chạy VirtualBox, sau đó lần lượt cho từng VM:

    3.1 Nhấp chuột phải vào tên VM và chọn "Xóa" từ menu bật lên. Trả lời không cho "xóa tập tin vật lý?" câu hỏi

    3.1b sau khi xóa VM khỏi UI bạn phải đóng VirtualBox và để nó đóng đủ lâu để tác vụ VBoxSVC nền hết thời gian và cũng chấm dứt. Sau đó, bạn có thể khởi động lại ứng dụng VirtualBox và sử dụng Machine | Add để thêm lại các VM đã bị xóa trong bước trước.

    3.2 Chọn mục menu Máy | Thêm .., điều hướng đến vị trí mới của VM trên ổ E:, và chọn tệp .vbox.

    3.3. Lặp lại cho bất kỳ máy ảo còn lại.

  4. Trong Tệp | Tùy chọn, đặt đường dẫn máy mặc định thành "E: \ VirtualBox VMs"
  5. Kiểm tra từng VM. Chỉ sau khi bạn chắc chắn tất cả đều hoạt động, hãy xóa thư mục chứa VM cũ, tức là xóa "C: \ VirtualBox VMs".

Khi tôi làm điều này cho máy nhân bản được liên kết, chúng không khởi động được
Nam G VU

1
Điều này làm việc cho tôi, mặc dù tôi cũng cần cập nhật các đường dẫn đến từng HardDisk và ảnh chụp nhanh bằng cách chỉnh sửa .VirtualBox\VirtualBox.xmltệp và thực hiện tìm / thay thế. Ngoài ra, tôi chỉ di chuyển các thư mục MachinesHardDisk, không phải tất cả các tệp có trong đó .VirtualBox, vì đó là tất cả các cấu hình và ghi nhật ký toàn cầu, v.v.
Dave Andersen

4
Đối với người dùng Mac OS X, VirtualBox.xmlđược đặt tại ~/Library/VirtualBox/VirtualBox.xml. Các máy ảo được đặt tại ~/VirtualBox VMs.
Siu Ching Pong -Asuka Kenji-

2
Virtual Box 4.3.0+ đã giải quyết được "Điều quan trọng cuối cùng", tôi thậm chí không cần phải đóng nó - hướng dẫn .
PCaetano

Có lẽ bạn cũng có thể thêm dòng "phiên bản". 1) Liệt kê các máy ảo hiện có thông qua VBoxManage list vms. 2) Bên cạnh tên của VM, bên trong dấu ngoặc nhọn, UUID của chúng được tham chiếu. Sao chép một trong những quan tâm. Chi tiết về nó, có thể được lấy thông qua VBoxManage showvminfo UUID. 3) Hủy đăng ký VM quan tâm thông qua VBoxManage unregistervm UUID. 4) Di chuyển thư mục của VM quan tâm. 5) Cuối cùng, đăng ký máy thông qua VBoxManage register NameOfVM.vbox- rõ ràng, trong đó NameOfVM có nghĩa là tên thực của .vboxtệp VM sẽ được đăng ký.
Nikos Alexandris

58

Tôi chỉ có một vài máy ảo và tôi thấy rằng tôi chỉ có thể thay đổi vị trí lưu trữ mặc định cho VirtualBox và sau đó sao chép máy ảo của tôi. Bản sao được tạo ở vị trí mới trên HD mới nơi tôi muốn chúng. Mọi thứ còn nguyên vẹn, ảnh chụp nhanh và không cần phải ánh xạ lại vị trí của các HD ảo.


3
+1 Tôi nghĩ rằng đây là phương pháp tốt nhất. VirtualBox di chuyển mọi thứ cho bạn trong một gói nhỏ gọn gàng.
Dave Andersen

3
Đây là cách tốt nhất, không cần chỉnh sửa cfg thủ công
Bojan Bjelic

Làm thế nào để bạn làm điều này???
FlipFloop

Đây thực sự nên là câu trả lời được chấp nhận
theV0ID

1
Cảnh báo: Clone không tạo ra một bản sao hoàn hảo và có thể kích hoạt nhu cầu cập nhật giấy phép cho phần mềm đã cài đặt khi id máy / đĩa thay đổi. Đã gặp phải điều này khi di chuyển một bản sao cũ của Quicken trên máy ảo sang đĩa mới.
MZB

36

Phương pháp đơn giản nhất không yêu cầu loại bỏ các máy ảo của bạn và xử lý các cài đặt của chúng.

  1. Sao chép thư mục VM Virtualbox của bạn vào một ổ đĩa mới.

  2. Chạy Trình quản lý máy ảo. Chạy tệp Trình quản lý phương tiện -> Trình quản lý phương tiện ảo

    2a. Chọn VM để di chuyển lưu trữ cho. Nhấp vào nút Phát hành và sau đó là nút Xóa . Trên hộp thoại tiếp theo, bạn có thể loại bỏ hoặc giữ ổ đĩa ảo. Đóng trình quản lý để lại cho bạn trong Trình quản lý máy ảo của bạn.

  3. Chọn VM bạn vừa xóa phương tiện, nhấp vào nút Cài đặt , Nhấp vào phần Lưu trữ . Thêm bộ điều khiển cho phương tiện (thường là SATA) và sau đó thêm ổ cứng và chọn đĩa hiện có và chọn VD tại vị trí mới của bạn.

  4. Lặp lại cho mỗi máy bạn đang di chuyển

Tắt máy ảo của bạn tại vị trí mới để kiểm tra. Lần tới khi bạn truy cập Trình quản lý phương tiện ảo , di chuột qua mục VM sẽ hiển thị cho bạn nơi VD được lưu trữ.

Đảm bảo bạn thay đổi thư mục ảnh chụp nhanh để trỏ đến ổ đĩa mới nếu bạn đang sử dụng chúng. Mỗi máy có cài đặt thư mục ảnh chụp nhanh và Trình quản lý VM có cài đặt thư mục Máy mặc định trong Tệp -> Cài đặt cũng cần được thay đổi.

Ngoài ra, tôi cũng phải sửa đổi đường dẫn trong tệp xml. Sau đó, nó hoạt động hoàn hảo.

LƯU Ý: Mọi thứ đã thay đổi một chút kể từ khi điều này được viết, xem câu trả lời của Rob. Bây giờ nó cực kỳ đơn giản.


2
Tôi nghĩ rằng đây là cách dễ nhất để làm điều này.
Peter Perháč

17

NHIỀU, đơn giản hơn nhiều. 1) di chuyển đến vị trí mới 2) Nhấp chuột phải xóa khỏi menu hộp ảo 3) Chọn 'thêm' từ menu máy 4) Tìm biểu tượng 8kb Blue có loại 'định nghĩa máy ảo'. Chọn nó và nó sẽ thêm vào danh sách hộp ảo của bạn. nhấp đúp chuột vào máy ảo và nó hoạt động.


Thậm chí đơn giản hơn khi bạn muốn thêm VM trở lại VirtualBox, chỉ cần nhấp vào *.vboxtệp trong thư mục của nó.
Joel Mellon

2
Làm thế nào mọi thứ thay đổi trong ba năm ... Điều ước đã trở nên dễ dàng sau đó. Đã thêm ghi chú vào câu trả lời của tôi để họ đến xem cái này.
Phòng thí nghiệm Fiasco

1
Điều này thực sự nên được cao hơn lên. Tôi loay hoay và không thể làm cho nó hoạt động. Chỉ cần xóa những cái "không thể truy cập" trong giao diện người dùng và sau đó nhấp đúp vào tệp .vbox để thêm lại bằng cách sử dụng vị trí mới.
wenbert

Không hoạt động trên máy chủ Linux. Gặp lỗi này: Phiên VM đã bị đóng trước khi có bất kỳ nỗ lực nào để bật nguồn. Mã kết quả: NS_ERROR_FAILURE (0x80004005) Thành phần: Giao diện sessionMachine: ISession {7844aa05-b02e-4cdd-a04f-ade4a762e6b7}
Tối đa

1
Phần "loại bỏ" của mthod này cảm thấy như một ý tưởng tồi sẽ dẫn đến việc mất các cài đặt của bạn nhưng không được. Phương pháp này duy trì tất cả các cài đặt của bạn và là phương pháp dễ nhất trong tất cả các phương pháp tôi đã thử. Nó hoạt động trên máy chủ Windows 10 với cả khách Windows 7 và Windows Sever 2016.
Cú đêm

13

Trên Mac, chỉnh sửa các đường dẫn trong tệp này:

/Users/plingdy/L Library//VirtualBox / VirtualBox.xml

Thật dễ dàng, uy tín!


3
Anh ta đang sử dụng Windows và anh ta cũng không muốn chỉnh sửa VirtualBox.xml.
ChrisN

4
Điều này rất hữu ích với tôi, tuy nhiên, vì câu hỏi này vẫn còn rất hay nếu bạn đang dùng mac.
NRzingh

Tôi là một người dùng mac và google đã đưa tôi đến đây và giải pháp này là đơn giản nhất trong tất cả, có ý nghĩa hoàn hảo và hiệu quả với tôi :)
Mohit Singh

Tôi đang dùng linux và thích âm thanh của câu trả lời này, nhưng tôi đã bị tắt bởi cảnh báo ở đầu tập tin. Bạn vẫn sẽ đề nghị chỉnh sửa XML trực tiếp chứ? Cảnh báo cho biết: ** KHÔNG CHỈNH SỬA NÀY. Nếu bạn thay đổi tệp này trong khi mọi ứng dụng liên quan đến VirtualBox đang chạy, các thay đổi của bạn sẽ được ghi đè sau đó mà không có hiệu lực. Sử dụng VBoxManage hoặc GUI của Trình quản lý VirtualBox để thực hiện các thay đổi. **
craq

11

Sau khi lãng phí cả ngày cho vấn đề này (sử dụng Virtualbox 5.0.12 trên Arch Linux), cuối cùng tôi đã giải quyết nó theo cách mà câu trả lời của thomthom gợi ý. Đối với những người không chắc chắn về quy trình chính xác, lệnh nhân bản toàn bộ máy (bao gồm ảnh chụp nhanh) là:

VBoxManage clonevm --mode all --basefolder </new/path/> --register <VM_to_clone>

Lấy tên của VM với

VBoxManage list vms

Nếu cần thiết, trích dẫn đường dẫn và tên.

Cuối cùng, kiểm tra xem tất cả đều ổn và loại bỏ bản gốc.

Đó là tất cả, thực sự. Không cần bận tâm với các tệp xml hoặc trình soạn thảo hex. Không cần sử dụng GUI.

http://www.virtualbox.org/manual/ch08.html#vboxmanage-clonevm


Đây là câu trả lời duy nhất làm việc cho tôi. Nên cao hơn lên.
Tối đa

2
VM_to_clonelà UUID hoặc tên của VM. Với lệnh đã cho (sử dụng UUID), một thư mục đã được tạo tại /new/path/_<UUID>_ Clonevà các tệp chứa cũng được sử dụng _<UUID>_ Clonelàm tên. Để rõ ràng có một tên đẹp hơn, sử dụng --name "Your preferred name here"cờ.
Rob W

... và để xóa VM gốc thông qua CLI, VBoxManage unregistervm UUID(UUID của VM mà bạn có được thông qua VBoxManage list vms, không sử dụng tên VM vì nếu bạn sử dụng --nameđể giữ nguyên tên gốc, thì bạn có nhiều VM có cùng tên)
Rob W

Cảnh báo: Clone không tạo ra một bản sao hoàn hảo và có thể kích hoạt nhu cầu cập nhật giấy phép cho phần mềm đã cài đặt khi id máy / đĩa thay đổi. Đã gặp phải điều này khi di chuyển một bản sao cũ của Quicken trên máy ảo sang đĩa mới.
MZB

Dường như bây giờ có một lệnh chuyên dụng: virtualbox.org/manual/ch08.html#vboxmanage-movevm
Michael P

4

Để thực hiện tương tự như trong câu trả lời của Lucas Pottersky nhưng thông qua dòng lệnh (trên Windows thay thế vboxmanagebằng VBoxManage.exe):

  1. Liệt kê tất cả các máy ảo:

    vboxmanage list vms
    

    hoặc chỉ chạy:

    vboxmanage list runningvms
    

    mà cho mỗi máy đầu ra tên và UUID.

    Làm các bước sau cho mỗi máy bạn sẽ di chuyển.

  2. Duyên dáng tắt nó:

    vboxmanage controlvm UUID acpipowerbutton
    
  3. Hủy đăng ký:

    vboxmanage unregistervm UUID
    
  4. Di chuyển thư mục máy ảo đến vị trí mới.

  5. Đăng ký lại bằng cách cung cấp đường dẫn đến .vboxtệp:

    vboxmanage registervm /path/to/machine.vbox
    

2

Điều này cũng hiệu quả với tôi với bản phát hành MacOS của VirtualBox (bản phát hành 4.1.12). Tôi đã đợi 5-10 giây để VirtualBox thoát ra trước khi khởi chạy lại. Tôi đã xem trong Activity Monitor để đảm bảo VBoxSVC đã thoát đúng cách.

Nếu bạn không làm điều này, bạn sẽ gặp một lỗi giống như sau (Tôi đang sao chép và dán thông báo lỗi của người khác đến từ Windows). Nếu bạn gặp lỗi này, đó đơn giản là vì bạn đã không thoát VirtualBox hoặc đợi đủ lâu để VBoxSVC thoát.

Failed to open virtual machine located in E:/<path>/<machine_name>/<machine_name>.vbox.

Cannot register the hard disk 'E:\<path>\<machine_name>\Snapshots/{0ece4bff-9185-4cff-9069-b3d1f4536394}.vdi' {0ece4bff-9185-4cff-9069-b3d1f4536394} 
because a hard disk 'C:\<path>\<machine_name>\Snapshots/{0ece4bff-9185-4cff-9069-b3d1f4536394}.vdi' with UUID {0ece4bff-9185-4cff-9069-b3d1f4536394} already exists.

Result Code: E_INVALIDARG (0x80070057)
Component: VirtualBox
Interface: IVirtualBox {c28be65f-1a8f-43b4-81f1-eb60cb516e66}

2

Trong OS X với VirtualBox v4.3.14, tất cả những gì tôi phải làm là nhấp đúp vào .vboxtệp từ vị trí mới và nó đã mở VirtualBox và thêm nó vào danh sách các máy ảo có sẵn.


Vui lòng không thêm "cảm ơn" làm câu trả lời. Thay vào đó, hãy bỏ phiếu cho câu trả lời mà bạn thấy hữu ích.
Scott

Câu trả lời của tôi không phải là "cảm ơn". Tôi chỉnh sửa từ ngữ để làm cho rõ ràng hơn. Cảm ơn.
Tyson Phalp

2

Có một vị trí lưu trữ mặc định trong cài đặt trong VirtualBox: http://mattvelic.com/default-vm-location/

Bây giờ đã chết. Máy Wayback có nội dung:

http://web.archive.org/web/20131116130725/http://mattvelic.com/default-vm-location

... kiểm tra Tùy chọn trong menu Tệp. Hãy chứng kiến! Mục đầu tiên trong tab Chung là Thư mục máy mặc định. http://web.archive.org/web/20131116130725im_/http://54.225.211.105/wp-content/uploads/2012/11/VB_Preferences.png Tôi đã chỉnh sửa vị trí để trỏ vào ổ lưu trữ của mình và nhanh chóng làm lại VM. Lần này VirtualBox đã tạo cả tệp máy và VDI ở đúng vị trí. Bài học thực sự ở đây là đôi khi giải pháp không cần phải có kỹ thuật. Tôi nghĩ rằng là các chuyên gia CNTT, chúng ta có xu hướng nghĩ rằng câu trả lời cho một vấn đề sẽ phức tạp. Giữ mắt mở cho các giải pháp rõ ràng!


Liên kết này hiện đã chết. Cố gắng không đăng liên kết như câu trả lời. Khi họ chết, SU bị bỏ lại với hành trình để dọn dẹp.
mrtsherman

cập nhật với nội dung từ archive.org
Rebecca

1

Tôi không nghĩ rằng điều này là có thể.

Bạn có thể di chuyển VDI đến vị trí mới, nhưng tôi không nghĩ bạn có thể tránh sửa đổi XML. Là một giải pháp thay thế (nhưng thực tế giống như phiên bản XML) sẽ tạo ra một máy ảo mới với GUI và chọn hình ảnh được di chuyển làm đĩa có phù hợp với nhu cầu của bạn không?


1
Tôi đã có cái nhìn thứ hai về xml và nó thực sự rất đơn giản. Tạo một máy mới là không tốt vì tôi muốn duy trì cài đặt của mình (Tôi không nhớ những gì tôi đã thay đổi, nó có thể hoàn toàn không quan trọng hoặc không).
maaartinus

1

Tôi đã thử phương pháp ban đầu (xóa VDI, đính kèm bản sao mới), nhận được thông báo rằng bản cũ vẫn tồn tại và không thể đính kèm bản sao mới ngay cả khi tôi khởi động lại HĐH (trên Mac OS X El Capitan).

Bản sửa lỗi nằm trong menu / File / Virtual Media Manager, xóa VDI hiện có. Điều này hoạt động ngay cả khi có ảnh chụp nhanh; chỉ cần loại bỏ tất cả các VDI ​​snapshot theo thứ tự ngược lại. Không cần phải đóng và mở lại VirtualBox.


0

Tôi chưa bao giờ sử dụng hộp ảo trên windows nhưng trên Ubuntu bạn di chuyển VDI và trong GUI của hộp ảo, bạn nhấp chuột phải vào VM và sử dụng Menu Cấu hình -> nơi bạn có thể thay đổi bản địa hóa VDI thành nơi bạn di chuyển tệp. Về định nghĩa tệp máy khác, bạn di chuyển chúng và trong GUI bạn đi đến Tùy chọn và thay đổi vị trí của thư mục máy mặc định thành thư mục bạn đã di chuyển.


0

Tôi sử dụng phương pháp này:

  1. Từ VirtualBox GUI, chọn VM của bạn và xóa ổ cứng đính kèm
  2. Sao chép tệp (ví dụ: vdi) sang vị trí mới
  3. Tạo một UUID mới cho .vdi ở vị trí mới với lệnh vboxmanage Internalcommands sethduuid "đường dẫn của tôi tới myhdd.vdi" 6912BF7F-13BB-4E70-A2CA-C92300FEC3DC

    . ).

  4. Bây giờ quay lại GUI VirtualBox, chọn VM của bạn và trong Setttings / Storage đính kèm HD (tệp .vdi) từ vị trí mới của nó.

và thực hiện.


-1

Trong Oracle VM VirtualBox (đã thử nghiệm với phiên bản 6.0.4), chỉ cần tắt VM của bạn -> nhấp chuột phải vào VM trong Trình quản lý VirtualBox -> nhấp vào "Di chuyển ..." -> chọn thư mục mới. Đó là nó!


@Moreaki: Bằng cách này, “mức độ dễ đọc” (và “dễ đọc”) đều được đánh vần mà không một “D”.
Scott
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.