Почему я не могу изменить размер динамического VDI с помощью команды modifyhd?
Я вижу здесь Как мне увеличить размер жесткого диска виртуальной машины.
Должно работать с такой командой
VBoxManage modifyhd xp.vdi --resize 2000
Когда VDI имеет фиксированный размер, вы можете получить эту ошибку:
~/VirtualBox VMs/xp$ VBoxManage modifyhd xp.vdi --resize 2000
0%...
Progress state: VBOX_E_NOT_SUPPORTED
VBoxManage: error: Resize hard disk operation for this format is not implemented yet!
Обсуждение и решение этого здесь.
Но я получаю эту ошибку, пока мой VDI динамический
~/VirtualBox VMs/xp$ VBoxManage showhdinfo xp.vdi
UUID: 8880dc58-cd0c-4ffb-a583-f8dd50eda98e
Parent UUID: base
State: created
Type: normal (base)
Location: /home/cip/VirtualBox VMs/xp/xp.vdi
Storage format: VDI
Format variant: dynamic default
Capacity: 8192 MBytes
Size on disk: 4693 MBytes
In use by VMs: xp (UUID: e2b70963-3c26-41cf-88f6-4e03ca721e2d)
Это почему?
3 ответа
Использовать VBoxManage modifyhd
у нас есть следующие предостережения:
- Диски должны быть в формате.VDI или.VHD.
- Диски должны быть в динамическом формате, а не фиксированными (фиксированный диск может быть преобразован в динамический путем создания клона).
- Размер диска влияет только на логический размер, а не на физический размер.
- Сокращение накопителя до уровня физического размера или ниже его невозможно.
- Для уменьшения физического размера мы должны заполнить неиспользуемое дисковое пространство
0
, - Windows VDI, возможно, придется дефрагментировать перед уменьшением его физического размера.
В приведенном выше примере была предпринята попытка изменить размер динамического диска с физическим размером от 4693 МБ до 2000 МБ, что невозможно. Отсюда и ошибка.
Этот обходной путь работал для меня:
- Выключить машину
- Создайте новый диск через интерфейс администратора нужного размера
Используйте VBoxManage clonemedium с
--existing
флагVBoxManage clonemedium <source-guid> <destinatin-guid> --existing
Примечание. Теперь на новом диске будет нераспределенное избыточное пространство, и вам придется использовать gparted, чтобы максимально увеличить размер.
Не уверен, почему ребята из VirtualBox не могли использовать вышесказанное для реализации этого, вместо того, чтобы бросать VBOX_E_NOT_SUPPORTED
... хотя бы ссылку на это:)
Вот весь процесс, постараюсь быть максимально подробным
- Убедитесь, что машина, размер которой вы собираетесь увеличить, находится в состоянии "Выключение" (а не в "сохраненном" или любом другом состоянии).
В моем случае это машина размером 32 ГБ, и она будет называться SMALL VM.
- Создайте новую виртуальную машину с новым желаемым размером
В моем случае я решил создать новую виртуальную машину объемом 70 ГБ, восстанавливая содержимое маленькой машины внутри этой новой виртуальной машины, и я буду называть ее БОЛЬШОЙ виртуальной машиной.
- Запустите команду
VBoxManage list hdds
или Откройте диспетчер виртуальных носителей, чтобы получить GUID МАЛЫЙ ВМ (источник), а также GUID БОЛЬШОЙ ВМ (пункт назначения)
С помощью этих GUID создайте следующую команду
VBoxManage clonemedium SMALL_VM_GUID LARGE_VM_GUID - существующий
В моем случае ORIGIN - SMALL VM это: 39143127-42b6-478a-afb2-5e58f14218b
В моем случае DESINATION - LARGE VM - это: bb808b5b-b88c-49b2-a646-3414af906d84
Конечно, ваши GUID будут отличаться от моих
Убедитесь, что вы не инвертировали GUID, иначе новый компьютер заменит содержимое вашего существующего компьютера!!!!
Убедившись, что вы не смешали источник с пунктом назначения, запустите эту команду:
$ VBoxManage clonemedium 39143127-42b6-478a-afb2-5e58f14218b2 bb808b5b-b88c-49b2-a646-3414af906d84 - существует
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
Носитель клонов создан в формате 'VDI'. UUID: bb808b5b-b88c-49b2-a646-3414af906d84
Запустите новую БОЛЬШУЮ виртуальную машину, которую вы создали на шаге 2.
В окне "Управление компьютером" проверьте, действительно ли на устройстве больше неиспользуемого / неформатированного размера.
Если вы предпочитаете, вы можете запустить "chkdsk" на диске C, чтобы убедиться, что все готово (это может занять две перезагрузки на БОЛЬШОЙ ВМ)
Используя gparted-live*.iso, "вставьте его" в новую виртуальную машину и перезагрузите ее
Загрузиться в gparted среде
Расширьте свой раздел и сохраните изменения
"Извлеките" gparted-live *.iso, чтобы снова загрузиться в Windows
В окне "Управление компьютером" проверьте, что на машине теперь установлен диск "С" большего размера для решения ваших проблем со скоростью.
У меня были скриншоты этого процесса, но я решил не включать их, так как это сделает мой ответ большим и пугающим для людей, которые "спешат" получить свободное место на своей виртуальной машине Windows
Нашел более простой обходной путь, по крайней мере для меня: (сначала обязательно клонируйте свою машину, в качестве резервной копии на случай, если gparted что-то испортит)
Увеличьте размер виртуального диска в Virtual Manager
В настройках ВМ-> хранилище-> оптический привод:
- Включить live CD
- Свяжите оптический привод с файлом.iso gparted
Загрузите виртуальную машину. он войдет в дистрибутив gparted linux
Измените размер раздела
Завершение работы ВМ
Отключите ISO-файл от оптического диска ("Удалить диск из виртуального привода")
Теперь виртуальная машина должна иметь новый размер диска. Может попросить chkdsk.