Самый быстрый способ объединить снимки в VirtualBox?

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

Я знаю, что если позвоню

VBoxManage clonehd thedisk.vdi thedisk-full.vdi
(50-70 times) VBoxManage clonehd {uuid-of-snapshot}.vdi thedisk-full.vdi --existing

я получу то, что хочу. Но это занимает очень много времени (более 5 часов, учитывая мое оборудование и начальный размер диска 16G).

и, конечно, я пробовал VBoxManage snapshot delete и странно: не работает на остановленная машина, может потерпеть неудачу на идущей машине и когда она терпит неудачу раз, она потерпит неудачу все последующие звоноки.

есть ли способ сделать простой vdi из ряда снимков-быстрее?

$ VBoxManage --version
3.2.14r75509

(спросила у нее на ServerFault но решили это место более подходящее для этого вопроса)

45
задан Lee 2013-05-03 13:43:52
источник

5 ответов

нашел решение. Это так же просто, как последний шаг из команд, которые я написал здесь. Т. е.

VBoxManage clonehd fullpath/{uuid-of-last-snapshot}.vdi thedisk-full.vdi

поэтому я должен клонировать только последний снимок, а не каждый снимок из цепочки. И это на тысячи процентов быстрее.

uuid можно найти в VBoxManage list hdds | grep VmName | tail

в GUI (на Windows), выберите виртуальную машину, выберите снимки в правом верхнем углу, щелкните правой кнопкой мыши на снимок, который вы хотите, выберите клон... и выберите Полный Клон в диалоге.

46
отвечен Andrey Regentov 2014-10-14 17:02:33
источник

вот техника (проверена на VirtualBox 4.3.4), которая использует "клон" команда для объединения и сжатия всех моментальных снимков в новую виртуальную машину, содержащую один файл VDI:

  1. переименуйте виртуальную машину, чтобы можно было повторно использовать ее текущее имя для клонированной виртуальной машины (вы можно изменить имя виртуальной машины на вкладке "Основные" в настройках "общие").

  2. щелкните правой кнопкой мыши на виртуальной машине и запустите " клон... команда:

    • задайте имя исходного ВМ имя.
    • принять остальные значения по умолчанию, т. е. тип клона: "полный клон"; Снимки: "текущее состояние машины".
  3. удалить старую виртуальную машину (щелкните правой кнопкой мыши на виртуальной машине и запустите " удалить..." команда.)

20
отвечен Stuart Rackham 2013-12-05 04:12:08
источник

вы можете попробовать экспорт до OVF а то импорт вернуть сгенерированный файл.

Как пояснил здесь:

OVF не может описать снимки, сделанные для виртуальной машины. В результате при экспорте виртуальной машины, имеющей моментальные снимки, будет экспортировано только текущее состояние машины, а образы дисков в экспорте будут иметь" сглаженное " состояние, идентичное текущему состоянию виртуальная машина.

в результате у вас будет клонированная виртуальная машина с текущим состоянием без других снимков.

3
отвечен StreakyCobra 2013-05-03 14:59:17
источник

эта операция означает чтение и запись очень больших файлов на одном физическом диске. Единственный способ ускорить это - поместить эти файлы на разные диски, изменив пути в команде VBoxManage. Если машина имеет только один диск, вы можете использовать внешний USB-диск или даже диск в другую машину через сетевую папку (в зависимости от скорости вашей сети)

0
отвечен golimar 2013-05-07 13:28:02
источник

некоторые имеют 10GIB / S LAN, поэтому он может передавать более одного гигабайта в секунду, поэтому он не будет узким местом.

некоторые из них имеют 1GIB / S LAN, поэтому он может передавать более 100 мегабайт в секунду, поэтому он не будет узким местом (если у вас нет действительно быстрого SSD).

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

вы говорите о LAN быть медленнее, но не о USB (2.0, не говоря уже 1.1 или 1.0)намного медленнее.

Что я хотел бы предложить было бы: используйте USB 3.1 Gen2 Тип C или eSATA / SATA / SAS

но всегда используйте второй достаточно быстрый диск.

и еще: клонирование на другой диск и скопировать файл обратно гораздо быстрее, что, используя только один диск, если это SSD или жесткий диск с независимым Multi-головки руки (они могут читать и писать одновременно на двух местах поверхности, каждая голова имеет свою собственную руку, очень дорого, около > 9876€).

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

Так шаги, чтобы потерять все старые состояния на схеме нет дерева снимков:

  1. клонировать с одного жесткого диска на другой, избегайте узких мест
  2. создать новую машину, подключить этот диск, отключить его, настроить его как inmutable
  3. Test это работает (так как это inmutable) вы будете иметь то же состояние
  4. Если вам не нужно оно быть inmutable, то отключите его, измените назад к нормальному, etc
  5. удалить старые снимки машины (сначала восстановить)
  6. удалить временные испытания машины
  7. скопировать обратно на диск виртуальный диск
  8. прикрепить клонированный диск

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

для работы с деревьями snoapshots, всегда думаю о ненужное удаление узла без affeting остальные узлы (только потерять это состояние, но не есть покой, ни один родитель и ни один ребенок не будет affeted, данные будут объединены на всем первом подуровне ребенка, а следовательно, медленный процесс) и на восстановить как уничтожая всех своих детей на всех подуровнях (теряя все состояния после восстановления, он удаляет только файлы, поэтому очень быстрый процесс, всего за несколько секунд).

вот!

P. D.: Как ужасно VBOX назвал эти две операции (удалить только один узел = удалить; удалить все дочерние узлы на всех подуровнях = восстановить)

-2
отвечен Claudio 2017-02-20 14:03:39
источник

Другие вопросы performance virtualbox virtualization snapshot

X