Как изменить VDI фиксированного размера с помощью команды modifyhd в Windows?


71

Я пытаюсь выяснить, как изменить размер файла VDI. Я новичок в VirtualBox, и мне нужно многому научиться. Но я думаю, что понял основы. Я уже установил Windows 7 в качестве моего первого гостя. Хостом также является Windows 7. Я не был уверен, сколько дискового пространства выделить, поэтому я выбрал VDI размером 40 ГБ и фиксированный размер для увеличения производительности. Но сейчас я передумал и хочу добавить еще 10 ГБ. Я перебираю программу и читаю содержимое меню Справка, но это не помогает. Здесь объясняются контроллеры дисков, SAS, SATA, SCSI, yada, yada, но не то, что я ищу.

Я искал ответы во всемирной паутине, форум VirtualBox говорит, что вы должны использовать Gparted, если вы хотите самый простой способ (в некоторых модах есть стикеры). Некоторые пользователи обсуждают использование ddкоманды. Но это все, что связано с Linux. Кроме того, в SU много вопросов, касающихся увеличения и уменьшения размеров файлов VDI, но все они касаются использования Linux в качестве хоста и Windows в качестве гостя.

Я нашел этот хороший пост в блоге о том, как это сделать с помощью modifyhdкоманды VBoxManage. Этот парень также делает это на Linux в качестве хоста ОС. Он даже хотел того же размера (50 ГБ) для своего файла VDI, что и я для своего, какое совпадение. Так что я подумал, что все равно попробую, сделаю или сломаю. Что может пойти не так? ... а? Ну, это ужасный сюрприз, который я получил.

C:\Program Files\Oracle\VirtualBox>VBoxManage.exe modifyhd "%userprofile%\virtua
lbox vms\sg2_win7_x64_lab\sg2_win7_x64_lab.vdi" --resize 51200
0%...
Progress state: VBOX_E_NOT_SUPPORTED
VBoxManage.exe: error: Resize hard disk operation for this format is not impleme
nted yet!

C:\Program Files\Oracle\VirtualBox>

a

Скажите, что сейчас?! ... не можете изменить размер виртуальных жестких дисков формата VDI? Вы не говорите? Не поддерживает свой собственный формат? Теперь как насчет этого ...

Неужели нет простого способа изменить размер файла VDI, желательно с помощью нескольких кликов внутри VirtualBox? Что-нибудь в процессе?


4
Я убрал рассуждения о качестве VirtualBox, что не добавляет в вопрос ничего полезного.
слеске

1
Для дальнейшего использования, modifyhdв настоящее время известно как , modifymediumно остается обратная совместимость - см virtualbox.org/manual/ch08.html#vboxmanage-modifyvdi
djule5

Ответы:


123

Резюме:

  • 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>

Вуаля! Старый файл теперь клонирован в новый файл. Поскольку по умолчанию в новых версиях 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, предположительно работал бы со старыми версиями, поэтому я подумал, что могу попробовать. Это не сработало.)

Изменение размера клонированного диска.

Входная команда: 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, прежде чем удалить исходный файл.

Запись! Вы не сразу увидите новый размер клонированного диска. Вы должны загрузить виртуальную машину вместе с ней, а затем использовать инструмент управления разделами, чтобы расширить раздел для заполнения виртуального диска (или создать больше разделов). Для Windows просто запустите, diskmgmt.mscи вы сможете расширить раздел там.

Скриншоты

a б с d е е грамм

Ссылка



Хороший глаз! Я исправил параметр modifyhd. Спасибо, что обратили на это мое внимание.
Самир

2
Действительно хорошо написанный ответ! ИМХО за это надо набрать много голосов.
Йохан Карлссон

+1: именно такие люди, как вы, и знания, которыми вы свободно делитесь, делают экосистему StackExchange таким фантастическим ресурсом!
Гомункул Ретикулли

1
Если у вас есть проблемы, потому что вы используете снимки , посмотрите на virtualbox.org/ticket/9103 . По сути, вам нужно применить операцию modifymedium/ modifyhdк самому файлу снимка.
djule5

