Содержание
VirtualBox: изменение размера диска
Исходные данные:
- VirtualBox 5.1.18 (хост система macOS Sierra).
- Гостевая система Windows 7 Professional, динамический VDI диск.
Рано или поздно пользователи VirtualBox сталкиваются с тем, что диск (динамический) гостевой системы стал занимать много места на хост системе.
Диск в гостевой системе 25 ГБ. Занято в Windows только 13 ГБ, но на хост системе диск занимает почти 19 ГБ.
Вывод команды VBoxManage
$ VBoxManage showmediuminfo /Users/dx/VirtualBox\ VMs/w7_pro/w7_pro_d1.vdi UUID: dad0bd3d-3e10-4b0d-9e25-e79e6126be5d Parent UUID: base State: locked write Type: normal (base) Location: /Users/dx/VirtualBox VMs/w7_pro/w7_pro_d1.vdi Storage format: VDI Format variant: dynamic default Capacity: 25600 MBytes Size on disk: 18823 MBytes Encryption: disabled In use by VMs: w7_pro (UUID: f2f5c52d-4463-4245-91e4-7eb10bca9021)
Для ещё большей наглядности скриншот
Диск в менеджере носителей
Windows
Как увеличить/уменьшить размер диска
Для изменения размера диска нужно запустить vboxmanage
с опцией modifymedium
. В прошлых релизах VirtualBox опция называлась modifyhd
или modifyvdi
.
Из документации VirtualBox:
For compatibility with earlier versions of VirtualBox, the "modifyvdi" and "modifyhd" commands are also supported and mapped internally to the "modifymedium" command.
Для хост системы Mac/Linux
$ VBoxManage modifymedium disk [pandorabox].vdi --resize [new_size]
Для хост системы Windows
$ C:\Program Files\Oracle\VirtualBox\VboxManage.exe modifymedium disk [pandorabox].vdi --resize [new_size]
Увеличим диск с 25 ГБ до 30 ГБ. Размер указывается в МБ. 30 ГБ = 30*1024 = 30720.
$ vboxmanage modifymedium disk /Users/dx/VirtualBox VMs/w7_pro/w7_pro_d1.vdi --resize 30720 0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
Далее остаётся только расширить диск внутри гостевой ОС
Как сжать VDI диск
TL;DR 1. Заполнить диск нулями. 2. Сжать диск.
Шаг 1. Выполняем дефрагментацию диска (зачем?!) в гостевой системе (только для Windows).
Шаг 2. Заполняем диск нулями
Для гостевой системы Windows
Для Windows есть специальная утилита SDelete.
Запускаем
sdelete.exe c: -z
Usage: sdelete [-p passes] [-s] [-q] <file or directory> ... sdelete [-p passes] [-z|-c] [drive letter] ... -a Remove Read-Only attribute. -c Clean free space. -p passes Specifies number of overwrite passes (default is 1). -q Don't print errors (Quiet). -s or -r Recurse subdirectories. -z Zero free space (good for virtual disk optimization).
Результат
Для гостевой системы Linux
Для Linux вариантов несколько:
dd if=/dev/zero of=zero bs=512k rm zero
Или через утилиту zerofree
apt-get install zerofree telinit 1 mount -o remount,ro /dev/sda1 zerofree -v /dev/sda1 shutdown -hP 0
Или через утилиту sfill
(входит в состав пакета secure-delete
; только для Debian)
sfill -llvz /
Шаг 3. Выключаем гостевую машину.
Шаг 4. Запускаем modifymedium
с опцией compact
.
Для хост системы с Mac
VBoxManage modifymedium disk [path/to/disk.vdi] --compact
Для хост системы с Linux
vboxmanage modifymedium disk [path/to/disk.vdi] --compact
Для хост системы с Windows
VBoxManage.exe modifymedium disk [c:\path\to\disk.vdi] --compact 0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
Обсуждение