Я предпочитаю делать так. Устанавливаю гостевую ОС с использованием динамических виртуальных дисков типа VHD, настраиваю всё что нужно, чищу ФС от мусора, выключаю VM и сжимаю образ из хостовой ОС (у меня это Windows) при помощи системной программы DiskPart. Набор команд для сжатия VHD-образа:
DiskPart
Select VDisk File="Полный_путь_VHD-файла"
Attach VDisk ReadOnly
Compact VDisk
Detach VDisk
Exit
Можно создать txt-файл (кодировка Кириллица Windows-1251) с таким содержимым, только без первой команды и запускать его командным файлом с примерно таким содержанием (кодировка Кириллица OEM 866):
код CMD-файла
Код:

:: Получаем полный путь до папки, в которой находится данный CMD-файл. Нужно учитывать,
:: что в конце обязательно будет слэш. Далее, мы его удалим.
Set "Current_Dir=%~dp0"
:: Если последним символом в пути будет слэш, то удаляем его. Кстати, например, ICACLS.exe
:: отказывается работать с папкой в конце пути которой слэш.
If /I "%Current_Dir:~-1%" == "\" Set "Current_Dir=%Current_Dir:~0,-1%"
:: Консольная утилита для управления разделами жестких дисков.
Set "Disk_Part=%SystemRoot%\System32\DiskPart.exe"
"%Disk_Part%" /s "%Current_Dir%\Имя_файла.txt"
Потом сжимаю образ архиватором и храню архив на внешнем HDD. В случае чего, всегда можно привести ОС в порядок заменой текущего образа на «эталонный». Особенно это полезно, если в гостевой ОС запускалась какая-то зараза.