Содержание
- Способы увеличения размера диска в VirtualBox
- Способ 1: Утилита VBoxManage
- Использование VBoxManage в Windows
- Использование VBoxManage в Linux
- Способ 2: Создание второго виртуального накопителя
- Создание дополнительного накопителя в VirtualBox
- Подключение виртуального диска в Windows
- Подключение виртуального диска в Linux
- Вопросы и ответы
При создании виртуальной машины в программе VirtualBox пользователю необходимо указать объем, который он хочет выделить под нужды гостевой ОС. В некоторых случаях выделенного количества гигабайт со временем может перестать хватать, и тогда актуальным будет вопрос об увеличении объема виртуального накопителя.
Точно рассчитать размер, который понадобится после установки системы в ВиртуалБокс, удается не всегда. Из-за этого некоторые пользователи сталкиваются с нехваткой свободного пространства в гостевой ОС. Есть два способа добавить свободное пространство к виртуальной машине без удаления образа:
- Использование специальной утилиты от VirtualBox;
- Добавление второго виртуального жесткого диска.
Способ 1: Утилита VBoxManage
В арсенале VirtualBox есть утилита VBoxManage, которая позволяет управлять размерами дисков через командную строку или терминал в зависимости от типа операционной системы. Мы рассмотрим работу этой программы в Windows 10 и CentOS. Условия для изменения объема в этих ОС следующие:
- Формат хранения: динамический;
- Тип диска: VDI или VHD;
- Состояние машины: выключена.
Прежде, чем начать изменение, вам нужно узнать точный размер диска гостевой ОС и путь, где хранится виртуальная машина. Это можно сделать через VirtualBox Менеджер.
На панели меню выберите «Файл» > «Менеджер виртуальных носителей» или просто нажмите Ctrl+D.
Напротив ОС будет указан виртуальный размер, а если выделить ее кликом мыши, то внизу появится информация о расположении.
Использование VBoxManage в Windows
- Запустите командную строку с правами администратора.
- Введите команду:
CD C:Program FilesOracleVirtualBox
Это стандартный путь для установки ВиртуалБокс. Если папка Oracle с файлами у вас находится в другом месте, то после CD пропишите ее местонахождение.
- Когда директория сменится, пропишите следующую команду:
vboxmanage modifyhd "Путь до виртуальной машины" --resize 33792
Например:
vboxmanage modifyhd "D:Virtualbox VMsWindows 10Windows 10.vdi" --resize 33792
"D:Virtualbox VMsWindows 10Windows 10.vdi"
— путь, где хранится сама виртуальная машина в формате .vdi (обратите внимание на кавычки — без них команда не будет работать).--resize 33792
— атрибут, который ставится через пробел от закрывающих кавычек. Он обозначает новый объем диска в мегабайтах.Будьте осторожны, этот атрибут не добавляет указанное количество мегабайт (в нашем случае 33792) к уже существующему, а меняет текущий объем диска. В виртуальной машине, которая была взята для примера, ранее имела объем диска 32 ГБ, и при помощи данного атрибута он был увеличен до 33 ГБ.
После успешного изменения объема диска необходимо настроить саму виртуальную ОС, поскольку она будет продолжать видеть прежнее количество ГБ.
- Запустите операционную систему.
- Нажмите Win+R и пропишите команду diskmgmt.msc.
- Отобразится основной виртуальный диск, помеченный синим цветом. Рядом с ним будет находиться добавленная через утилиту VBoxManage область — она помечена черным цветом и имеет статус «Не распределена». Это значит, что формально область существует, но фактически не может быть использована, например, для хранения данных.
- Чтобы добавить этот объем к рабочему виртуальному пространству, кликните по основному диску (обычно это С:) правой кнопкой и выберите вариант «Расширить том».
- Запустится Мастер работы с томами.
- Не меняйте настройки, если хотите добавить к тому всю имеющуюся нераспределенную область, и перейдите к следующему шагу.
- Кликните «Готово».
- Теперь можно увидеть, что (С:) стал больше ровно на 1 ГБ, который до этого был не распределен, а область, помеченная черным цветом, исчезла. Это значит, что виртуальный диск увеличился в размере, и им можно продолжать пользоваться.
Дальнейшие действия возможны исключительно на Windows 7 и выше. Windows XP не поддерживает возможность расширения тома, поэтому потребуется использование сторонних утилит вроде Acronis Disk Director.
Использование VBoxManage в Linux
Вам потребуются root-права для работы с терминалом и самой утилитой.
- Пропишите команду
vboxmanage list -l hdds
- В строке UUID скопируйте значение и вставьте его в эту команду:
vboxmanage modifyhd ВАШ_UUID --resize 25600
- Запустите утилиту GParted Live. Чтобы сделать ее загрузочной, в VirtualBox Менеджере зайдите в настройки машины.
- Переключитесь на раздел «Носители», и в «Контроллер: IDE» добавьте скачанный GParted Live. Для этого нажмите на «Пусто» и в правой части выберите образ оптического диска с утилитой GParted, как показано на скриншоте.
- Сохраните настройки и запустите машину.
- В загрузочном меню выберите «GParted Live (Default Settings)».
- Конфигуратор предложит выбрать раскладку. Для расширения диска этот параметр не важен, поэтому можете выбрать любой вариант.
- Укажите желаемый язык, введя его номер.
- На вопрос о предпочтительном режиме введите ответ «0».
- Запустится GParted. В окне будут отображены все разделы, в том числе добавленная через VBoxManage область.
- Правым кликом мыши по системному разделу откройте контекстное меню (обычно это sda2), и выберите пункт «Изменить раздел или переместить».
- При помощи регулятора или поля для ввода установите тот объем, до которого вы хотите расширить раздел. Для этого сдвиньте регулятор вправо:
Либо в поле «Новый размер» впишите число, которое указано в строке «Максимальный размер».
- Создастся запланированная операция.
- На панели инструментов нажмите «Правка» > «Применить все операции» или кликните по самой запланированной операции правой кнопкой мыши и выберите ее применение.
- В окне подтверждения нажмите на «Apply».
- Прогресс выполнения отобразится в отдельном окне.
- По завершении вы увидите, что размер виртуального диска стал больше.
- Виртуальную машину можно выключить, и из настроек ее загрузки убрать носитель GParted Live.
В Linux невозможно расширить раздел, пока запущена сама ОС.
Способ 2: Создание второго виртуального накопителя
Способ изменения размера диска через утилиту VBoxManage не единственный и не самый безопасный. Гораздо проще подключить второй виртуальный накопитель к созданной машине.
Конечно, имеет смысл создавать второй диск, только если планируется существенно увеличить объем накопителя, и не планируется хранить файл (-ы) большого размера.
Опять же рассмотрим способ добавления накопителя на примерах Windows 10 и CentOS.
Создание дополнительного накопителя в VirtualBox
- Выделите виртуальную машину и на панели инструментов нажмите на кнопку «Настроить».
- Переключитесь на раздел «Носители», нажмите на иконку создания нового виртуального HDD и выберите «Добавить жесткий диск».
- В окне с вопросом используйте вариант «Создать новый диск».
- Тип накопителя — VDI.
- Формат — Динамический.
- Имя и размер — по вашему усмотрению.
- В списке носителей информации появится ваш диск, сохраните эти настройки, нажав на «ОК».
Подключение виртуального диска в Windows
Эта ОС после подключения накопителя все еще не будет видеть дополнительный HDD, поскольку он не был инициализирован.
- Запустите виртуальную машину.
- Нажмите Win+R, впишите команду diskmgmt.msc.
- У вас должно запуститься окно, требующее провести инициализацию. Не меняйте настроек и нажмите «ОК».
- Новый накопитель отобразится в нижней части окна, но его область еще не задействована. Чтобы его задействовать, правым кликом мыши выберите «Создать простой том».
- Откроется специальная утилита. В окне приветствия нажмите «Далее».
- Не меняйте настроек на этом этапе.
- Выберите букву тома или оставьте ее по умолчанию.
- Параметры форматирования можно не менять. При желании в поле «Метка тома» можете вписать имя (обычно это имя «Локальный диск»).
- Кликните «Готово».
- Статус накопителя сменится, и он будет распознаваться системой.
Теперь диск виден в Проводнике и готов для работы.
Подключение виртуального диска в Linux
В отличие от Виндовс, в дистрибутивах на базе Линукс не нужно инициализировать накопители. После создания и подключения диска к виртуальной машине, остается проверить, все ли сделано правильно.
- Запустите виртуальную ОС.
- Откройте любую удобную утилиту для управления дисками и посмотрите, отображен ли там созданный и подключенный накопитель.
- Например, в программе GParted нужно переключиться с раздела /dev/sda на /dev/sdb — это и есть подключенный накопитель. При необходимости его можно будет отформатировать и выполнить другие настройки.
Это были распространенные и наиболее удобные варианты увеличения размера диска виртуальных машин в ВиртуалБокс. Не забывайте делать резервные копии важных ОС, если решили пользоваться утилитой VBoxManage, и следите за тем, чтобы на основном диске, откуда выделяется место для виртуального накопителя, было достаточно свободного места.
Виртуальные машины достаточно часто используются в наше время для тестирования различных операционных систем и выполнения других задач. Одна из самых популярных свободных программ для запуска виртуальных машин — VirtualBox. Когда вы создаете новую машину, вам необходимо создать для нее жесткий диск и указать его размер. Но вы не всегда можете угадать сколько места будет занимать та или иная машина.
Есть, конечно, динамические виртуальные диски, которые занимают место только при записи в них файлов, но это неполное решение проблемы, потому что нельзя все спланировать наперед. В этой статье мы рассмотрим как увеличить размер виртуального диска VirtualBox.
В VirtualBox можно использовать три основных формата дисков — это VDI, VHD и VDMK. Я не буду здесь рассматривать чем они отличаются. Но важно то, что изменить размер можно только для VDI и VHD. Для дисков VDMK есть обходной путь.
Для увеличения размера диска нужно использовать команду в терминале или в командной строке, в графическом интерфейсе такой функции, к сожалению, нет. Также вам нужно знать полный путь к вашему диску. Допустим, наш диск находится по адресу ~/VirtualBox VMs/Ubuntu17.04/Ubuntu1610.vdi в Linux. Давайте посмотрим информацию о нем, чтобы знать текущий размер:
VBoxManage showhdinfo ~/VirtualBox VMs/Ubuntu17.04/Ubuntu1610.vdi
Здесь размер отмечен в поле capacity и в данном примере он составляет 22075 мегабайта. Важно знать размер в мегабайтах, так как именно его мы будем использовать для увеличения диска. Чтобы увеличить размер виртуального диска virtualbox используется та же команда, только с параметром modifyhd:
VBoxManage modifyhd ~/VirtualBox VMs/Ubuntu17.04/Ubuntu1610.vdi --resize 32075
Здесь мы увеличили размер диска на 10 гигабайт. Важно чтобы размер, который вы указываете в параметре resize был не меньше текущего размера диска, иначе данные операционной системы могут быть повреждены и вся суть этой операции теряет смысл.
Если у вашей машины есть снимки состояния, то их размер тоже нужно изменить, иначе ничего не заработает. Для этого можно использовать такой цикл:
for x in ~/VirtualBox VMs/Ubuntu17.04/Snapshots/*.vdi ; do VBoxManage modifyhd $x --resize 32075 ; done
Помните, что размер и имена дисков должны совпадать во всех командах для одной машины. Для формата VDMK увеличение размера диска VirtualBox не поддерживается, но зато можно его конвертировать в vdi, увеличить, как описано выше и конвертировать обратно:
VBoxManage clonehd "~/VirtualBox VMs/Ubuntu17.04/Ubuntu1610.vdmk" "~/VirtualBox VMs/Ubuntu17.04/Ubuntu1610.vdi" --format vdi
VBoxManage modifyhd "~/VirtualBox VMs/Ubuntu17.04/Ubuntu1610.vdi " --resize 32075
VBoxManage clonehd "~/VirtualBox VMs/Ubuntu17.04/Ubuntu1610.vdi " "~/VirtualBox VMs/Ubuntu17.04/Ubuntu1610.vdi_resized.vmdk" --format vmdk
Увеличение диска VirtualBox в Windows
В ОС Windows команда будет выглядеть немного по-другому, а путь к файлу будет начинаться с диска C:. Чтобы выполнить команду VBoxManage сначала необходимо перейти в папку с исполняемыми файлами VirtualBox:
cd “C:Program FilesOracleVirtualBox”
Затем, запустите команду чтобы увеличить размер диска virtualbox, как было описано раньше, путь к файлу замените на свой:
VBoxManage showhdinfoC:UsersAdminVirtualBox VMsWindows 7Windows 7.vdi
Затем изменяем размер этого диска, помните, что размер нужно указать в мегабайтах, и он должен быть больше чем текущий.
VBoxManage modifyhd "C:UsersAdminVirtualBox VMsWindows 7Windows 7.vdi" --resize 32075
Увеличение файловой системы
То, что вы увеличили доступный размер диска еще ничего не меняет, как ничего не поменяет и то, что вы добавите новый жесткий диск к системе. Дальше вам нужно загрузится в вашу виртуальную машину расширить диск virtualbox и увеличить пространство, занимаемое файловой системой, для этого можно использовать утилиту Gparted. В дистрибутивах Linux она поставляется по умолчанию, запустите утилиту:
Здесь вы увидите отмеченное серым доступное пространство в конце диска. Теперь вы можете изменить размер для последнего раздела нажав на нем правой кнопкой и вызвав контекстное меню, затем выбрав «изменить размер/переместить»:
Когда завершите, не забудьте нажать «Apply» чтобы применить все операции.
Читайте более подробно о том, как пользоваться Gparted в отдельной статье. Если у вас в качестве гостевой системы установлена Windows, вы можете использовать стандартную утилиту управления дисками или скачать ISO образ Gparted.
Выводы
В этой статье мы рассмотрели как увеличить размер виртуального диска virtualbox с помощью командной строки и как предоставить полученное пространство вашей гостевой системе. Если у вас остались вопросы, спрашивайте в комментариях!
https://youtu.be/OM2TLXtLvVA
Статья распространяется под лицензией Creative Commons ShareAlike 4.0 при копировании материала ссылка на источник обязательна .
На тот случай, если при создании виртуальной машины вы не угадали с размером, в Oracle VirtualBox есть штатная возможность изменить размер виртуального диска. Правда из графической оснастки изменить размер диска не получиться, для этого придется воспользоваться консольной утилитой VboxManage.exe, входящей в состав VirtualBox.
Увеличение размера
Открываем командную строку и переходим в директорию C:Program FilesOracleVirtual Box (директория установки VirtualBox по умолчанию). Выведем информацию о виртуальном диске WKS2.vdi командой:
VboxManage.exe showhdinfo C:VMWKS2.vdi
В строке Logical size указан максимальный размер диска — 25600 Мб (25 Гб). Увеличим его до 30 Гб (30720 Мб) следующей командой:
VboxManage.exe modifyhd C:VMWKS2.vdi −−resize 30720
И затем еще раз посмотрим данные о диске.
После увеличения размера виртуального диска надо зайти в гостевую систему и увеличить размер логического диска. Cделать это можно из оснастки управления дисками (discmgmt.msc), выбрав в контекстном меню пункт «Расширить том». Эта возможность есть во всех ОС Windows, начиная с VistaServer 2008. В других операционных системах придется воспользоваться сторонними программами, например Acronis Disk Director.
Уменьшение размера
Возможна и обратная ситуация, когда необходимо уменьшить размер дискового пространства, занимаемого виртуальной машиной. В этом случае алгоритм действий другой.
Сначала заходим в гостевую систему и удаляем все лишнее. Затем произведем очистку свободных секторов диска с помощью утилиты Sdelete от Sysinternals. Утилита не требует установки, ее достаточно распаковать и запустить из командной строки команду Sdelete.exe -s -z.
Примечание. В Linux для очистки диска можно воспользоваться утилитой ZeroFree.
После очистки выключаем виртуалку, открываем командную строку на хостовой машине и выполняем команду:
VboxManage.exe modifyhd C:VMWKS2.vdi −−compact
Эта команда сжимает образ виртуального диска, уменьшая место, занимаемое им на диске. При этом логический размер диска останется без изменения. Уменьшить размер диска с помощью ключа resize не получится, этот способ работает только в сторону увеличения.
В заключение скажу, что увеличение размера возможно только для динамических дисков формата VDI или VHD, а сжатие — только для VDI-дисков. Все остальные варианты не поддерживаются, по крайней мере на данный момент. И еще, перед изменением размера диска не поленитесь сделать его резервную копию, на всякий случай 🙂
Содержание
Исходные данные:
-
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 FilesOracleVirtualBoxVboxManage.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:pathtodisk.vdi] --compact 0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
This website uses cookies. By using the website, you agree with storing cookies on your computer. Also you acknowledge that you have read and understand our Privacy Policy. If you do not agree leave the website.More information about cookies
Статья написана студентом Хекслета. Мнение автора может не совпадать с позицией редакции
О проблеме
Во время работы с VBox так вышло, что однажды мне не хватило места на виртуальном диске.
Почитав гайды в интернете, нашёл как увеличить размер диска. Только ничего не получилось.
Оказалось, что при создании диска, был выбран фиксированный размер дискового пространства.
Задачи
- Разобраться с типами дисков
- Расширить виртуальный диск с фиксированным объёмом
- Завершить расширение диска в гостевой ОС
- Не потерять данные на расширяемом виртуальном диске
1. О типах виртуальных носителей
Выдержка из документации, приведена ниже. Ссылка на доку. Искать часть 5.2. Disk Image Files (VDI, VMDK, VHD, HDD)
Файл образа диска виртуальной машины находится на хостиг-системе и воспринимается гостевой системой, как жёсткий диск определённой геометрии. Когда гостевая ОС читает с диска или записывает на него, VBox перенаправляет запрос в файл образа.
Как и физический диск, виртуальный носитель имеет размер и ёмкость, которые необходимо указать при создании диска. Только в отличие от физического носителя его можно расширять.
VBox поддерживает типы виртуальных носителей:
- VDI. Собственный тип, формат контейнера жёсткого диска от VBox
- VMDK. Популярный открытый формат контейнера, используется многими другими продуктами виртуализации
- VHD. Тип виртуального носителя, который использует Microsoft
- HDD. Также поддерживаются файлы изображений Parallels версии 2
Варианты создания диска внезависимости от выбранного типа виртуального носителя:
- Фиксированный размер. Если создаём образ с фиксированным размером, то на хостинг-системе будет создан файл образа примерно такого же размера, как и емкость виртуального диска. Таким образом, для диска размером 10 ГБ у нас будет файл размером 10 ГБ
- Макимальный объём диска, расширить нельзя.
- Динамический размер. Изначально размер диска будет очень маленьким. Объём носителя будет увеличиваться каждый раз при записи на диск до тех пор, пока не достигнет максимальной ёмкости, выбранной при его создании
- Максимальный объём диска можно увеличить.
2. Решение проблемы
Расширение дискового пространства. Тип VDI, VHD, VMDK. Вариант — динамически расширяемый.
- Запустить VirtualBox.
- Открыть менеджер виртуальных дисков (сочетанием клавиш Ctrl + D)
- Во вкладке Жесткий диск, выбрать из списка тот, который расширяем
- Ниже, во вкладке Атрибуты, увеличиваем объём диска с помощью бегунка
- Так же можно увеличить объём диска, вручную прописав его размер в окошке справа от бегунка
- Подтверждаем
- После короткого ожидания, размер диска увеличен
- Далее необходимо запустить гостевую ОС и расширить диск уже там
Расширение дискового пространства. Тип VDI, VHD, VMDK. Вариант — фиксированный.
- Открыть менеджер виртуальных носителей
- Выбрать диск
- Сверху, кнопки с вариантами действий над диском
- «Копировать»
- В открывшемся окне необходимо открыть «Экспертный режим»
- В правой части окна «Хранение на жёстком диске»/»Storage on physical hard disk», нужно выбрать Динамически расширяемый вариант создания диска
- Подтвердить копирование
- Займет какое-то время
- В менеджере виртуальных носителей появится копия диска, только уже тип диска будет динамический.
- Выбрать диск и расширить его
- После расширения, копию расширенного диска необходимо примонтировать в виртуальной машине, вместо старого
3. Расширение дискового пространства в гостевой системе
Гостевая ОС, Windows
- Запустить гостевую ОС
- Открыть управление дисками.
- для Win7 — правым кликом по иконке Мой компьютер — Управление — Управление дисками
- для Win10 — правым кликом по иконке Windows/Пуск — Управление дисками
- Так же правым кликом выбрать диск, который необходимо расширить
- В контекстном меню, «Расширить том…»
- Готово
Гостевая ОС, думаю любой дистрибутив GNU/Linux
Я расширял в Debian-Arch подобных
- Загрузиться в live режиме
- Запустить GParted, если его нет, то:
sudo apt install gparted
sudo pacman -S gparted
- Неиспользуемый раздел будет как-бы вне основного блока размеченного пространства
- Для расширения необходимо
- Выбрать раздел, у меня /dev/sda2
- Правым кликом — Расширить..
- Расширяем, подтверждаем. Сверху, где графическое отображение объёма диска, можно расширить раздел курсором
- Теперь появилась возможность расширить основной раздел, у меня /dev/sda5
- Расширяем так же, как и /dev/sda2
- Затем подтверждаем все действия, зелёная галочка сверху.
- Раздел расширен, перезагрузка
Итоги
- Разобрались с типами дисков и системой хранения
- Расширен диск фиксированного объёма, путём его копирования и преобразования в динамически расширяемый
- Расширено дисковое пространство в гостевой системе
- Сохранились данные, которые уже были на виртуальном носителе
Summary:
VBoxManage.exe modifyhd --resize
can increase (but not decrease) the logical size of disk image (the size seen by the guest OS).VBoxManage.exe modifyhd inputfile.vdi --compact
can decrease the
physical disk image size (the size of the image file on disk as seen by the host OS). This however does not change the logical disk size. Note that this only works if free space has been zero’ed in the guest OS first.modifyhd
only works only with the dynamic format variant («dynamically allocated image»).modifyhd
only works with VDI and VHD image formats.- If you are using snapshots you will have to clone the latest snapshot
VDI from «Snapshots» subfolder.
For details see section 8.23. VBoxManage modifyhd in the manual.
The reason why decreasing the logical disk size of a VDI has not been implemented yet is to prevent data corruption which could occur and you would have unbootable VMs as a result of it. Therefore, when the --resize
option is used, the new disk size must be greater than the current size. It is not allowed to be less than or equal to the current size. In other words a 40 GB disk can only be resized to 41 GB or greater than that, it cannot be resized to 40 GB (that’s just dumb) or 39 GB or less than that.
Old versions of VirtualBox created VDI files as «fixed» format varient. The new default setting is now to create «dynamic» format variants when new VDI (virtual disk image) files are created. (I’m guessing this is the case since the introduction of dynamic format variant, whichever version that was introduced in.)
So what the error message «operation for this format is not implemented yet» means is that your VDI file uses the «fixed» format variant. To get around this problem you will have to clone your VDI file using the clonehd
command. To view what format variant your VDI file is in at the moment, you can use the showhdinfo
command.
Working Example
Show VDI information about the current disk.
Input command: vboxmanage.exe showhdinfo pathinputfile.vdi
C:Program FilesOracleVirtualBox>VBoxManage.exe showhdinfo "%userprofile%virt
ualbox vmssg2_win7_x64_labsg2_win7_x64_lab.vdi"
UUID: 132e9af1-0428-49f4-bc45-4d84680e17f5
Parent UUID: base
State: created
Type: normal (base)
Location: C:UsersNameVirtualBox VMssg2_win7_x64_labsg2_win7_x64_lab.
vdi
Storage format: VDI
Format variant: fixed default
Capacity: 40960 MBytes
Size on disk: 40962 MBytes
In use by VMs: sg2_win7_x64_lab (UUID: dcd106b3-7ed6-4f19-ad94-820ab4dc10d3)
C:Program FilesOracleVirtualBox>
See where it says «fixed default»? That’s why it spits out the error above when you try to resize it.
Clone the old VDI file to a new VDI file.
Input command: vboxmanage.exe clonehd pathinputfile.vdi pathoutputfile.vdi
C:Program FilesOracleVirtualBox>VBoxManage.exe clonehd "%userprofile%virtual
box vmssg2_win7_x64_labsg2_win7_x64_lab.vdi" "%userprofile%virtualbox vmssg2
_win7_x64_labsg2_win7_x64_lab_clone.vdi"
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
Clone hard disk created in format 'VDI'. UUID: 34dafa68-3093-4946-926a-8237ea263
e5c
C:Program FilesOracleVirtualBox>
Voilà! The old file has now been cloned to a new file. Since the default setting in new versions of VirtualBox is to use «dynamic» format variant, you don’t have to define that explicitly. Although, if you are working with an older version of VirtualBox, then you might want to set the option to «dynamic» (if at all available) to ensure better compatibility and/or flexibility with future versions of VirtualBox.
Show VDI information about the cloned disk.
Input command: vboxmanage.exe showhdinfo pathinputfile_clone.vdi
C:Program FilesOracleVirtualBox>VBoxManage.exe showhdinfo "%userprofile%virt
ualbox vmssg2_win7_x64_labsg2_win7_x64_lab_clone.vdi"
UUID: 34dafa68-3093-4946-926a-8237ea263e5c
Parent UUID: base
State: created
Type: normal (base)
Location: C:UsersNamevirtualbox vmssg2_win7_x64_labsg2_win7_x64_lab_
clone.vdi
Storage format: VDI
Format variant: dynamic default
Capacity: 40960 MBytes
Size on disk: 7806 MBytes
C:Program FilesOracleVirtualBox>
See how it now says «dynamic default»? How nice!
(On the side note! The reason it says 7806 MB as physical size here is because I had used the --compact
option on the original VDI file in an attempt to enforce conversion to dynamic format variant. Just something I read on the VirtualBox forum, it supposedly would have worked with older versions, so I thought I might as well give that a try. It didn’t work.)
Resizing the cloned disk.
Input command: vboxmanage.exe modifyhd pathinputfile.vdi --resize 51200
C:Program FilesOracleVirtualBox>VBoxManage.exe modifyhd "%userprofile%virtua
lbox vmssg2_win7_x64_labsg2_win7_x64_lab_clone.vdi" --resize 51200
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
C:Program FilesOracleVirtualBox>
Success! No format bullshitting no more. Just remember to resize the new, cloned disk, and not the original one. Keep in mind that the size is expressed in MB. I believe you can use e.g. 51200
as well as 50G
(or possibly «GB»). There is also the option --resizebyte
which can be used to express the size in bytes.
Show VDI information about the resized clone disk.
Input command: vboxmanage.exe showhdinfo pathinputfile_clone.vdi
C:Program FilesOracleVirtualBox>VBoxManage.exe showhdinfo "%userprofile%virt
ualbox vmssg2_win7_x64_labsg2_win7_x64_lab_clone.vdi"
UUID: 34dafa68-3093-4946-926a-8237ea263e5c
Parent UUID: base
State: created
Type: normal (base)
Location: C:UsersNamevirtualbox vmssg2_win7_x64_labsg2_win7_x64_lab_
clone.vdi
Storage format: VDI
Format variant: dynamic default
Capacity: 51200 MBytes
Size on disk: 7806 MBytes
C:Program FilesOracleVirtualBox>
That’s it! From here what you have to do is add this cloned drive as your new VDI for the VM. You do that inside VirtualBox. I won’t go into that. If you have been able to read and understand this so far then you probably don’t need no further guiding. You can either delete the old «fixed» file, or leave it as a backup. Make sure you test the new VDI file before you delete the original source file.
Note! You will not immediately see the new size of the cloned disk. You have to boot the VM with it, and then you have to use your partition management tool to expand your partition to fill the virtual disk (or create more partitions). For Windows, just run diskmgmt.msc
and you’ll be able to expand the partition in there.
Screenshots
Reference
- forums.virtualbox.org — VBoxManage modifyhd —resize ==
VBOX_E_NOT_SUPPORTED - forums.virtualbox.org — 8.23. VBoxManage
modifyhd - www.virtualbox.org — 8.23. VBoxManage
modifyhd - SU — Resize partition of Windows 7 running on VirtualBox with
dynamically allocated
storage
Summary:
VBoxManage.exe modifyhd --resize
can increase (but not decrease) the logical size of disk image (the size seen by the guest OS).VBoxManage.exe modifyhd inputfile.vdi --compact
can decrease the
physical disk image size (the size of the image file on disk as seen by the host OS). This however does not change the logical disk size. Note that this only works if free space has been zero’ed in the guest OS first.modifyhd
only works only with the dynamic format variant («dynamically allocated image»).modifyhd
only works with VDI and VHD image formats.- If you are using snapshots you will have to clone the latest snapshot
VDI from «Snapshots» subfolder.
For details see section 8.23. VBoxManage modifyhd in the manual.
The reason why decreasing the logical disk size of a VDI has not been implemented yet is to prevent data corruption which could occur and you would have unbootable VMs as a result of it. Therefore, when the --resize
option is used, the new disk size must be greater than the current size. It is not allowed to be less than or equal to the current size. In other words a 40 GB disk can only be resized to 41 GB or greater than that, it cannot be resized to 40 GB (that’s just dumb) or 39 GB or less than that.
Old versions of VirtualBox created VDI files as «fixed» format varient. The new default setting is now to create «dynamic» format variants when new VDI (virtual disk image) files are created. (I’m guessing this is the case since the introduction of dynamic format variant, whichever version that was introduced in.)
So what the error message «operation for this format is not implemented yet» means is that your VDI file uses the «fixed» format variant. To get around this problem you will have to clone your VDI file using the clonehd
command. To view what format variant your VDI file is in at the moment, you can use the showhdinfo
command.
Working Example
Show VDI information about the current disk.
Input command: vboxmanage.exe showhdinfo pathinputfile.vdi
C:Program FilesOracleVirtualBox>VBoxManage.exe showhdinfo "%userprofile%virt
ualbox vmssg2_win7_x64_labsg2_win7_x64_lab.vdi"
UUID: 132e9af1-0428-49f4-bc45-4d84680e17f5
Parent UUID: base
State: created
Type: normal (base)
Location: C:UsersNameVirtualBox VMssg2_win7_x64_labsg2_win7_x64_lab.
vdi
Storage format: VDI
Format variant: fixed default
Capacity: 40960 MBytes
Size on disk: 40962 MBytes
In use by VMs: sg2_win7_x64_lab (UUID: dcd106b3-7ed6-4f19-ad94-820ab4dc10d3)
C:Program FilesOracleVirtualBox>
See where it says «fixed default»? That’s why it spits out the error above when you try to resize it.
Clone the old VDI file to a new VDI file.
Input command: vboxmanage.exe clonehd pathinputfile.vdi pathoutputfile.vdi
C:Program FilesOracleVirtualBox>VBoxManage.exe clonehd "%userprofile%virtual
box vmssg2_win7_x64_labsg2_win7_x64_lab.vdi" "%userprofile%virtualbox vmssg2
_win7_x64_labsg2_win7_x64_lab_clone.vdi"
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
Clone hard disk created in format 'VDI'. UUID: 34dafa68-3093-4946-926a-8237ea263
e5c
C:Program FilesOracleVirtualBox>
Voilà! The old file has now been cloned to a new file. Since the default setting in new versions of VirtualBox is to use «dynamic» format variant, you don’t have to define that explicitly. Although, if you are working with an older version of VirtualBox, then you might want to set the option to «dynamic» (if at all available) to ensure better compatibility and/or flexibility with future versions of VirtualBox.
Show VDI information about the cloned disk.
Input command: vboxmanage.exe showhdinfo pathinputfile_clone.vdi
C:Program FilesOracleVirtualBox>VBoxManage.exe showhdinfo "%userprofile%virt
ualbox vmssg2_win7_x64_labsg2_win7_x64_lab_clone.vdi"
UUID: 34dafa68-3093-4946-926a-8237ea263e5c
Parent UUID: base
State: created
Type: normal (base)
Location: C:UsersNamevirtualbox vmssg2_win7_x64_labsg2_win7_x64_lab_
clone.vdi
Storage format: VDI
Format variant: dynamic default
Capacity: 40960 MBytes
Size on disk: 7806 MBytes
C:Program FilesOracleVirtualBox>
See how it now says «dynamic default»? How nice!
(On the side note! The reason it says 7806 MB as physical size here is because I had used the --compact
option on the original VDI file in an attempt to enforce conversion to dynamic format variant. Just something I read on the VirtualBox forum, it supposedly would have worked with older versions, so I thought I might as well give that a try. It didn’t work.)
Resizing the cloned disk.
Input command: vboxmanage.exe modifyhd pathinputfile.vdi --resize 51200
C:Program FilesOracleVirtualBox>VBoxManage.exe modifyhd "%userprofile%virtua
lbox vmssg2_win7_x64_labsg2_win7_x64_lab_clone.vdi" --resize 51200
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
C:Program FilesOracleVirtualBox>
Success! No format bullshitting no more. Just remember to resize the new, cloned disk, and not the original one. Keep in mind that the size is expressed in MB. I believe you can use e.g. 51200
as well as 50G
(or possibly «GB»). There is also the option --resizebyte
which can be used to express the size in bytes.
Show VDI information about the resized clone disk.
Input command: vboxmanage.exe showhdinfo pathinputfile_clone.vdi
C:Program FilesOracleVirtualBox>VBoxManage.exe showhdinfo "%userprofile%virt
ualbox vmssg2_win7_x64_labsg2_win7_x64_lab_clone.vdi"
UUID: 34dafa68-3093-4946-926a-8237ea263e5c
Parent UUID: base
State: created
Type: normal (base)
Location: C:UsersNamevirtualbox vmssg2_win7_x64_labsg2_win7_x64_lab_
clone.vdi
Storage format: VDI
Format variant: dynamic default
Capacity: 51200 MBytes
Size on disk: 7806 MBytes
C:Program FilesOracleVirtualBox>
That’s it! From here what you have to do is add this cloned drive as your new VDI for the VM. You do that inside VirtualBox. I won’t go into that. If you have been able to read and understand this so far then you probably don’t need no further guiding. You can either delete the old «fixed» file, or leave it as a backup. Make sure you test the new VDI file before you delete the original source file.
Note! You will not immediately see the new size of the cloned disk. You have to boot the VM with it, and then you have to use your partition management tool to expand your partition to fill the virtual disk (or create more partitions). For Windows, just run diskmgmt.msc
and you’ll be able to expand the partition in there.
Screenshots
Reference
- forums.virtualbox.org — VBoxManage modifyhd —resize ==
VBOX_E_NOT_SUPPORTED - forums.virtualbox.org — 8.23. VBoxManage
modifyhd - www.virtualbox.org — 8.23. VBoxManage
modifyhd - SU — Resize partition of Windows 7 running on VirtualBox with
dynamically allocated
storage