Увеличение размера виртуального диска в VirtualBox

В интернетах находятся тонны однотипных инструкций по изменению размеров жесткого диска, используемого в виртуальной машине. Большинство сводится к тому, что рекомендует ввести в командной строке VBoxManage modifyhd «<path-to-vdi>» —resize <newsize-in-MB> и всё. При этом мало где (на русском я так и не нашел адекватных мануалов) упоминается, что при наличии снимков системы (snaphot) решение не такое тривиальное и должно начинаться смерживанием всех снапшотов в единый файл. О том, как правильно увеличить диск, читайте ниже.

Дано: виртуальная машина с Linux Ubuntu в качестве гостевой и Windows 7 в качестве хоста. Гостевая система содержит энное количество снапшотов.

Требуется:  увеличить размер образа для гостевой системы.

Решение: Первым делом надо склеить снимки, делается это либо через командную строку последовательным удалением и просмотром оставшихся снимков по примерному сценарию VBoxManage snapshot list | VBoxManage snapshot delete, либо через GUI VitrualBox:

snapshot1Если этого не сделать, а сразу перейти к расширению диска, то при последующих операциях со снапшотами будет возникать ошибка “virtualbox could not merge the medium VERR_INVALID_PARAMETER”. Более того, размер диска вряд ли изменится внутри гостевой машины.

При большом количестве снапшотов или появлении ошибок при склеивании идеальным выходом будет просто скопировать текущую виртуальную машину и выбрать в опциях клонирования режим «Полная копия». Тогда все снапшоты склеятся автоматически и вы избежите рутинных ручных операций и всевозможных ошибок. snapshot2

Единственная ошибка, которая может возникнуть после такого подхода при работе с машиной в консоли, — это повторяющийся UUID гостевой машины. Его можно изменить с помощью команды VBoxManage internalcommands sethduuid «path-to-the-new-disk».

Только после проделанных операций можно ввести команду VBoxManage modifyhd «<path-to-vdi>» —resize <newsize-in-MB>.

Последний штрих — указание новых размеров в гостевой машине. Для этого запуститесь с LiveCD любого Linux дистрибутива (та же Ubuntu подойдет) и с помощью Gparted укажите новые размеры раздела.

snapshot3

Небольшой нюанс: если в гостевой машине помимо раздела с системой имеются еще какие-то, например swap, то может получиться так, что требующий увеличения раздел окажется отделен от неразмеченной области, выделенной нами ранее. В случае со swap’ом его проще просто удалить и создать заново в конце диска, в случае с дополнительным разделами можно создать раздел в неразмеченной области и примонтировать его к требующему увеличения.

Ссылки: