Каков рекомендуемый способ перемещения виртуальной машины VirtualBox на другой компьютер?

230

Я использую VirtualBox 4.1.x на своей машине с Ubuntu и настроил несколько виртуальных машин. Поскольку существует несколько способов перемещения виртуальной машины в VirtualBox на другой компьютер, мне было интересно, какой из них рекомендуется:

  1. Используйте утилиту «Импорт / Экспорт».
  2. Скопируйте всю папку виртуальной машины, содержащую .vdiи .vboxфайлы.
  3. Клонируйте VDI с помощью «Virtual Media Manager», а затем заново создайте виртуальную машину на целевой машине, но с использованием клонированного VDI в качестве жесткого диска.

Я успешно использовал 1-й метод несколько раз, и он всегда работал. Проблема в том, что после экспорта и импорта образ диска преобразуется в VMDK, а не в VDI!

Второй метод , вероятно , самый простой , но я не уверен , что простое копирование файлов будет работать или нет на целевой машине. При поиске этого метода я обнаружил, что у некоторых людей возникли проблемы, в результате которых им пришлось отредактировать файл VirtualBox.xml, чтобы решить эту проблему!

Наконец, есть третий метод , но он требует дополнительной работы по созданию виртуальной машины, аналогичной исходной конфигурации виртуальной машины, что нежелательно.

Из приведенного выше объяснения ясно, что мой желаемый метод - второй, но мне нужен совет специалиста по этому вопросу, если он работает или нет. Я не хочу, чтобы редактирование XML мешало мне!

Какой лучший способ безопасной передачи моей виртуальной машины на другой компьютер с VirtualBox?

Сейед Мухаммед
источник
2
Просто перенесите файлы и разместите их в одном месте.
Ramhound
2
@seyed 1. отказоустойчивое решение с высокими показателями успеха / воспроизводимость не всегда может быть рекомендовано и / или лучшим решением проблемы и тиски наборота . Однако, поскольку вы спрашиваете о рекомендуемом решении, вариант (2) из вашего списка (хотя и подвержен ошибкам) ​​будет самым быстрым и, следовательно, рекомендуемым! Опции (1) и (3) попадают в категорию отказоустойчивых , так как они будут работать в большинстве случаев. PS: после экспорта, некоторые (большинство?) Параметры конфигурации могут быть изменены (если используются параметры 1/3)! ... Надеюсь это поможет.
Амар

Ответы:

160

Хорошо сделано для проведения вашего исследования. Я регулярно использую все три варианта.

  1. (Используйте утилиту «Импорт / Экспорт») . Это самый простой способ, потому что он объединяет всю виртуальную машину в один файл и передает его без проблем почти каждый раз. Тем не менее, по моему опыту, при создании файла OVA или OVF для экспорта он отбрасывает все моментальные снимки и при неправильном выполнении может привести к созданию файла VMDK. При повторном импорте виртуальной машины вы сможете выбрать тип создаваемого файла жесткого диска: VDI или VMDK.

  2. (Скопируйте всю папку виртуальной машины, содержащий .vdiи .vboxфайлы) . Это мой предпочтительный вариант, и хотя мне пришлось несколько раз редактировать XML-файл, я сам виноват в том, что что-то испортил. Убедитесь, что при копировании виртуальной машины вы получите ВСЕ файлы, связанные с ней. Проблемы, с которыми я столкнулся, заключались в том, что некоторые моментальные снимки и дополнительные файлы VDI находились в неправильном каталоге и не были скопированы должным образом. Если вы скопируете все файлы (и разрешения), у вас не должно возникнуть никаких проблем.

  3. (Клонируйте VDI, используя «Virtual Media Manager», а затем воссоздайте виртуальную машину на целевой машине, но используя клонированный VDI в качестве жесткого диска). Это менее желательно, потому что тогда у вас есть 2 копии виртуальной машины, и это может вызвать проблемы с лицензированием, сетевые проблемы и т. Д., В зависимости от того, как вы клонируете файл VDI.

Таким образом, я определенно рекомендую вариант 2, просто убедитесь, что вы получите все необходимые файлы, когда вы переместите его.

tbenz9
источник
Спасибо за ответ. Я подожду еще несколько дней, чтобы узнать, есть ли у кого-то еще какие-либо вопросы. (+1)
Сейед Мухаммед
Похоже, никому нечего добавить ... Так что я отмечаю это как ответ.
Сейед Мохаммед
Просто дополнительная ссылка для Варианта 1, ссылка , после импорта, формат VDMK, кажется, он определен и не может быть изменен.
simongcc
1
@tbenz Как избежать получения VMDK при экспорте?
Дон Румми
13
Просто для завершения: если вы делаете Вариант 2, сделайте это на целевой машине: Virtualbox> Machine> Add> [перейдите в папку, где находятся все файлы VM]. Вероятно, хорошая идея поместить новые файлы виртуальных машин в ту же папку, где хранятся все остальные ваши виртуальные машины.
Донн Ли
45

Метод 2 теперь работает хорошо (с VirtualBox 4.0 и выше) , без каких-либо изменений XML:

  1. Остановите вашу виртуальную машину
  2. Выход из VirtualBox
  3. Скопируйте папку VM в новое место
  4. Перезапустите VirtualBox и удалите старую виртуальную машину.
  5. Перейдите в меню «Машина» ≥ Добавить и перейдите к старой папке.

Это оно!

PS: У меня есть VirtualBox 4.3.20 на OSX 10.10

Посмотрите это сообщение на форуме VirtualBox для более подробной информации.

Дэвид
источник
4
Не могу поверить, что за него проголосовали не так, как следовало бы! Это самый простой способ (слишком легкий!) При перемещении виртуальных машин в пределах одной ОС. Успешно перенес две виртуальные машины с диска C на диск D. Моя версия Win7 64bit с Virtualbox 5.x
Эдвин Ип
1
Это на самом деле не работает просто переместить файл VDI, только всю виртуальную машину.
DustWolf
1
@DustWolf Правильно, но это то, о чем вопрос ОП.
Дэвид
@DustWolf Вот что сказал Дэвид. Msgstr "Скопировать папку VM в новое место". Насколько мне известно, эта папка содержит всю виртуальную машину. Я что-то пропустил?
Никос
@RestlessCobra да, новая папка содержит всю ВМ.
Дэвид
17

Мой предпочтительный вариант также вариант 2:

  1. Скопируйте всю папку VM, содержащую файлы .vdi и .vbox.

Но иногда происходит несоответствие UUID. Часто это происходит, если вы просто копируете образ диска VDI одного компьютера на другой компьютер, но это происходило и во время прямых копий полных каталогов.

Итак, если это сообщение вы получаете после перемещения виртуальной машины и попытки ее запуска в новой настройке:

Не удалось открыть жесткий диск.

Не удается зарегистрировать жесткий диск, поскольку жесткий диск с UUID уже существует.

Просто зайдите в каталог вашей виртуальной машины; конечно, измените фактический путь, чтобы он соответствовал фактическому пути, по которому вы идете:

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

И выполните эту команду, чтобы назначить диску новый UUID:

VBoxManage internalcommands sethduuid Sandbox.vdi
JakeGould
источник
9

В случае, если кто-то еще ищет ответ на этот вопрос, я успешно перенес 5 виртуальных машин Virtual Box в другую установку Win7 на новом жестком диске на той же машине (по сути, это переход с одной гостевой ОС на другую на том же ПК). Я понимаю, что драйверы на совершенно новой машине, вероятно, будут различаться и потенциально могут негативно повлиять на ход, но я задокументировал процесс ниже в надежде, что он может кому-то помочь.

  • Не было необходимости клонировать виртуальные машины или изменять XML-файл. Версия VB была довольно актуальной: 4.3.12r93773.
  • Новые копии виртуальных машин были созданы в новой папке / общем диске, чтобы сохранить существующие / старые виртуальные машины без изменений. Я все еще могу загружаться со старого жесткого диска, который я сохранил для избыточности / разрешения проблем, пока я не буду доволен своей новой настройкой; так что я могу получить доступ к старым виртуальным машинам в их прежнем состоянии, если это необходимо.
  • Буквы дисков будут различаться / могут не понадобиться в зависимости от настроек.

На старом хосте Win7:

  1. Убедитесь, что все виртуальные машины выключены.

