Как сжать чрезмерно увеличившийся виртуальный диск VirtualBox

У виртуальных динамических дисков VDI, созданных в программе VirtualBox есть одна особенность, которая при определённых обстоятельствах может доставить пользователю некоторые неудобства. При копировании на них массивов данных динамические виртуальные диски имеют свойство расширяться, но если затем вы удалите с такого диска все файлы, его размер останется прежним. Таким образом виртуальная машина может раздуться до весьма значительных размеров, заняв на физическом носителе неоправданно много места.

Ключ resize, предназначенный для изменения размера виртуального диска VirtualBox в данном случае бесполезен, так как работает он только в одну сторону — в сторону расширения диска. Чтобы сжать виртуальный диск, необходимо использовать другой ключ — compact. Но перед тем как приступать к сжатию, нужно удалить с виртуального диска все ненужные файлы, а затем выполнить его зачистку с помощью утилиты Sdelete, созданной известным программистом Марком Руссиновичем и входящей в пакет средств администрирования Windows Sysinternals. Также необходимо удалить все снимки виртуальной машины, в противном случае вы можете получить ошибку.

Примечание: утилита Sdelete используется для очистки разделов и дисков в ОС Windows, для очистки дисков в Linux следует использовать утилиту ZeroFree.

Sdelete имеет маленький вес и не требует установки.

Sdelete

Поместите её внутри запущенной виртуальной машины в корень системного раздела, а затем, открыв от имени администратора командную строку, выполните такие команды:

cd C:\
sdelete.exe -s -z C:

Команды CMD

Аналогичным образом зачистите свободное пространство пользовательского раздела.

sdelete.exe -s -z D:

После этого завершите работу виртуальной машины, от имени администратора откройте в базовой системе командную строку и последовательно выполните две этих команды:

cd C:\Program Files\Oracle\VirtualBox
VboxManage.exe modifyhd "D:\Oracle VM VirtualBox\Windows 10 x86 Ent 1607.vdi" --compact

VirtualBox

Первой командой мы переходим в расположение утилиты VboxManage.exe, а второй производим сжатие виртуального диска с помощью команды modifyhd и ключа compact. Путь к файлу VDI у вас будет свой, также не забывайте о прямых кавычках, если в пути или имени файла есть пробелы. Процедура сжатия занимает больше времени, чем расширение (на это нужно всего несколько секунд), так как утилите приходится работать с реально занятым дисковым пространством.

А теперь, наверное, самый интересный вопрос. Как и от каких виртуальных разделов будет отнято дисковое пространство?

От обеих, причём забрано будет всё виртуальное пространство, на котором нет файлов, — именно на столько будет сжат файл VDI. Однако визуально в самой виртуальной машине ничего не изменится. Разделы в ней по-прежнему будут иметь «свободное место», а сам размер дисков видимо останется таким же, каким он был до сжатия. Но это все, конечно, пустяки. Главное, что таким образом вы уменьшите размер файла VDI, высвободив тем самым место на физическом жёстком диске.

Утилита Sdelete: technet.microsoft.com/ru-ru/sysinternals/bb897443.aspx

Оцените Статью:

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (3 оценок, среднее: 5,00 из 5)
Загрузка...

3 комментария

  • Спасибо тебе добрый человек!
    А то я тут с бубнами скакал по этому вопросу.
    И нашел свой путь, правда немного не удобный и не правильный, но рабочий.
    И выглядит так :
    1) С диска в гостевой системе удаляется всё лишнее .
    2) При загрузке запускаем clonezilla live и копируем диск в образ (Фишка в том , что копируются только данные). Кстати возможно acronis тоже подойдет, но я больше использую *nix системы и мне он не очень подходит ..
    3) Удаляется диск и создается такой-же новый с идентичными размером.
    4) Восстанавливаем систему из образа .
    И собственно всё. Немного долго , но можно использовать не только с vdi и не только в virtualbox. Может кому будет полезным ...

    • Борис добрый день, могли бы конкретнее объяснить пожалуйста
      Подключаем clone zila к виртуалке и грузимся с него, как копирвоать диск в образ и где его разместить ? в саму виртуалку он не влезет ведь
      3)удалить диск и создать новый - это как ?

  • Может кому-то пригодится. Не заработало сразу все вышеописанное, т.е. размер vdi не уменьшился. Версия sdelete была 1.54 (гостевая ОС Win7x64). Скачал SDelete v2.04 и запустил "sdelete64.exe -s -z C:\". Только тогда VBoxManage c ключом --compact сработал как надо и размер диска vdi был уменьшен.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *