====== 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)
Для ещё большей наглядности скриншот
Диск в менеджере носителей
{{:virtualization:vbox_disk_resize_1.png?nolink&500|}}
Windows
{{:virtualization:vbox_disk_resize_2.png?nolink|}}
===== Как увеличить/уменьшить размер диска =====
Для изменения размера диска нужно запустить ''vboxmanage'' с опцией ''modifymedium''. В прошлых релизах VirtualBox опция называлась ''modifyhd'' или ''modifyvdi''.
Из [[https://www.virtualbox.org/manual/ch08.html#vboxmanage-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%
Далее остаётся только расширить диск внутри гостевой ОС
{{:virtualization:vbox_disk_resize_4.png?nolink&600|}}
===== Как сжать VDI диск =====
TL;DR 1. Заполнить диск нулями. 2. Сжать диск.
Шаг 1. Выполняем дефрагментацию диска (зачем?!) в гостевой системе (только для Windows).
Шаг 2. Заполняем диск нулями
**Для гостевой системы Windows**
Для Windows есть специальная утилита [[https://technet.microsoft.com/en-us/sysinternals/bb897443|SDelete]].
Запускаем
sdelete.exe c: -z
Usage: sdelete [-p passes] [-s] [-q] ...
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).
Результат
{{:virtualization:vbox_disk_resize_3.png?nolink|}}
**Для гостевой системы 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%