45

У меня есть видео с довольно большим количеством снимков, скажем, 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, но решил, что это место больше подходит для этого вопроса)

5 ответов5

46

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

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

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

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

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

21

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

  1. Переименуйте ВМ, чтобы вы могли повторно использовать ее текущее имя для клонированной ВМ (вы можете изменить имя ВМ на вкладке «Основные» в настройках «Общие»).

  2. Щелкните правой кнопкой мыши на виртуальной машине и выполните команду «Клонировать ...»:

    • Установите имя к оригинальному имени виртуальной машины.
    • Примите оставшиеся значения по умолчанию, т.е. Тип клона: «Полный клон»; Снимки: «Текущее состояние машины».
  3. Удалить старую виртуальную машину (щелкните правой кнопкой мыши на виртуальной машине и выполните команду «Удалить ...»).командовать).

3

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

Как объяснено здесь:

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

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

0

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

-2

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

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

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

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

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

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

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

Лучше всего клонировать только виртуальный жесткий диск в нужном вам состоянии, затем проверить его работоспособность, затем ВОССТАНОВИТЬ верхний уровень (удалит все снимки), затем удалить жесткий диск из хранилища и подключить этот новый.

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

  1. Клонируйте с одного жесткого диска на другой, избегайте узких мест
  2. Создайте новый компьютер, подключите этот диск, отключите его, настройте его как неизменяемый
  3. Проверьте это работает (так как это неизменно) у вас будет то же состояние
  4. Если вам нужно, чтобы он не был неизменным, отключите его, вернитесь к обычному состоянию и т.д.
  5. Удалить старые снимки машины (сначала ВОССТАНОВИТЬ)
  6. Удалить временную тестовую машину
  7. Скопируйте обратно на диск виртуальный диск
  8. Прикрепить клонированный диск

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

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

То есть!

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .