Как уменьшить размер виртуальных дисков VDI в VirtualBox
У любимой многими системы виртуализации VirtualBox есть одна неприятная особенность. Размер динамического виртуального диска (.vdi) в процессе работы может сильно увеличиться, однако при удалении данных в гостевой операционной системе, его объем не уменьшается.
Довольно странно, что за всё время существования проекта VirtualBox, так и не появилось удобного способа уменьшения размера виртуальных дисков VDI в автоматическом режиме. Инструмент, о котором я сегодня расскажу, является скорее костылём, но хорошо хоть так, чем совсем никак. Сразу оговорюсь, что дальнейшее описание справедливо в случае, когда хостовая и гостевая машины работают по управлением Windows.
Как уменьшить размер виртуальных дисков VDI
Будем считать, что все данные, которые больше не пригодятся, а также временные файлы, обновления и инсталляторы, вы уже удалили из своей гостевой операционной системы.
Для достижения максимального эффекта, "обнуляем" свободное место на диске гостевой ОС. Обнуление – это операция, при которой в сектора HDD или ячейки SSD записываются нули. В этом нам поможет утилита для безопасного удаления файлов SDelete (Secure Delete) от Sysinternals (дочерняя компания Microsoft).
Для "обнуления" диска C: выполните следующую команду:
sdelete.exe c: -z
Загрузить утилиту SDelete и почитать подробнее про её использование можно по этой ссылке https://learn.microsoft.com/ru-ru/previous-versions/bb897443(v=msdn.10)
Ну что, все подготовительные этапы завершены и пришло время вернуть у виртуальной машины не используемое место. Для этого в VirtualBox имеется штатная утилита VBoxManage, правда у неё нет графического интерфейса ,а потому снова воспользуемся командной строкой Windows или запустите Windows PoweShell.
Общий синтаксис команды, выглядит следующим образом:
VBoxManage.exe modifymedium --compact c:\path\to\thedisk.vdi
В старый версиях утилиты VBoxManage вместо modifymedium нужно прописать modifyhd с параметром "-compact". Данная команда сжимает динамически выделяемые образы дисков виртуальной машины (VDI) удаляя блоки, содержащие только нули.
Для примера сожмем динамический диск виртуальной машины win7test.vdi, расположенный на диске `D:\virtual` хостовой машины:
'C:\Program Files\Oracle\VirtualBox\VBoxManage.exe' modifymedium --compact D:\virtual\win7test.vdi






Если считаете статью полезной,
не ленитесь ставить лайки и делиться с друзьями.