Який рекомендований спосіб переміщення VM VirtualBox на інший комп'ютер?


232

Я використовую VirtualBox 4.1.x на своїй машині Ubuntu, і я створив кілька віртуальних машин. Оскільки існує кілька способів переміщення віртуальної машини в VirtualBox на інший комп'ютер, мені було цікаво, який із них є рекомендованим способом:

  1. Використовуйте утиліту "Імпорт / експорт".
  2. Скопіюйте всю папку віртуальної машини, що містить файли .vdiта .vbox.
  3. Клоніруйте VDI за допомогою "Virtual Media Manager", а потім відтворіть VM на цільовій машині, але використовуючи клонований VDI як жорсткий диск.

Я успішно використовував 1-й метод кілька разів, і він завжди працював. Проблема полягає в тому, що після експорту та імпорту зображення диска перетворюється на VMDK, а не на VDI!

Другий метод , ймовірно , найпростіший , але я не впевнений , що просте копіювання файлів буде працювати чи ні на цільовій машині. Під час пошуку цього методу я виявив, що у деяких людей виникли проблеми, в яких їм довелося редагувати файл VirtualBox.xml, щоб вирішити його!

Нарешті, є 3-й метод , але він вимагає додаткової роботи над створенням VM, подібного до оригінальної конфігурації VM, що небажано.

З вищенаведеного пояснення видно, що бажаний метод є другим, але мені потрібна консультація експерта з цього питання, працює він чи ні. Я не хочу, щоб жодне редагування XML перешкоджало!

Який найкращий спосіб безпечної передачі моїх машин VM на інший комп'ютер за допомогою VirtualBox?


2
Просто перенесіть файли та розмістіть їх у тому самому місці.
Рамхаунд

2
@seyed 1. Безпечне рішення з високими показниками успішності / відтворюваності не завжди може бути рекомендованим та / або найкращим рішенням проблеми та навпаки . Однак, оскільки ви запитуєте про рекомендоване рішення, варіант (2) зі свого списку (хоча схильний до помилок) був би найшвидшим і тому рекомендується! Варіанти (1) і (3) потрапляють під відмовостійкої категорії, так як вони будуть працювати в більшості випадків. PS: після експорт, деякі (найбільш?) Налаштування конфігурації можуть бути змінені (якщо використовуються параметри 1/3)! ... Сподіваюся, що це допомагає.
Амар

Відповіді:


162

Молодці для проведення ваших досліджень. Я регулярно використовую всі три варіанти.

  1. (Використовуйте утиліту "Імпорт / Експорт") . Це найпростіше, оскільки він об'єднує весь VM в один файл і передає його без проблем майже кожен раз. Однак, на мій досвід при створенні файлу OVA або OVF для експорту він викидає всі знімки і, якщо це зроблено неправильно, може призвести до файлу VMDK. При повторному імпорті VM ви повинні мати можливість вибрати тип файлу HDD, який ви хочете створити, VDI або VMDK.

  2. (Скопіюйте всю папку віртуальної машини, що містить файли .vdiта .vbox) . Це мій кращий варіант, і хоча мені довелося кілька разів редагувати XML-файл, я сам винен, що щось зіпсував. Переконайтеся, що при копіюванні VM ви отримуєте ВСІ файли, пов’язані з ним. Проблеми, з якими я стикався, були, коли певні знімки та вторинні VDI-файли знаходились у неправильному каталозі та не були скопійовані належним чином. Якщо ви копіюєте всі файли (та дозволи), у вас не виникне жодних проблем.

  3. (Клоніруйте VDI за допомогою "Virtual Media Manager", а потім відтворіть VM на цільовій машині, але використовуючи клонований VDI як жорсткий диск). Це менш бажано, оскільки тоді у вас є 2 копії VM, і це може спричинити проблеми з ліцензуванням, проблеми з мережею тощо тощо, залежно від способу клонування файлу VDI.

Підводячи підсумок, я б точно рекомендував варіант 2, просто переконайтесь, що ви отримаєте всі необхідні файли, коли ви переміщуєте його.


Дякую за відповідь. Я зачекаю ще кілька днів, щоб побачити, чи є ще хтось. (+1)
Seyed Mohammad

Схоже, нікому нічого не можна додати ... Тож я позначаю це як відповідь.
Відбувся Мохаммед

Просто додаткове посилання на варіант 1, посилання , після імпорту формат VDMK, здається, він визначений і не може бути змінений.
simongcc

1
@tbenz Як я можу не отримати VMDK при експорті?
Дон Роммі

13
Для завершення: якщо ви виконали варіант 2, зробіть це на цільовій машині: Virtualbox> Machine> Add> [перейдіть до папки, де є всі файли VM]. Можливо, гарна ідея помістити нові файли VM в ту саму папку, де зберігаються всі ваші інші VM.
Донн Лі

47