11

Вот довольно простой процесс, который помог мне изменить размер диска фиксированного размера VirtualBox (v. 4.3.16) на динамический диск 60 ГБ на моем Mac (OS X 10.9.4) с Linux (Ubuntu 14.04), работающей в качестве гостевой ОС:

В Терминале на Mac вставьте компакт-диск в каталог с файлом VDI и введите следующее:

VBoxManage showhdinfo mydisk.vdi  
VBoxManage clonehd mydisk.vdi mydiskClone.vdi  
VBoxManage modifyhd mydiskClone.vdi --resize 61440  
VBoxManage showhdinfo mydiskClone.vdi

В разделе хранилища приложений VirtualBox добавьте mydiskClone.vdi в качестве второго HD, затем запустите ВМ в обычном режиме.

В командной оболочке гостевой ОС введите:

sudo fdisk /dev/sdb
- delete all partitions
- create new partition on full disk

Перезагрузите гостя. Когда он вернется, снова зайдите в оболочку и введите:

sudo resize2fs /dev/sdb1

Завершение работы гостевой ОС.

Снова в разделе хранилища приложений VirtualBox установите mydiskClone.vdi в качестве загрузочного диска. Затем запустите гостевую ОС и проверьте новый размер диска, используя свойства «Компьютер» в файловом браузере.


Этот ответ не имеет смысла. Сначала вы создаете один большой раздел в / dev / sdb, затем изменяете его размер, но сначала вы не создаете в нем файловую систему. Возможно, вы забыли шаг копирования исходного раздела?
слеске

5

Клонирование на самом деле является лучшим решением, и есть более простой способ сделать это.

В меню «Файл» выберите «Virtual Media Manager», затем нажмите «Копировать». Источником будет ваш оригинальный жесткий диск vdi с фиксированным размером, а местом назначения будет что-то новое по вашему выбору (включая опцию нового).


Это часть ответа от sammyg.
Эфрен

4

ОК, так что я сделал это без клонирования .

У меня был VDI-файл объемом 100 ГБ (фиксированный формат) с Ubuntu. Работает нормально. Я хотел освободить место в хосте за счет сокращения виртуальной машины.

шаги:

  1. уборка

Удалил ненужные файлы. 45 ГБ бесплатно. Мне нужно только 30 ГБ, чтобы освободиться.

  1. Исправить гостевую ОС

У меня только один раздел, поэтому я ничего не могу сделать из гостевой Ubuntu. Установил Ubuntu Live в виртуальную машину и загрузился с нее.

Используется gpartedдля сокращения раздела до 70 ГБ. Создан новый раздел в неиспользуемом пространстве в ext4.

  1. Протрите свободное место

Свободное место в новом разделе (30 ГБ).

Следуйте этому руководству: Сжатие виртуального жесткого диска в Ubuntu в качестве гостевой и хост-ОС с использованием zerofree

Мой новый раздел был /dev/sda3.

$ sudo apt-get install zerofree
$ sudo init 1

...

# mkdir /tmp3
# mount -o ro -t ext4 /dev/sda3 /tmp3
# zerofree -v /dev/sda3
  1. Компактный VDI

    VBoxManage modifyhd "ubuntu.vdi" compact

Это заняло некоторое время, но это сработало!


1
Вы уверены, что это сработало? Согласно руководству VirtualBox, --compactработает только для динамически распределяемых изображений, а не для изображений фиксированного размера.
слеске

1
@ ATOzTOA: если файл образа диска увеличивается, то это не образ «фиксированного формата», а «динамически размещаемый» образ, который вы написали в своем ответе.
слеське

3
Нет, это динамически размещаемое изображение . Цитируем руководство: «Если вы создадите образ фиксированного размера, в вашей хост-системе будет создан файл образа, размер которого примерно равен размеру виртуального диска». Virtualbox.org/manual/ch05.html#vdidetails
Слёске

1
«Изображение фиксированного размера означает, что оно не может быть больше указанного размера». NO. «Фиксированный размер» означает, что размер является фиксированным, поэтому всегда одинаковым. Прочитайте документы.
слеське

1
Если кто-то читает это и не уверен, кто прав. @Sleske правильно. Изображения фиксированного размера в точности как говорят. Фиксирован до размера, указанного при создании изображения. В тестах это обеспечивает гораздо большую производительность по сравнению с динамически размещаемыми изображениями, поэтому любой, кто использует VBox для интенсивных задач HD, должен, вероятно, рассмотреть этот формат, несмотря на его ограничения.
Джек,

2

Как-то поздно на вечеринку здесь, но я добавлю свои 2 цента. Сначала я скажу, что это запутанный процесс, который сведет с ума большинство случайных пользователей, пытающихся разобраться. Почему Oracle не включил это в графический интерфейс VBox - загадка.

Шаг 1: Используйте командную строку Windows (VBoxmanage), чтобы увеличить размер диска. Совет здесь заключается в том, чтобы использовать идентификатор диска vdi вместо того, чтобы бесконечно пытаться ввести местоположение файла и получать сообщения об ошибках.

Шаг 2: Затем вам нужно расширить основной раздел, чтобы использовать новое пространство. Загрузите gparted iso и создайте новую виртуальную машину в VBox, используя ее в качестве источника IDE. Затем используйте существующий диск VDI в качестве диска SATA. Не создавайте виртуальный диск для этой машины. Загрузите новую машину, и у вас будет запущен gparted Gui. Это может занять пару перезагрузок, чтобы разобраться в себе.

После запуска gparted вы увидите разделы вашего диска vdi, размер которых вы хотите изменить. ВАЖНО: Вам нужно будет удалить расширенный раздел и заменить файловое пространство, чтобы иметь возможность увеличить размер основного раздела, поэтому не выделяйте все новое пространство для PP. После того, как вы это сделаете, вам нужно будет указать оставшееся пространство для нового расширенного раздела и создать в нем новое пространство подкачки. Я обнаружил, что это намного проще, чем суетиться с командной строкой.

Не кусок пирога, но это выполнимо ... мне потребовалось около полдня на изучение сети, чтобы понять это. Запуск win8.1 / Ubuntu на VBox

Вилли


2

Вот как я изменил размер / увеличил / расширил фиксированный образ VDI (мой процесс их сжатия находится в другом ответе):

  1. Используйте VirtualBox для создания нового диска нужного размера (размер ДОЛЖЕН быть как минимум таким же, как и у оригинала). Для этого откройте настройки VirtualBox для гостевой виртуальной машины, перейдите в раздел «Хранилище», щелкните контроллер жесткого диска (например, «SATA»), а затем нажмите «+», чтобы добавить жесткий диск. Затем настройте новый диск по своему усмотрению.
  2. Загрузите gparted live ISO и настройте гостевую виртуальную машину для загрузки с нее (опять же, Настройки хранилища).
  3. Сделайте резервную копию текущего хранилища вашей гостевой виртуальной машины.
  4. Загрузите гостевую виртуальную машину (должна загрузиться в gparted live). Изнутри gparted окружающей среды:
    1. Используйте приложение gparted, чтобы убедиться, что ваш существующий диск - "/ dev / sda", и что ваш новый (больший) диск - "/ dev / sdb" (верхний правый выпадающий список).
    2. Закройте приложение gparted.
    3. Откройте терминал с правами root (щелкните правой кнопкой мыши на рабочем столе -> Терминалы -> терминал с правами root).
    4. Введите следующую команду: dd if=/dev/sda of=/dev/sdb status=progress bs=128Mи дождитесь ее завершения. Это позволит скопировать исходный диск на новый побайтный диск, включая MBR и т. Д. (Примечание. Это может занять некоторое время в зависимости от размеров исходного диска, скорости диска на хосте и т. Д.). (Примечание: если вашей гостевой виртуальной машине выделено более 1 ГБ ОЗУ, вы можете изменить параметр «bs» на «bs = 256M», что может немного увеличить скорость копирования).
    5. Снова откройте приложение gparted
    6. Выберите новый (больший) диск (должен быть / dev / sdb) в правом верхнем раскрывающемся списке.
    7. Разверните раздел (ы) по желанию. Чтобы развернуть раздел, который не находится в конце, вам может потребоваться переместить разделы после того, который (-ые) вы хотите расширить. В зависимости от особенностей вашей схемы разбиения вам может потребоваться сделать это в несколько этапов, например, увеличить последний раздел до конца, а затем уменьшить его, переместив все в конец. В моем случае моим последним разделом был linux-swap, поэтому я просто удалил его, расширил основной раздел по своему желанию, а затем заново создал раздел подкачки в конце (стараясь повторить исходную схему разбиения).
    8. Применить изменения.
    9. На этом этапе у вас должен быть новый диск фиксированного размера со всем исходным содержимым и больше места, чем в оригинале. Вы можете смонтировать новый диск в gparted live env и проверить.
    10. Завершите работу гостевой виртуальной машины (gparted live) и удалите ISO-образ с диска виртуальной машины.
  5. Перейдите в настройки VBox для гостевой виртуальной машины, перейдите к хранилищу и удалите оригинальный диск из списка (щелкните правой кнопкой мыши и выберите «Удалить вложение»). Это должно оставить ваш недавно созданный диск для виртуальной машины. Примечание. На этом этапе вы просто удаляете диск из конфигурации гостевой виртуальной машины - ваш исходный диск гостевой виртуальной машины (т. Е. Маленький) все еще доступен на хост-компьютере.
  6. Загрузи ВМ и наслаждайся!
  7. (После того, как все будет подтверждено, что вы работаете должным образом, вы можете удалить исходный диск VM.)

