Реферат:
VBoxManage.exe modifyhd --resize
может увеличивать (но не уменьшать) логический размер образа диска (размер, видимый гостевой ОС).
VBoxManage.exe modifyhd inputfile.vdi --compact
может уменьшить физический размер образа диска (размер файла образа на диске, который видит гостевая ОС). Однако это не меняет логический размер диска. Обратите внимание, что это работает только в том случае, если сначала свободное место в гостевой операционной системе было нулевым.
modifyhd
работает только с вариантом динамического формата (“динамически выделяемый образ”).
modifyhd
работает только с форматами VDI и VHD образов.
- Если вы используете снэпшоты, вам придется клонировать последний снэпшот VDI из подпапки “Снэпшоты”.
Подробнее см. в разделе 8.23. VBoxManage modifyhd в руководстве.
Причина, по которой уменьшение логического диска VDI еще не реализовано, заключается в предотвращении повреждения данных, которое может произойти, и в результате этого вы получите незагружаемые ВМ. Поэтому при использовании опции --resize
новый размер диска должен быть больше текущего. Не допускается, чтобы он был меньше или равен текущему размеру. Другими словами, 40 ГБ диска может быть изменен только до 41 ГБ или больше, он не может быть изменен до 40 ГБ (это просто глупо) или до 39 ГБ или меньше.
В старых версиях VirtualBox файлы VDI создавались как “фиксированный” вариант формата. Новая настройка по умолчанию теперь заключается в создании “динамических” вариантов формата при создании новых файлов VDI (образ виртуального диска). (Полагаю, это происходит с момента введения динамического варианта формата, в какой бы версии он ни был введен).
Таким образом, сообщение об ошибке “операция для этого формата еще не реализована” означает, что в вашем VDI файле используется “фиксированный” вариант формата. Чтобы обойти эту проблему, вам придется клонировать ваш VDI файл с помощью команды clonehd
. Для того чтобы посмотреть, в каком формате находится ваш VDI файл на данный момент, можно воспользоваться командой showhdinfo
.
Пример работы
Показ информации VDI о текущем диске. Команда
Ввод: vboxmanage.exe showhdinfo path\inputfile.vdi
C:\Program Files\Oracle\VirtualBox>VBoxManage.exe showhdinfo "%userprofile%\virt
ualbox vms\sg2_win7_x64_lab\sg2_win7_x64_lab.vdi"
UUID: 132e9af1-0428-49f4-bc45-4d84680e17f5
Parent UUID: base
State: created
Type: normal (base)
Location: C:\Users\Name\VirtualBox VMs\sg2_win7_x64_lab\sg2_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 Files\Oracle\VirtualBox>
Посмотрите, где написано “исправлено по умолчанию”? Вот почему он выплёвывает ошибку, указанную выше, когда вы пытаетесь изменить его размер.
Клонирование старого VDI файла в новый VDI файл. Команда ввода
: vboxmanage.exe clonehd path\inputfile.vdi path\outputfile.vdi
C:\Program Files\Oracle\VirtualBox>VBoxManage.exe clonehd "%userprofile%\virtual
box vms\sg2_win7_x64_lab\sg2_win7_x64_lab.vdi" "%userprofile%\virtualbox vms\sg2
_win7_x64_lab\sg2_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 Files\Oracle\VirtualBox>
Voilà! Старый файл теперь клонирован в новый файл. Поскольку по умолчанию в новых версиях VirtualBox используется вариант “динамического” формата, нет необходимости явно это определять. Хотя, если вы работаете со старой версией VirtualBox, то, возможно, вы захотите установить опцию “динамический” (если она вообще доступна), чтобы обеспечить лучшую совместимость и/или гибкость с будущими версиями VirtualBox.
Показать VDI информацию о клонированном диске. Команда ввода
: vboxmanage.exe showhdinfo path\inputfile_clone.vdi
C:\Program Files\Oracle\VirtualBox>VBoxManage.exe showhdinfo "%userprofile%\virt
ualbox vms\sg2_win7_x64_lab\sg2_win7_x64_lab_clone.vdi"
UUID: 34dafa68-3093-4946-926a-8237ea263e5c
Parent UUID: base
State: created
Type: normal (base)
Location: C:\Users\Name\virtualbox vms\sg2_win7_x64_lab\sg2_win7_x64_lab_
clone.vdi
Storage format: VDI
Format variant: dynamic default
Capacity: 40960 MBytes
Size on disk: 7806 MBytes
C:\Program Files\Oracle\VirtualBox>
Посмотрите, как теперь написано “динамическая настройка по умолчанию”? Как мило!
(На заметке! Причина, по которой здесь указано 7806 МБ в качестве физического размера, заключается в том, что я использовал опцию --compact
в оригинальном VDI файле в попытке внедрить преобразование в вариант динамического формата. Просто кое-что из того, что я читал на форуме VirtualBox, предположительно, работало бы со старыми версиями, так что я подумал, что стоит попробовать. Это не сработало.)
Обновление клонированного диска. Команда
Input: vboxmanage.exe modifyhd path\inputfile.vdi --resize 51200
C:\Program Files\Oracle\VirtualBox>VBoxManage.exe modifyhd "%userprofile%\virtua
lbox vms\sg2_win7_x64_lab\sg2_win7_x64_lab_clone.vdi" --resize 51200
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
C:\Program Files\Oracle\VirtualBox>
Успех! Больше никаких форматных бредней. Просто не забудьте изменить размер нового, клонированного диска, а не оригинального. Помните, что размер выражается в мегабайтах. Думаю, вы можете использовать, например, 51200
, а также 50G
(или, возможно, “ГБ”). Также есть опция --resizebyte
, которая может быть использована для выражения размера в байтах.
Показать VDI информацию об изменении размера диска клона. Команда ввода
: vboxmanage.exe showhdinfo path\inputfile_clone.vdi
C:\Program Files\Oracle\VirtualBox>VBoxManage.exe showhdinfo "%userprofile%\virt
ualbox vms\sg2_win7_x64_lab\sg2_win7_x64_lab_clone.vdi"
UUID: 34dafa68-3093-4946-926a-8237ea263e5c
Parent UUID: base
State: created
Type: normal (base)
Location: C:\Users\Name\virtualbox vms\sg2_win7_x64_lab\sg2_win7_x64_lab_
clone.vdi
Storage format: VDI
Format variant: dynamic default
Capacity: 51200 MBytes
Size on disk: 7806 MBytes
C:\Program Files\Oracle\VirtualBox>
И все! Отсюда вам нужно добавить этот диск клонирования в качестве нового VDI для ВМ. Вы делаете это внутри VirtualBox. Я не буду вдаваться в это. Если вы смогли прочитать и понять это до сих пор, то, скорее всего, вам не нужно больше никаких указаний. Вы можете либо удалить старый “исправленный” файл, либо оставить его как резервную копию. Убедитесь, что вы протестировали новый VDI файл, прежде чем удалять исходный файл.
Note! Вы не сразу увидите новый размер клонированного диска. С его помощью вы должны загрузить VM, а затем воспользоваться утилитой управления разделами для расширения раздела, чтобы заполнить виртуальный диск (или создать дополнительные разделы). Для Windows просто запустите diskmgmt.msc
и там вы сможете расширить раздел.
Снимки экрана
Ссылка