Метод 2 працює добре зараз (з VirtualBox 4.0 і новіших версій) , без будь-яких змін XML:

  1. Зупиніть свою віртуальну машину
  2. Вийдіть з VirtualBox
  3. Скопіюйте папку VM на нове місце
  4. Перезавантажте VirtualBox та видаліть старий VM.
  5. Перейдіть до меню машини ≥ Додати та перегляньте стару папку.

Це воно!

ps: У мене є VirtualBox 4.3.20 на OSX 10.10

Дивіться цю публікацію на форумі VirtualBox для більш детальної інформації.


4
Не можу повірити, що це не так багато голосів, як це має бути! Це найпростіший спосіб (занадто простий!) При переміщенні ВМ в одній ОС. Успішно переміщено два VM з диска C на диск D. Мінус Win7 64bit з Virtualbox 5.x
Едвін Іп

1
Це насправді не працює, щоб просто перемістити файл VDI, лише всю віртуальну машину.
DustWolf

1
@DustWolf Право, але ось в чому полягає питання ОП.
Девід

@DustWolf Це так сказав Девід. "Скопіюйте папку VM в нове місце". Що стосується мене, ця папка містить всю віртуальну машину. Я щось пропускаю?
Нікос

@RestlessCobra так, нова папка містить цілий VM.
Девід

17

Мій кращий варіант - також варіант 2:

  1. Скопіюйте всю папку VM, що містить файли .vdi та .vbox.

Але іноді трапиться невідповідність UUID. Часто це трапляється, якщо ви просто копіюєте зображення диска VDI однієї машини на іншу машину, але у мене це траплялося і під час прямих копій повних каталогів.

Отже, якщо це повідомлення, яке ви отримуєте після переміщення віртуальної машини та спроби запустити його в нових налаштуваннях:

Не вдалося відкрити жорсткий диск.

Неможливо зареєструвати жорсткий диск, оскільки жорсткий диск з UUID вже існує.

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

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

І запустіть цю команду, щоб призначити диску новий UUID:

VBoxManage internalcommands sethduuid Sandbox.vdi

9

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

  • Не було потреби в клонуванні ВМ або зміні файлу xml. Версія VB була досить актуальною: 4.3.12r93773.
  • Нові копії віртуальних машин були створені в новій папці / спільному диску, щоб зберегти існуючі / старі VM недоторканими. Я все ще можу завантажуватися зі старого жорсткого диска, який я зберегла для надмірності / вирішення проблеми, поки не буду задоволена своєю новою установкою; тож я можу отримати доступ до старих ВМ в їх колишньому стані, якщо потрібно.
  • Літери накопичувача будуть різними / можуть не знадобитися залежно від налаштувань.

На старому хості Win7:

  1. Переконайтесь, що всі VM відключені.

