65

Я пытаюсь выяснить, как изменить размер файла 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? Что-нибудь в процессе?

9 ответов9

116

Резюме:

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

Ссылка

10

Вот довольно простой процесс, который помог мне изменить размер диска фиксированного размера 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 в качестве загрузочного диска. Затем запустите гостевую ОС и проверьте новый размер диска, используя свойства "Компьютер" в файловом браузере.

5

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

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

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

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

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, поэтому я просто удалил его, расширил основной раздел по желанию, а затем заново создал раздел swap в конце (следя за тем, чтобы повторить его исходную схему разбиения).
    8. Применять изменения.
    9. На этом этапе у вас должен быть новый диск фиксированного размера со всем исходным содержимым и большим пространством, чем у исходного. Вы можете смонтировать новый диск в gparted live env и проверить.
    10. Завершите работу гостевой виртуальной машины (gparted live) и удалите ISO-образ с диска виртуальной машины.
  5. Перейдите в настройки VBox для гостевой виртуальной машины, перейдите к хранилищу и удалите оригинальный диск из списка (щелкните правой кнопкой мыши и выберите "Удалить вложение"). Это должно оставить ваш недавно созданный диск для виртуальной машины. Примечание. На этом этапе вы просто удаляете диск из конфигурации гостевой виртуальной машины - ваш исходный диск гостевой виртуальной машины (т. Е. Маленький) все еще доступен на хост-компьютере.
  6. Загрузи ВМ и наслаждайся!
  7. (После того, как все будет подтверждено, что вы работаете должным образом, вы можете удалить исходный диск виртуальной машины.)

Несмотря на то, что вышеописанное отлично сработало для меня несколько раз, кажется, если использовать 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
    
2

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

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

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

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

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

Вилли

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 для гостевой виртуальной машины, перейдите в раздел "Хранилище" и удалите установочный ISO-образ Windows с CD / DVD-привода.
  11. Загрузи ВМ и наслаждайся!
  12. (После того, как все будет подтверждено, что вы работаете должным образом, вы можете удалить исходный диск виртуальной машины.)
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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .