====== 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%