На новому хості Win7:

  1. Створіть нову папку під назвою X: \ NewVM \ VirtualBox VM (з нової машини Win7 для забезпечення дозволів)
  2. Скопіюйте / вставте (не перетягуйте) всі VM та пов'язаний вміст папки зі старої папки в цю папку (використовує нові дозволи)
  3. Видаліть VirtualBox (якщо встановлено)
  4. Видаліть папку .virtualbox і весь вміст (за наявності)
  5. ПОВЕРНІТЬСЯ, щоб підтвердити відсутні програми програм чи записи реєстру (якщо ви видалите старий VirtualBox).
  6. Встановити / перевстановити VirtualBox (переконайтеся, що ви використовуєте ту ж версію, що і VirtualBox, на якій створені віртуальні комп'ютери на старому хості / машині (в моєму випадку ver. 4.3.12r93773))
    ВАЖЛИВО: (Не вибирайте галочку для відкриття / запустити VirtualBox в кінці інсталяції)
  7. Скопіюйте / вставте (не перетягуйте) папку і вміст .virtualbox із старого хоста Win7 (як правило, C: \ Users [ім'я користувача] .VirtualBox
  8. Тепер відкрийте VirtualBox
  9. Встановіть налаштування для нової папки створення за замовчуванням VM до того ж шляху файлу, що і щойно створена папка VM VirtualBox: X: \ NewVMs \ VirtualBox VMs
  10. Стан тесту ВМ

Удачі.


Хоча це інформативний відповідь, він не стосується того, що йому задали. Ще одне питання може бути більш підходящим місцем для Вашої відповіді.
akTed

@Steven, "... по суті, перехід від однієї хост- системи до іншої ..."?
пітонхоррі

2

Для особливого випадку, коли:

  • у вас є лише одна ВМ (або ви хочете перемістити всі свої віртуальних машин),
  • і хост - це те саме обладнання з тією ж версією ОС (або перевстановлення однієї ОС на ту ж машину)

Якщо ви в цьому випадку, то все легко:

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

1

4-й шлях

У VirtualBOX:

  1. Вимкніть живлення
  2. Клацніть правою кнопкою миші та видаліть VM (не видаляйте файли)
  3. Перейдіть у файл> Віртуальний медіа-менеджер та видаліть .vdi
  4. Перейдіть у меню Файл> Налаштування> Загальне та встановіть папку машини за замовчуванням на нове місце
  5. Створіть новий експертний режим використання VM для створення VM без жорсткого диска

У File Explorer:

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

Назад у VirtualBOX:

  1. Клацніть правою кнопкою миші VM та відкрийте налаштування
  2. Перейдіть на Зберігання> Контролер: SATA та додайте жорсткий диск, натисніть кнопку Оберіть наявний диск 11.Виберіть файл .vdi у новій папці VM

Примітка: Якщо метод 2 порушує встановлення VirtualBOX, перейдіть до C: \ Users \ .VirtualBox та видаліть VirtualBox.xml та перейменуйте VirtualBox.xml-prev у VirtualBox.xml


0

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

  1. Скопіюйте віртуальну машину зі старого на новий ПК. Файли віртуальної машини відрізняються від самої віртуальної машини Oracle. Зазвичай ці файли знаходяться в c: \ users \\ VM VirtualBox \ . Я зібрав всю віртуальну машину VirtualBox \ частина і скопіював її в подібне місце на новому ПК. Це копіює всі віртуальні машини, які я мав на оригінальному ПК.

  2. Тепер на новому ПК запустіть віртуальне вікно та перейдіть до Меню> Машина> Додати та виберіть .vbox файл із папки, скопійованої. Це воно.

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

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

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

  2. Ця установка була трохи дивною, тому що завантаження не було виконуваним файлом. Я натиснув на Oracle_VM_VirtualBox_Extension_Pack-5.1.4-110228.vbox-extpack і вибрав "Вибрати програму зі списку встановлених програм", а потім вибрав Oracel virtualbox, і він встановив розширення. Це вирішило проблему, але ще одним менш бажаним рішенням ви можете відключити usb.

  3. Якщо ви мали спільні папки в оригінальній машині виправлення, вони можуть відрізнятися, і ви отримаєте помилку. Перегляньте їх у Налаштуваннях >> Спільна папка та видаліть порушені. З'явиться повідомлення про помилку

це.

Це все.


-1

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

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

І нарешті, я навчився цього важким способом, перед тим, як перемістити машину, видаліть конфігурацію розділеної папки на VirtualBOX, а потім заново створіть її правильним способом ... дуже важливо, коли хостом є різні ОС (хости Windows / Linux).

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

Ця остання частина, повторне використання незмінного файлу VDI, робить щось трохи складніше, VirtualBOX має BIG BUG.

Щоб побачити помилку в дії:

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

Ця машина була відредагована, вона містить посилання на інші машини, що інтуїруються VDI.

Таким чином, BUG: Редагування однієї машини, додаючи незмінний VDI, який використовується іншим, впливає на машину вгорі списку.

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

І якщо ви відпустите BUG далі, спробуйте перенести одну з машин на інший хост VirtualBOX (пам’ятайте, що це лише віртуальна машина з конфігурацією на них і на них ще не встановлений гість), ви побачите, що VirtualBox не дозволяє вам додайте їх, оскільки деякі VDI відсутні (це ЛІЖНЕ і ПРАВИЛЬНЕ; це означає, що така перша машина містить посилання на такі VDI, які намагаються отримати на правильній машині).

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

Що ж, про цю BUG повідомляли 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 (відсутні, викликані великою BUG).

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

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

Тож перехід на інший HOST набагато складніший, ніж те, що, здається, є дуже поганою реалізацією внутрішньої структури файлів .VBOX і через дійсно великі помилки, коли VirtualBOX редагує їх.

Помилки:

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

Потрібно більше ... я завжди мігрую машини, роблячи це (і не було проблем, ніколи):

  1. Візьміть до уваги список усіх машин (замовлення, групування тощо)
  2. Візьміть на замітку першу в списку (всю її конфігурацію)
  3. Зверніть увагу на всі властивості машин, які я хочу перенести на інший хост
  4. Скопіюйте файли .vbox у формат .txt (той, що знаходиться вгорі списку + всі машини, які я хочу перенести)
  5. Відтворити всі машини (і мати спеціальну у верхній частині списку) всередині VirtualBox на новому хості
  6. Закрийте VirtualBox на новому хості
  7. По-різному порівняйте старий .txt з новими файлами .vbox і скопіюйте з .txt у .vbox деякі частини по-людськи, а не лише Copy & Paste.
  8. Відкрийте VirtualBox і приєднайте всі VDI в правильному порядку
  9. Знову Закрийте VirtualBox на новому хості
  10. По-різному порівняйте старий .txt з новими .vbox-файлами та 'виправте' з .txt до .vbox деякі частини по-людськи, а не лише Copy & Paste

Всі інші (папки знімків та файли VDI) я копіюю їх у звичайний спосіб (Копіювання файлів і вставка файлової системи).

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


-2

Скопіюйте папку, що містить апарат до місця призначення, потім з меню: "Машина" ---> "Додати", а потім виберіть файл vbox, а не файл vdi. Для мене це пройшло бездоганно. Не впевнений, чи пощастило мені, чи це повинно працювати так.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.