Несмотря на то, что вышеописанное отлично сработало для меня несколько раз, кажется, если использовать LVM, потребуется еще несколько шагов. (ПРИМЕЧАНИЕ. Если используется LVM, вы можете просто добавить новый диск нужного размера, а затем добавить этот диск в группу томов.) В CentOS 6.6, где используется LVM, мне также пришлось увеличить пространство внутри LVM. Итак, после загрузки нового диска, созданного выше, я сделал что-то вроде этого (различные части этого будут различаться в зависимости от имен вашей установки):

  1. Получить информацию о настройке LVM:

    # pvs
      PV         VG          Fmt  Attr PSize  PFree
      /dev/sda2  vg_rhel6bm1 lvm2 a--  31.51g    0 
    # vgs
      VG          #PV #LV #SN Attr   VSize  VFree
      vg_rhel6bm1   1   2   0 wz--n- 31.51g    0 
    # lvs
      LV      VG          Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
      lv_root vg_rhel6bm1 -wi-ao---- 28.31g
      lv_swap vg_rhel6bm1 -wi-ao----  3.20g
    
  2. Расширить физический объем (PV) (группа томов (VG) автоматически будет отражать такое же увеличение):

    # pvresize /dev/sda2
      Physical volume "/dev/sda2" changed
      1 physical volume(s) resized / 0 physical volume(s) not resized
    # pvs
      PV         VG          Fmt  Attr PSize  PFree
      /dev/sda2  vg_rhel6bm1 lvm2 a--  39.51g 8.00g
    # vgs
      VG          #PV #LV #SN Attr   VSize  VFree
      vg_rhel6bm1   1   2   0 wz--n- 39.51g 8.00g
    
  3. Расширить логический том (LV):

    # lvextend /dev/vg_rhel6bm1/lv_root /dev/sda2
      Size of logical volume vg_rhel6bm1/lv_root changed from 28.31 GiB (7247 extents) to 36.31 GiB (9295 extents).
      Logical volume lv_root successfully resized
    # lvs
      LV      VG          Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
      lv_root vg_rhel6bm1 -wi-ao---- 36.31g
      lv_swap vg_rhel6bm1 -wi-ao----  3.20g
    
  4. Расширить файловую систему:

    До:

    # df -h
      Filesystem            Size  Used Avail Use% Mounted on
      /dev/mapper/vg_rhel6bm1-lv_root
                             28G   24G  3.1G  89% /
      tmpfs                 939M  232K  939M   1% /dev/shm
      /dev/sda1             477M   85M  368M  19% /boot
    

    Команда:

    # resize2fs /dev/mapper/vg_rhel6bm1-lv_root
      resize2fs 1.41.12 (17-May-2010)
      Filesystem at /dev/mapper/vg_rhel6bm1-lv_root is mounted on /; on-line resizing required
      old desc_blocks = 2, new_desc_blocks = 3
      Performing an on-line resize of /dev/mapper/vg_rhel6bm1-lv_root to 9518080 (4k) blocks.
      The filesystem on /dev/mapper/vg_rhel6bm1-lv_root is now 9518080 blocks long.
    

    После:

    # df -h
      Filesystem            Size  Used Avail Use% Mounted on
      /dev/mapper/vg_rhel6bm1-lv_root
                             36G   24G   11G  69% /
      tmpfs                 939M  232K  939M   1% /dev/shm
      /dev/sda1             477M   85M  368M  19% /boot
    

