Изменение размера виртуального диска в VirtualBox
Увеличение размера
Предположим, что нам стало не хватать дискового пространства на виртуальной машине. Можно, конечно, добавать ещё один виртуальный диск, но в Oracle VirtualBox, также, есть возможность увеличить уже имеющийся виртуальный диск.
Для увеличения размера виртуального диска, сначала удаляем все снимки состояния данной ВМ. Затем воспользуемся утилитой VBoxManage, идущей в комплекте с Virtualbox. Открываем командную строку и выполняем в ней команду, подобную этой:
"C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" modifyhd "E:\VirtualBox\VMs\Debian\Debian_disk1.vdi" --resize 102400
где:
- C:\Program Files\Oracle\VirtualBox\ - путь до каталога с установленной VirtualBox (у вас может отличаться);
- E:\VirtualBox\VMs\Debian\Debian_disk1.vdi - путь до образа виртуального диска, размер которого мы изменяем;
- 102400 - размер в мегабайтах, до которого мы хотим увеличить наш виртуальный диск (в данном случае - 100ГБ).
После выполнения данной команды, запускаем виртуальную машину и можем видеть, что на виртуальном диске появилось нераспределённое пространство, на которое теперь можно растянуть нужные разделы, средствами гостевой ОС, либо загрузившись с LiveCD (например, можно воспользоваться diskmgmt.msc или Acronis Disk Director в Windows, GParted в Linux, и т.п. утилитами ).
Однако, опция --resize работает только для увеличения размера диска. Для уменьшения - алгоритм будет другой.
Уменьшение размера
В VirtualBox очень удобно использовать динамически расширяющиеся жёсткие диски, которые не резервируют сразу всё отведённое им место на хост-машине, а расширяются по мере необходимости. Но при всём их удобстве, есть у них и недостаток: если с такого диска удалить файлы, то размер его образа на хост машине не уменьшится, а останется прежним.
Чтобы cжать образ этого диска до минимальных размеров, для начала нужно очистить его неразмеченные области (от остатков удалённых файлов). Для этого, в гостевой ОС нужно воспользоваться специальной утилитой, обнуляющей свободные секторы.
В Windows - можно использовать утилиту Sdelete. Утилита не требует установки, ее достаточно распаковать и запустить из командной строки команду:
Sdelete.exe -s -z
В Linux - есть утилита zerofree.
В моём примере на ВМ установлен Debian. Устанавливаем zerofree через систему управления пакетами (если ещё не установлена):
# apt install zerofree
Для очистки раздела, его нужно отмонтировать, либо перемонтировать в режиме read-only (только чтение), иначе zerofree выдаст ошибку. Если требуется перемонтировать коренной раздел, то сначала нужно перейти в однопользовательский режим:
# init 1
В данном случае будем чистить раздел /dev/sda3 , который у меня смонтирован в /home - на нём хранятся все пользовательские файлы:
# mount -o remount,ro -t ext4 /dev/sda3
Запускаем zerofree для очистки нужного раздела:
# zerofree -v /dev/sda3
Для выхода из однопользовательского режима выключаем ВМ:
# shutdown -h now
После очистки диска и выключения ВМ, удаляем все снимки состояния данной ВМ, запускаем консоль и выполняем команду:
"C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" modifyhd "E:\VirtualBox\VMs\Debian\Debian_disk1.vdi" --compact
Эта команда сожмёт образ виртуального диска до минимального размера.
Следует отметить, что в интернете есть информация, что можно увеличить размер только ДИНАМИЧЕСКИХ виртуальных дисков форматов VDI или VHD, уменьшить - только VDI. Лично я использую динамические диски в формате VDI (родной формат VirtualBox), с которым всё вышеописанное точно работает. С другими форматами не эксперементировал.
Полезные ссылки
Заметки о Windows - Изменение размера виртуального диска в Oracle VirtualBox
Shrink virtual hard drive on Ubuntu as Guest and Host OS using zerofree
Комментариев: 0