На новом хосте Win7:

  1. Создайте новую папку с именем X: \ NewVMs \ VirtualBox VM (с новой машины Win7, чтобы убедиться, что права доступа в порядке)
  2. Копировать / Вставить (не перетаскивать) все виртуальные машины и содержимое соответствующей папки из старой папки в эту папку (использует новые разрешения)
  3. Удалить VirtualBox (если установлен)
  4. Удалить папку .virtualbox и все содержимое (если есть)
  5. ПЕРЕЗАГРУЗИТЕ, чтобы подтвердить, что не осталось никаких программных файлов или записей реестра (при удалении старого VirtualBox).
  6. Установите / переустановите VirtualBox (убедитесь, что вы используете ту же версию, что и VirtualBox, на которой виртуальные машины были созданы на старом хосте / машине (в моем случае версия 4.3.12r93773)) ВАЖНО: (Не устанавливайте
    флажок, чтобы открыть / запустить VirtualBox в конце установки)
  7. Скопируйте / вставьте (не перетаскивайте) папку и содержимое .virtualbox со старого хоста Win7 (обычно это C: \ Users [имя пользователя] .VirtualBox)
  8. Теперь откройте VirtualBox
  9. Задайте параметры для новой папки создания виртуальных машин по умолчанию с тем же путем к файлу, что и для вновь созданной папки виртуальных машин VirtualBox: X: \ NewVMs \ VirtualBox VM
  10. Проверка статуса виртуальных машин

Удачи.

Стивен Келли
источник
Хотя это информативный ответ, он не касается того, что спросили. Другой вопрос может быть более подходящим местом для вашего ответа.
akTed
@Steven, «... по существу , переход от одного хоста OS к другому ...»?
питонларри
2

Для особого случая, когда:

  • у вас есть только одна виртуальная машина (или вы хотите переместить все свои виртуальные машины),
  • и хост - это то же оборудование с той же версией ОС (или переустановка той же ОС на ту же машину)

Если вы в этом случае, то все просто:

  1. Выключите VirtualBox на обоих хостах.
  2. Скопируйте .config/VirtualBoxи VirtualBox VMsпапку с исходным хоста.
  3. Скопируйте эти папки на хост назначения.
  4. Запустите VirtualBox на хосте назначения
Николас Рауль
источник
1

4-й путь

В VirtualBOX:

  1. Выключите ВМ
  2. Щелкните правой кнопкой мыши и удалите виртуальную машину (не удаляйте файлы)
  3. Перейдите в файл> Virtual Media Manager и удалите .vdi
  4. Перейдите в «Файл»> «Установки»> «Основные» и установите папку по умолчанию на новом устройстве.
  5. Создание новой виртуальной машины с использованием экспертного режима для создания виртуальной машины без жесткого диска

В проводнике:

  1. Найдите файл .vdi и скопируйте его
  2. Перейдите в новую папку машины по умолчанию, внутри будет папка VM
  3. Вставьте файл .vdi в новую папку VM

Вернуться в VirtualBOX:

  1. Щелкните правой кнопкой мыши виртуальную машину и откройте настройки
  2. Перейдите в раздел «Хранилище»> «Контроллер: SATA» и добавьте жесткий диск, нажмите «Выбрать существующий диск» 11.Выберите файл .vdi в новой папке VM.

Примечание. Если способ 2 нарушает вашу установку VirtualBOX, перейдите в C: \ Users \ .VirtualBox, удалите VirtualBox.xml и переименуйте VirtualBox.xml-prev в VirtualBox.xml.

peterjtk
источник
0

Я также использовал метод 2 для перемещения своей виртуальной машины, и мне не нужно было вносить никаких изменений в какие-либо XML-файлы, но я получил пару ошибок с USB и общим доступом к файлам, и ниже показано, как я их исправил вместе с процессом:

  1. Скопируйте виртуальную машину со старого компьютера на новый. Файлы виртуальной машины отличаются от самой виртуальной машины Oracle. Эти файлы обычно находятся в c: \ users \\ VirtualBox VMs . Я взял всю виртуальную машину VirtualBox \ part и скопировал ее в аналогичное место на новом ПК. Это копирует все виртуальные машины, которые у меня были на оригинальном ПК.

  2. Теперь на новом ПК запустите виртуальный ящик и перейдите в Меню> Компьютер> Добавить и выберите файл .vbox из скопированной папки. Вот и все.

  3. Теперь, когда я запускаю виртуальную машину на новом ПК, я получаю сообщение об ошибке при загрузке:

