Почему я не могу изменить размер динамического VDI с помощью команды modifyhd?

29

Я вижу здесь Как мне увеличить размер жесткого диска виртуальной машины .

Должно работать с такой командой

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)

Почему это?

Сообщество
источник
та же проблема здесь с Ubuntu 16.04LTS и динамическим VDI. очень странно
Luckyrings

Ответы:

26

Для использования VBoxManage modifyhdу нас есть следующие предостережения:

  • Диски должны быть в формате .VDI или .VHD.
  • Диски должны быть в динамическом формате, а не фиксированными (фиксированный диск может быть преобразован в динамический путем создания клона).
  • Размер диска влияет только на логический размер, а не на физический размер.
  • Сокращение накопителя до уровня физического размера или ниже его невозможно.
  • Чтобы уменьшить физический размер, мы должны заполнить неиспользуемое место на диске 0.
  • Windows VDI, возможно, придется дефрагментировать перед уменьшением его физического размера.

В приведенном выше примере была предпринята попытка изменить размер динамического диска с физическим размером от 4693 МБ до 2000 МБ, что невозможно. Отсюда и ошибка.

Takkat
источник
1
Я тоже споткнулся какая боль.
Николя
2
Для редактирования дисков в фиксированном формате, следовать ответ на @ ripper234
Шарун
проверьте мой ответ, в нем есть все детали, которые вам нужны, и я могу подтвердить, что это работает
Маурисио Грасия Гутьеррес
Я создал это изображение более двух лет назад, я давно забыл, что это фиксированный размер, а не динамический. Чтение этого в вашем ответе напомнило мне. Я потратил больше часа, пытаясь понять, почему я не смог этого сделать: (... Спасибо
Мадивад,
Спасибо, это помогло. Для Linux не забудьте запустить pvresizeкоманду, чтобы использовать это пространство для Linux
Максим Лузик
24

Этот обходной путь работал для меня:

  1. Выключить машину
  2. Создайте новый диск через интерфейс администратора нужного размера
  3. Используйте VBoxManage clonemedium с --existingфлагом

    VBoxManage clonemedium <source-guid> <destinatin-guid> --existing
    

Примечание . Теперь на новом диске будет нераспределенное избыточное пространство, и вам придется использовать gparted, чтобы максимально увеличить размер.

Не уверен, почему ребята из VirtualBox не смогли использовать вышесказанное для реализации этого вместо броска VBOX_E_NOT_SUPPORTED... хотя бы ссылку на это :)

ripper234
источник
1
Как я мог бы выделить лишнее место на окнах?
Кен
4
@ Не уверен, понял ли ты это; Пуск -> Выполнить -> diskmgmt.msc, щелкните правой кнопкой мыши C: (или любой другой основной диск) и выберите расширение.
Трент,
2
это помогло. Я не с GUID, но с именем диска
Luckyrings
3
@ ripper234 Три шага требуют подробного объяснения - для таких людей, как я, которые не уверены в том, что они делают. Во 2) мы создаем новый фиксированный диск или как? .vdi .vdmk ?? Пожалуйста, приведите хороший пример, возможно, с графикой. Также 3) Что делает clonemedium, а не clonehd? Откуда берутся два проводника - в частности, пункт назначения - он уже существует, хотя мы клонируем? Спасибо
mwarren
Спасибо. Теперь я был направлен сюда как пользователь Windows (хотя это и есть askUbuntu), поэтому добавлю, что в версии VBoxManage для Windows вы должны указывать пути к виртуальным жестким дискам, а не к виртуальной машине. Идентификаторы GUID.
Шон Бурчетт
4

Вот весь процесс, постараюсь быть максимально подробным

  1. Убедитесь, что машина, размер которой вы собираетесь увеличить, находится в состоянии «Выключение» (а не в «сохраненном» или любом другом состоянии).

В моем случае это машина размером 32 ГБ, и она будет называться SMALL VM.

  1. Создайте новую виртуальную машину с новым желаемым размером

В моем случае я решил создать новую виртуальную машину объемом 70 ГБ, восстанавливая содержимое маленькой машины внутри этой новой виртуальной машины, и я буду называть ее БОЛЬШОЙ виртуальной машиной.

  1. Выполните команду 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

  1. Запустите новую БОЛЬШУЮ виртуальную машину, которую вы создали на шаге 2.

  2. В окне «Управление компьютером» проверьте, действительно ли на устройстве больше неиспользуемого / неформатированного размера.

  3. Если вы предпочитаете, вы можете запустить «chkdsk» на диске C, чтобы убедиться, что все готово (это может занять две перезагрузки на БОЛЬШОЙ ВМ )

  4. Используя gparted-live * .iso, «вставьте его» в новую виртуальную машину и перезагрузите ее

  5. Загрузиться в gparted среде

  6. Расширьте свой раздел и сохраните изменения

  7. «Извлеките» gparted-live * .iso, чтобы снова загрузиться в Windows

  8. В окне «Управление компьютером» проверьте, что на машине теперь установлен диск «С» большего размера для решения ваших проблем со скоростью.

У меня были скриншоты этого процесса, но я решил не включать их, так как это сделает мой ответ большим и пугающим для людей, которые «спешат» получить свободное место на своей виртуальной машине Windows

Маурисио Грасия Гутьеррес
источник
Спасибо за руководство. В шаге 3, откуда вы получаете GUID? Я не уверен, что такое Virtual Media Manager.
А.Ван
3
Не берите в голову, я думаю, что получил это отVBoxManage list hdds
A.Wan
@ A.Wan, это менеджер виртуальных медиа - google.com.co/…
Маурисио Грасия Гутьеррес