Я видел это как с VBox родным форматом VDI, так и с форматом VMDK. Хотя я удаляю файлы с виртуального диска, я вижу, что он постоянно растет. У меня есть смутное представление о том, что обнуление файлов не происходит с виртуальными дисками по этой ссылке. Когда я попытался сделать это с SDelete (как сказано в ссылке), это не уменьшило размер диска VDi. У меня есть приложения, которые после установки увеличивают диск до 10 ГБ каждый раз. Я считаю, что должен быть какой-то простой способ обнулить его, чем проходить через утомительный процесс, есть ли такой? Есть ли в VirtualBox какая-либо опция, позволяющая поддерживать небольшой размер виртуального диска?
3 ответа
Вот пакетный скрипт, который я использую для сжатия всех файлов VDI:
@echo off
for /d %%d in (*.*) do (
cd "%%d"
for %%f in (*.vdi) do (
echo Compacting %%f . . .
echo Initial size: %%~zf
"C:\Program Files\VirtualBox\VBoxManage.exe" modifymedium --compact disk "%%f"
echo Post compact size: %%~zf
echo.
)
cd ..
)
Просто сохраните его в папке с виртуальными машинами и запустите ...
При создании новой виртуальной машины вам будет предложено создать виртуальный жесткий диск. У вас есть два варианта для диска, фиксированный или динамически распределяемый. Это описания (из виртуальной коробки) обоих типов дисков.
Исправлено: исправленный файл жесткого диска может занять больше времени для создания в некоторых системах, но часто быстрее использовать
Распределение динамически: файл с динамически размещенным жестким диском будет занимать только место на вашем физическом жестком диске, пока он заполняется (до максимального фиксированного размера), хотя он не будет уменьшаться автоматически после освобождения места на нем.
Скорее всего, вы устанавливаете его динамически, чтобы диск не уменьшался автоматически при освобождении места на нем.
Удаление файлов с виртуального диска не уменьшает его размер по соображениям производительности.
Когда файл удаляется, он оставляет дыру, в которой ранее находились данные файла. Когда создаются новые файлы или данные записываются на диск, они заполняют эти дыры. Файл будет увеличиваться при необходимости для размещения большего количества данных, но никогда не будет уменьшаться.
Зачем?
Удаление данных из файла в любом месте, кроме конца, является трудоемкой операцией. Данные должны быть перемещены, чтобы заполнить дыры, и в случае виртуального диска многие внутренние ссылки на расположения данных должны быть обновлены. Даже при использовании SSD удаление даже небольшого файла может занять несколько минут. Это явно не приемлемо.
Вам нужно использовать vboxmanage --compact, чтобы удалить дыры и сжать виртуальный диск.