Virtualbox, об'єднуючи знімки та базовий диск


9

У мене є віртуальна машина з приблизно 30 знімками у галузях. Поточний шлях розвитку становить 22 знімки плюс базовий диск. Кількість файлів, мабуть, впливає зараз на IO та розробник ноутбука, який я використовую (не знаю, чи це проблеми з роботою диска хоста із загальним розміром 140 ГБ у багатьох фрагментах чи просто факт, що це потрапляння секторів, розподілених у великій кількості файлів).

Я хотів би об'єднати поточну гілку розробки знімків разом із базовим диском, але я не впевнений, що наступна команда дасть правильний результат. Я не в змозі завантажувати цей диск після завершення процедури (5-6 годин).

vboxmanage clonehd "C:\VPC-Storage\.VirtualBox\Machines\CRM\Snapshots\{245b27ac-e658-470a-b978-8e62137c33b1}.vhd" "E:\crm-20100624.vhd" --format VHD --type normal

Чи може хтось підтвердити, чи це правильний підхід чи ні?


Щоб додати деяку інформацію, помилка, яку я отримую, - це не помилка VirtualBox, а помилка завантаження з Windows. Він хоче запустити ремонт запуску, але оскільки я не знаю помилки, я не знаю виправлення. Запуск вікон зазвичай призводить до тривалого очікування та синього екрану. Це очікується чи я застосував неправильний метод під час клонування диска?
Генрік

Я використовував VBoxManage (на хості Windows, гість Ubuntu), як ви запропонували у своєму запитанні, і він належним чином об'єднав знімки в єдине вихідне зображення диска
Chaulky

1
Так, це правильний підхід. Краще вказати лише джерело UUID замість його імені файлу, тоді ви впевнені, що VBox зможе вирішити вкладені файли.
rustyx

Відповіді:


7

Що ви хочете зробити, це в діалоговому вікні знімків виберіть батьківський знімок, який ви хочете згодом об'єднати всі знімки в один VDI.

З вашого опису звучить так, що це корінь дерева.

Клацніть правою кнопкою миші та виберіть "Видалити знімок".

Це зробить те, що ви хочете --- це об'єднає всі зміни з усіх знімків дитини в єдиний VDI.

Крім того - клонування образу диска, який знаходиться в останньому знімку - також зливає диск, що розрізняє його з його батьківським (і його батьківським, тощо), поки ви не перейдете до "нормального" типу жорсткого диска).

Я підозрюю, що "видалення знімка" виконує команду clonehd.

Перевірте свої налаштування VM (зокрема IO APIC увімкнено / вимкнено) і переконайтеся, що вони відповідають.


Я думаю, що це наразі єдиний спосіб зробити це, однак це вручну, що вимагає багато разів клацання в графічному інтерфейсі.
Генрік

3

Якщо ви хочете зберегти лише один знімок, перетворіть його у свій поточний стан, а потім експортуйте VM та повторно імпортуйте його. Експортовані прилади не зберігають історію знімків.

Або ви можете використовувати цей скрипт vboxmerge.py для обробки об'єднання для вас. Враховуючи кількість знімків у вас, я б очікував, що цикл експорту / імпорту буде швидшим.


2

Ось методика (протестована на VirtualBox 4.3.4), яка використовує команду 'Clone' для об'єднання та компактних знімків до нового VM, що містить один файл VDI:

  1. Перейменуйте VM, щоб ви могли повторно використовувати його поточне ім'я для клонованого VM (ви можете змінити ім'я VM на вкладці "Основні" в налаштуваннях "Загальні").

  2. Клацніть правою кнопкою миші на VM та запустіть команду "Клоніровать ...":

    • Встановіть ім'я до оригінального імені VM.
    • Прийміть решта за замовчуванням, тобто тип клону: 'Повний клон'; Знімки: "Поточний стан машини".
  3. Видаліть старий VM (клацніть правою кнопкою миші на VM та запустіть команду "Видалити ...").


0

Якщо ваш хост - це Windows або ви можете отримати доступ до VHD-файлів із вікна, існує хитрість МЕРГУВАТИ всі зміни у батьківських, онукових тощо.

Він використовує інструмент DiskPart та дві команди:

select vdisk file="whatever your file is, with full path"

merge vdisk depth=#

Де # - кількість рівнів ієрархії, які ви хочете перемістити, 1 для батьків-батьків, 2 для батьків-батьків та ін.

Це робиться на місці, набагато менше часу, ніж клонування тощо.

Пам'ятайте, що після об'єднання всіх проміжних VHD-файлів можна видалити (це не видаляє їх для вас) і не забудьте приєднати до VirtualBox того батьківського, де ви об’єдналися.

Приклад:

Disk3.vhd - дитина Disk2.vhd, Disk2.vhd - дитина Disk1.vhd

Якщо ви хочете на Disk1.vhd всі зміни Disk3.vhd просто використовуйте depth=2та виберіть Disk3.vhd. Якщо ви хочете, щоб на Disk1.vhd усі зміни Disk2.vhd просто використовуйте, depth=1виберіть Disk3.vhd.

Також пам’ятайте, що немає необхідності в негарних знімках VirtualBox, ви можете використовувати команду DiskPart create vdisk, щоб створити диск для розмежування від існуючого (який також може бути дифференціальним диском тощо), також можна створити величезне дерево.

Для всього іншого: Плакат використовує VHD (не VDI), тому для доступу до цих дисків у гостя (для Хоста, якщо Хост - це Windows), можна використовувати рідні інструменти, такі як DiskPart та Disk Management.

Для вас, плакат: Пам’ятайте, що завжди маєте повне резервне копіювання до об'єднання, клон VirtualBox не працює на місці, він створює новий файл (копіюється при записі), але об’єднання DiskPart працює на місці (змініть файл, не створюйте новий).

Сподіваємось, що це може дати ще один підхід, оскільки VHD / VHDX використовується (не вірно для VMDK, VDI тощо), лише для Windows Host).

Примітка: Windows 7 і новіші версії, XP та Vista можуть встановлювати VHD за допомогою зовнішнього інструменту M $, але DiskPart не підтримує VHD для XP та Vista ... все це також працює у випусках HOME (7 і вище), не потрібно Видання SERVER.

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