Хороший ответ! Добро пожаловать на сайт!
djsmiley2k - CoW

1

Вот как я изменил размер / уменьшил / уменьшил фиксированный образ VDI (мой процесс его расширения находится в другом ответе в этой же теме):

Сначала краткая справка о том, зачем мне это нужно (поскольку существует множество сценариев сокращения VDI, некоторые из которых могут оказаться неосуществимыми при таком подходе): Несколько лет назад я создал фиксированный VDI для гостевой системы Windows Server и оценил его в 600 ГБ. Я не помню, почему я выбрал этот размер, но на сегодняшний день я использовал только 100 ГБ в этом госте и хочу вернуть большую часть оставшегося пространства. Поэтому в моем случае я хочу сохранить все данные в гостевой системе и просто хочу освободить неиспользуемое пространство в гостевой системе.

(Следующие шаги в основном основаны на моей памяти за последние 2 часа, поэтому извиняюсь, если что-то здесь упустил.)

  1. Определите, насколько большим вы хотите новый размер. Естественно, вы, вероятно, захотите оставить гостю дополнительное пространство сверх того, что он в настоящее время потребляет. Размер должен быть не меньше, чем данные на исходном / исходном диске, округленные до ближайшего ГБ.
  2. Используйте VirtualBox для создания нового диска фиксированного размера с размером, определенным на предыдущем шаге. Для этого откройте настройки VirtualBox для гостевой виртуальной машины, перейдите в раздел «Хранилище», щелкните контроллер жесткого диска (например, «SATA»), а затем нажмите «+», чтобы добавить жесткий диск. Затем настройте новый диск по своему усмотрению.
  3. Загрузите gparted live ISO и настройте гостевую виртуальную машину для загрузки с нее (опять же, Настройки хранилища).
  4. Сделайте резервную копию текущего хранилища вашей гостевой виртуальной машины.
  5. Загрузите гостевую виртуальную машину (должна загрузиться в gparted live). Изнутри gparted окружающей среды:

    1. Используйте приложение gparted, чтобы определить, какой диск является «оригинальным», а какой «новым». В оригинале будет хотя бы один раздел, а новый будет полностью пустым. (Обычно «оригинальный» - это первый диск, которому назначен / dev / sda, а «новый» - это второй диск, которому назначен / dev / sdb.)
    2. Используйте приложение gparted, чтобы уменьшить исходный / исходный раздел (ы) до нужного вам размера. Не забудьте нажать кнопку «Применить» после того, как вы запланировали все операции. (Это может занять некоторое время, в зависимости от размера (ов) раздела и скорости диска.)
    3. Используйте приложение gparted для создания таблицы разделов на новом диске (Устройство -> Создать таблицу разделов ..., оставьте тип как MSDOS).
    4. Используйте приложение gparted для создания идентичных разделов на новом диске. (Чтобы убедиться, что они совпадают, я вытащил подробную информацию для каждого раздела на исходном диске, используя опцию меню Partition-> Information ..., и сохранил снимок экрана, чтобы использовать его при создании того же раздела ( s) на новом диске / диске назначения.) Обязательно:
      • Создайте каждый целевой раздел того же размера, что и (заново настроенный) оригинал.
      • Установите любые флаги для соответствующих разделов (может потребоваться сделать это после создания раздела).
      • Установите любую метку на разделах, чтобы соответствовать.
      • (ПРИМЕЧАНИЕ. UUID будет установлен автоматически при копировании данных.)
    5. Нажмите кнопку «Применить», чтобы зафиксировать все изменения.
    6. Запишите, какой диск является «оригинальным», а какой «новым», и запишите номера соответствующих разделов (например, / dev / sda1 -> / dev / sdb1, / dev / sda2 -> / dev / sdb2, ...)
    7. Закройте приложение gparted.
    8. Откройте терминал с правами root (щелкните правой кнопкой мыши на рабочем столе -> Терминалы -> терминал с правами root).
    9. Предполагая, что ваш «оригинальный» диск - / dev / sda, а «новый» - / dev / sdb (если нет, измените следующую команду соответствующим образом), то мы будем копировать каждый раздел по одному. Для каждого раздела, отмеченного на шаге выше, введите в терминале следующую команду:

      # dd if=/dev/sda1 of=/dev/sdb1 status=progress bs=128M
      

      и дождаться его завершения. Это скопирует раздел 1 с исходного диска в раздел 1 на байтовом диске нового диска.
      Повторите команду для каждого оставшегося раздела:

      # dd if=/dev/sda2 of=/dev/sdb2 status=progress bs=128M
      # dd if=/dev/sda3 of=/dev/sdb3 status=progress bs=128M
      # ...
      

      Примечания:

      • Это может занять некоторое время в зависимости от размеров разделов, скорости диска на хосте и т. Д.).
      • Если вашей гостевой виртуальной машине выделено более 1 ГБ ОЗУ, вы можете изменить параметр «bs» на «bs = 256M», что может немного ускорить копирование.
    10. На этом этапе у вас должен быть новый диск фиксированного размера со всем исходным содержимым и файл VDI меньшего размера, чем исходный. Вы можете смонтировать новый диск в gparted live env и убедиться, что все данные там.
    11. Завершите работу гостевой виртуальной машины (gparted live) и удалите gparted ISO с диска виртуальной машины.
  6. Перейдите в настройки VBox для гостевой виртуальной машины, перейдите к хранилищу и удалите оригинальный диск из списка (щелкните правой кнопкой мыши и выберите «Удалить вложение»). Это должно оставить ваш недавно созданный диск для виртуальной машины. Примечание. На этом шаге вы просто удаляете диск из конфигурации гостевой виртуальной машины - ваш исходный диск гостевой виртуальной машины (т. Е. Большой VDI) по-прежнему доступен на хост-компьютере.
  7. Последний шаг, который я должен был сделать для моего гостя Windows, был установить / исправить MBR и / или BCD. (Я не знаю, требуется ли что-либо из этого для гостя Linux, поскольку я еще этого не сделал.) Если я просто загрузился с моего нового VDI, у меня появилось окно с сообщением об ошибке загрузки Windows с этим содержимым (к сожалению, я не сделал этого) скриншот, прежде чем я решу проблему):

    windows failed to start
    status 0xc000000e
    information A required device isn't connected or can't be accessed.
    
  8. Получите ISO-образ установки или восстановления Windows (в идеале тот, который соответствует вашей версии ОС) и настройте гостевую виртуальную машину для загрузки с нее (опять же, Настройки хранилища).

  9. Запустите гостевую виртуальную машину и выберите загрузку с CD / DVD.

    1. Поскольку каждая версия установки / восстановления Windows различна, я не могу дать здесь точных шагов для всех. Но идея состоит в том, чтобы выбрать опцию «Восстановить» и найти путь к командной строке. В моем случае с Windows Server 2012 мне пришлось: (а) выбрать свой язык / локаль; (б) Выберите «Ремонт компьютера» в левом нижнем углу; (c) Выберите «Устранить неполадки»; (d) Выберите «Командная строка».
    2. Как только вы в командной строке, выполните следующие команды (спасибо http://loverofcode.blogspot.com/2013/11/fixed-0xc000000e-boot-error.html за информацию!):

      > bootrec /fixmbr
      > bootrec /fixboot
      > bootrec /rebuildBcd
      

      Эта последняя команда должна найти вашу установку Windows и предложить добавить ее в BCD. Ответьте «Y».

    3. Выйдите из командной строки и затем выключите гостевую виртуальную машину.
  10. Перейдите в настройки VBox для гостевой виртуальной машины, перейдите в раздел «Хранилище» и удалите установочный / восстановительный образ Windows Windows из привода CD / DVD.
  11. Загрузи ВМ и наслаждайся!
  12. (После того, как все будет подтверждено, что вы работаете должным образом, вы можете удалить исходный диск VM.)

0

Я предоставляю ответ, распространяющийся на любую размещенную операционную систему, работающую на любой операционной системе. Этот ответ предполагает, что вы хотите увеличить размер (расширить).

Примечание. Как указано djule5 (см. Комментарий сразу после вопроса), modifyhdтеперь он известен как modifymedium(но остается обратно совместимым). Здесь я использую modifymedium.

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

Да, этот ответ для файла VDI, уже используемого виртуальной машиной VirtualBox.

2. Откройте терминал на вашем хосте, чтобы изменить размер образа диска

Командная строка VBoxManage не хочет изменять размер образа диска, используя имя файла VDI.

$ ls -s1 *.vdi
10260316160 my_disk_image.vdi

$ vboxmanage modifymedium my_disk_image.vdi --resizebyte 16260316160                                                                      VBoxManage: error: Cannot register the hard disk '/home/user/vm/my_disk_image.vdi' {181540c7-b791-4b2f-8e01-5feaff04a6eb} because a hard disk '/home/user/vm/my_disk_image.vdi' with UUID {181540c7-b791-4b2f-8e01-5feaff04a6eb} already exists
VBoxManage: error: Details: code NS_ERROR_INVALID_ARG (0x80070057), component VirtualBoxWrap, interface IVirtualBox, callee nsISupports
VBoxManage: error: Context: "OpenMedium(Bstr(pszFilenameOrUuid).raw(), enmDevType, enmAccessMode, fForceNewUuidOnOpen, pMedium.asOutParam())" at line 179 of file VBoxManageDisk.cpp

Поэтому определите UUID вашего образа диска.

$ ls -s1 *.vdi
10260316160 my_disk_image.vdi

$ vboxmanage list hdds
UUID:           181540c7-b791-4b2f-8e01-5feaff04a6eb
Parent UUID:    base
State:          created
Type:           normal (base)
Location:       /home/user/vm/my_disk_image.vdi
Storage format: VDI
Capacity:       10240 MBytes
Encryption:     disabled

Увеличьте размер образа диска.

$ vboxmanage modifymedium 181540c7-b791-4b2f-8e01-5feaff04a6eb --resizebyte 16260316160
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%

3. Используйте инструмент разделения, чтобы расширить логический раздел

Запустите размещенную виртуальную машину. Затем используйте инструмент разбиения .

Некоторые инструменты для хостинга GNU / Linux:

Если размещенная система использует Windows:

4. Проверьте свободное место в разделе

Размер вашего файла VDI (в вашей хост-системе), возможно, не изменился, поскольку ваша виртуальная машина еще не использовала дополнительный объем пространства. Веселиться.


-1

Это будет работать для меня и должен указать общий объем емкости жесткого диска. Не пространство, что нам нужно увеличить ...

C: \ Program Files \ Oracle \ VirtualBox> VBoxManage.exe modifyhd "D: \ Виртуальная машина \ Виртуальные машины VirtualBox \ Windows 7 (сервер FileZilla) \ Windows 7 (сервер FileZilla) .vdi" - resize 15360

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.