введите описание изображения здесь

  1. Я не знаю, почему USB-контроллер не работал, потому что то же самое работало на оригинальном компьютере. Я пошел дальше и установил VirtualBox Extension Pack

  2. Эта установка была немного странной, потому что установочная загрузка не была исполняемым файлом. Я нажал на Oracle_VM_VirtualBox_Extension_Pack-5.1.4-110228.vbox-extpack и выбрал «Выбрать программу из списка установленных программ», а затем выбрал виртуальный ящик Oracel и установил расширение. Это решило проблему, но другое, менее желательное решение - вы можете отключить USB.

  3. Если у вас были общие папки в исходной виртуальной машине, они могут отличаться, и вы получите ошибку. Просмотрите их в «Настройки» >> «Общая папка» и удалите поврежденные. Сообщение об ошибке будет выглядеть

этот,

Это все.

зар
источник
-1

zar, первым делом, первым делом ... никогда не перемещайте машину, которая находится в сохраненном состоянии, перед перемещением вы должны закрыть гостя, а не просто сохранить состояние.

Также убедитесь, что вы используете одну и ту же версию VirtualBOX на обоих хостах, но не только версию VirtualBOX, но и версию пакета расширений ... или, по крайней мере, новый хост имеет более высокую версию, но никогда не более низкую версию на любом из двух тысяч.

И, наконец, я усвоил это сложным путем: удалите конфигурацию папки SHARED в VirtualBOX перед перемещением машины, а затем заново создайте ее правильным образом ... очень важно, когда хост - это разные ОС (хосты Windows / Linux).

И как примечание ... я всегда, всегда использую неизменяемые файлы VDI жесткого диска для ОС, а также для VDI данных (таким образом, один и тот же VDI DATA может использоваться для более чем гостевой системы), особенно уловка для 4GiB pagefile.sys

Последняя часть, повторное использование неизменяемого файла VDI, усложняет задачу, VirtualBOX имеет БОЛЬШУЮ ОШИБКУ.

Чтобы увидеть ошибку в действии:

  • Создайте один неизменяемый VDI (например, тот, который я использую для pagefile.sys)
  • Создайте две или три виртуальные машины на VirtualBOX
  • Переместите один из них в верхнюю часть списка (просто чтобы не повредить кому-либо из ваших)
  • Создайте резервную копию файлов .vbox каждой из созданных вами машин (для сравнения после того, как произошла ошибка)
  • Подключите этот неизменяемый VDI к более чем одной из этих машин (кроме той, что находится вверху списка)
  • Теперь посмотрите на .vbox компьютера, который находится вверху списка.

Эта машина была отредактирована, в ней есть ссылки на другие неизменяемые VDI машины.

Итак, ОШИБКА: отредактируйте одну машину, добавив неизменный VDI, который используется другой, влияет на машину в верхней части списка.

Почему, черт возьми, я повторно использую тот же VDI 4GiB на всех машинах Windows? Легко, это MBR-диск с разделом FAT32, куда я помещаю pagefile.sys, так как он неизменен, все виртуальные машины создадут файл в своей папке моментальных снимков, где они сохранят изменения, и которые будут потеряны при следующей загрузке, поэтому я делаю не нужно 4 ГБ для каждого гостя, хранящегося на диске хоста, только один ... таким образом, я сохраняю много ГиБ, так как у меня есть более 20 различных окон для тестирования приложений, которые я разрабатываю для себя, все комбинации (XP, Vista , 7, 8, 8.1, 10) * (32 Бита, 64 Бита) * (Как и при первой установке, после каждого ServicePack, после полного обновления Windows), я получаю много, много гостей ... так что на всех Я разделяю неизменный 4GiB VDI для виртуального оперативной памяти (pagefile.sys).

И если вы позволите BUG пойти дальше, попробуйте переместить одну из thous-машин на другой хост VirtualBOX (помните, что это всего лишь виртуальная машина с конфигурацией на них, и на ней еще нет гостя), вы увидите, что VirtualBox не позволяет вам добавьте их, так как некоторые VDI отсутствуют (это FALSE и TRUE, так как такая первая машина содержит ссылки на такие VDI, которые гарантированно находятся на правильной машине).

Теперь сравните файлы .VBOX всех них с предыдущими BackUp ... обратите внимание, как один из них был изменен неправильно? ... да, он находится в верхней части списка.

Что ж, об этой ОШИБКЕ сообщили в VirtualBOX несколько лет назад, они до сих пор не могут ее исправить ... и это вызывает много, много проблем.

Кроме того, если вы переместите верхнюю на виртуальных машинах в более низкую позицию, закройте VirtualBox и перезапустите его ... сообщит вам, что некоторые машины повреждены и не могут быть запущены ... да, первая из списка нужно относиться в другой форме, если вы не хотите получать много неприятностей.

Это действительно плохой БАГ, который занял у меня много дней (несколько лет назад), я выучил его трудным путем!

Я преодолел это, имея машину, которую назвал:

  • 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>

Симпатичная ошибка, не решаемая годами.

Хорошо, чтобы переместить такие машины ... вы должны вручную отредактировать файлы .VBOX, чтобы поместить все ссылки на такие диски на новый хост на первом компьютере (тот, который находится в верхней части списка) до добавления .VBOX. файлы в список, поэтому при их добавлении в VirtualBOX есть ссылки на отсутствующие VDI (отсутствующие, вызванные большой ошибкой).

Это происходит потому, что каждый раз, когда вы подключаете VDI, который используется на другой машине, VirtualBOX обновляет файлы .VBOX двух машин (тот, который принадлежит машине, которую вы используете) и первый в списке.

Я не совсем уверен, что произойдет, когда в списке, к первому не прикреплен такой общий VDI ... лучше не пробовать, видел, что я вижу.

Поэтому переход на другой HOST намного сложнее, чем кажется, из-за очень плохой реализации внутренней структуры файлов .VBOX и из-за очень больших ошибок, когда их редактирует VirtualBOX.

Сбой:

  • Внутренняя структура (XML) зависит от HOST (Windows или Linux)
  • Редактирование одной машины может изменить другую, а не только редактируемую
  • ... что еще ?

Нужно больше ... я всегда переносил машины, делая это (и не было проблем, никогда никогда):

  1. Запишите список всех машин (порядок, группировка и т. Д.)
  2. Обратите внимание на первый в списке (все его настройки)
  3. Обратите внимание на все свойства машин, которые я хочу перенести на другой хост
  4. Скопируйте файлы .vbox как файлы .txt (тот, что вверху списка + все машины, которые я хочу перенести)
  5. Создайте заново все машины (и установите специальную в верхней части списка) внутри VirtualBox на новом хосте.
  6. Закройте VirtualBox на новом хосте
  7. Diff сравнивает старый .txt с новыми файлами .vbox и копирует из .txt в .vbox некоторые части по-человечески, а не просто копирует и вставляет
  8. Откройте VirtualBox и прикрепите все VDI в правильном порядке.
  9. Снова закройте VirtualBox на новом хосте
  10. Diff сравнивает старый .txt с новыми файлами .vbox и «исправляет» из .txt в .vbox некоторые части по-человечески, а не просто копирует и вставляет

Все остальное (папка моментальных снимков и файлы VDI) я копирую их обычным способом (File System Copy & Paste).

Вся эта тяжелая ручная работа вызвана Big BUG VirtualBox: он редактирует / изменяет компьютер, который не был изменен, когда вы присоединяете неизменяемый VDI, который используется более чем на одном компьютере, иначе достаточно будет просто скопировать и вставить файл .VBOX (после исправление путей к общим папкам и т. д.).

Лаура
источник
-2

Скопируйте папку, содержащую машину, в место назначения, затем из меню «Машина» ---> «Добавить», а затем выберите файл vbox, а НЕ файл vdi. Для меня это прошло без нареканий. Не уверен, что мне повезло или это должно сработать.

Тиа Зол
источник