Я использую виртуальную машину Windows на 128 ГБ SSD. Я выделил виртуальной машине 127 ГБ для виртуальной машины, думая, что она может занять все пространство на диске. То, что я забыл учесть, - это дисковое пространство, необходимое для 3 снимков виртуальной машины, которые я сделал и которые хранятся на том же физическом диске. Теперь на диске осталось 0 места, и виртуальная машина не будет работать.

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

Failed to perform an online medium merge (VERR_DISK_FULL)

Это когда виртуальная машина включена, но приостановлена. Если я принудительно выключу виртуальную машину и попытаюсь выполнить слияние, я получу:

Failed to delete the snapshot SomeSnapshot of the virtual machine somevm.
Could not merge the medium '/var/vms/somevm/Snapshots/{58220add-b745-4d38-874b-c788f0e31560}.vdi' to '/var/vms/somevm/Snapshots/{181dd674-a65a-44af-afa4-d7ee00cf6c21}.vdi' (VERR_DISK_FULL).

Какой самый простой способ выбраться из этого беспорядка? Хост ОС работает под управлением Linux Mint.

1 ответ1

0

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

  1. Поскольку я использую LVM, я сначала создаю новый LV для хранения файлов:

    sudo lvcreate -l 100%FREE -n vm-resize somevg
    sudo cryptsetup create vm-resize /dev/mapper/somevg-vm--resize --key-file /dev/urandom
    sudo mkfs.ext4 -m 1 /dev/mapper/vm-resize
    
  2. Затем я копирую образы дисков ВМ в новый LV:

    cd /var/vms
    sudo mkdir vm-resize
    sudo mount /dev/mapper/vm-resize vm-resize/
    sudo cp -a somevm/* vm-resize/
    
  3. Затем я монтирую новый LV по тому же пути, на котором был смонтирован мой SSD:

    umount somevm/ vm-resize/
    sudo mount /dev/mapper/vm-resize somevm/
    
  4. Наконец, я могу "удалить" все снимки (которые объединяют их с текущим образом диска):

    snapshots=( $(VBoxManage snapshot somevm list | sed -E 's/.*(\w{8}-\w{4}-\w{4}-\w{4}-\w{12}).*/\1/') )
    for uuid in "${snapshots[@]}"; do
        VBoxManage snapshot somevm delete "$uuid"
    done
    
  5. Но мы еще не закончили: затем я перемонтирую два своих LV в их первоначальном месте:

    sudo umount somevm/
    sudo mount somevm/
    sudo mount /dev/mapper/vm-resize vm-resize/
    
  6. Затем нам нужно переместить новый, меньший образ диска обратно на исходный диск:

    sudo rm somevm/Snapshots/*.vdi
    sudo cp -a vm-resize/somevm.vdi somevm/somevm.vdi
    

    На этом этапе вы хотите проверить виртуальную машину, чтобы убедиться, что она работает.

  7. Затем, наконец (по-настоящему на этот раз), выполните очистку:

    sudo umount vm-resize
    sudo cryptsetup remove vm-resize
    sudo lvremove somevg/vm-resize
    

Так легко, правда?

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