Шаг первый: найдите команду VBoxManage и откройте командную строку
СВЯЗАННЫЙ: Полное руководство по ускорению ваших виртуальных машин
VirtualBox позволяет преобразовывать фиксированный диск в динамический диск или динамический диск в фиксированный диск, но эта опция не отображается в графическом интерфейсе. Вместо этого вы должны использовать команду VBoxManage.exe
.
Найдите эту команду, чтобы продолжить. В Windows вы найдете его в программном каталоге VirtualBox, который находится в C:Program FilesOracleVirtualBox
по умолчанию. Если вы установили VirtualBox в другой каталог, посмотрите туда.
Откройте окно командной строки. Для этого откройте меню «Пуск», введите cmd
и нажмите Enter.
Введите cd
в командной строке, а затем путь к папке, в которой находится команда VBoxManage. Вам нужно будет заключить его в кавычки.
Вы можете быстро сделать это, введя cd
в окно командной строки, а затем перетащив значок папки из адресной строки файлового менеджера в командную строку.
Если вы используете путь по умолчанию, он должен выглядеть следующим образом:
cd "C: Program Files Oracle VirtualBox"
ПРИМЕЧАНИЕ. В этих инструкциях предполагается, что вы используете VirtualBox в Windows. Если вы используете VirtualBox в macOS или Linux, вы можете просто открыть окно терминала и запустить команду vboxmanage
в vboxmanage
режиме, как и любую другую команду.
Шаг второй: найдите путь к диску, который вы хотите конвертировать
Запустите следующую команду в окне командной строки, чтобы просмотреть список всех виртуальных жестких дисков на вашем компьютере:
VBoxManage.exe список жестких дисков
Просмотрите список и определите путь к файлу виртуального диска, который вы хотите преобразовать. Допустим, мы хотим изменить виртуальный диск, связанный с виртуальной машиной с именем «Windows». Как мы можем видеть в выводе ниже, путь к этому виртуальному диску в нашей системе — C:UserschrisVirtualBox VMsWindowsWindows.vdi
.
Шаг третий: конвертировать виртуальный диск
Теперь вы можете использовать команду VBoxManage для преобразования виртуального диска из фиксированного в динамический или из динамического в фиксированный.
Чтобы преобразовать виртуальный диск из фиксированного в динамический, выполните следующую команду:
VBoxManage.exe clonemedium диск "C: path to source.vdi" "C: path to destination.vdi" - вариант стандарта
Например, если исходный диск находится по адресу C:UserschrisVirtualBox VMsWindowsWindows.vdi
и вы хотите создать новый диск с именем Windows-dynamic.vdi в той же папке, вы должны выполнить:
VBoxManage.exe clonemedium диск "C: Users chris VirtualBox VMs Windows Windows.vdi" "C: Users chris VirtualBox VMs Windows Windows-dynamic.vdi" - вариант стандарта
Чтобы преобразовать виртуальный диск из динамического в фиксированный, выполните следующую команду:
VBoxManage.exe clonemedium диск "C: path to source.vdi" "C: path to destination.vdi" - вариант исправлен
Например, если исходный диск находится по адресу C:UserschrisVirtualBox VMsWindowsWindows.vdi
и вы хотите создать новый диск с именем Windows-fixed.vdi в той же папке, вы должны выполнить:
VBoxManage.exe clonemedium диск "C: Users chris VirtualBox VMs Windows Windows.vdi" "C: Users chris VirtualBox VMs Windows Windows-fixed.vdi" - вариант исправлен
Шаг четвертый: удалить старый виртуальный диск
Приведенная выше команда просто клонирует существующий диск. В итоге вы получите как оригинальный файл диска, так и новый файл диска.
Во-первых, вам нужно фактически удалить существующий виртуальный диск из VirtualBox. В VirtualBox щелкните правой кнопкой мыши виртуальную машину, которая использует виртуальный диск, и выберите «Настройки».
Выберите «Хранилище» для просмотра подключенных устройств хранения. Щелкните правой кнопкой мыши оригинальный VDI и выберите «Удалить вложение». Нажмите «ОК» после этого.
Приведенный ниже процесс удалит исходный файл с вашего диска. Предупреждение : вы можете создать резервную копию исходного файла на диске, если вы этого еще не сделали, на случай, если что-то пойдет не так с этим процессом.
В командной строке выполните следующую команду, чтобы просмотреть список всех виртуальных дисков на вашем компьютере:
VBoxManage.exe список жестких дисков
Найдите UUID исходного диска, который вы хотите удалить. Вы можете скопировать его в буфер обмена, выбрав его левой кнопкой мыши, а затем щелкнув правой кнопкой мыши.
Выполните следующую команду, чтобы удалить исходный диск из реестра VirtualBox и удалить его. Вы можете щелкнуть правой кнопкой мыши в окне командной строки, чтобы вставить UUID.
VBoxManage.exe closemedium UUID - удалить
Шаг пятый: переименуйте новый диск
Теперь вы должны переименовать новый файл на диске так, чтобы он имел то же имя, что и исходный. Просто перейдите к нему в окне проводника или проводника.
Щелкните правой кнопкой мыши файл VDI, выберите «Переименовать» и измените его на исходное имя. Например, здесь мы переименовали созданный нами файл Windows-fixed.vdi в Windows.vdi.
После того, как вы переименовали диск, удалите старое имя диска из VirtualBox. Щелкните «Файл»> «Диспетчер виртуальных носителей» в VirtualBox и найдите оригинальное имя переименованного диска — слева от него будет отображаться желтый значок предупреждения. Щелкните правой кнопкой мыши и выберите «Удалить». Нажмите «Удалить» еще раз, чтобы подтвердить и закрыть «Закрыть».
Шаг шестой: Вставьте диск в VirtualBox
Вернитесь в VirtualBox, щелкните правой кнопкой мыши виртуальную машину, связанную с виртуальным диском, и выберите «Настройки». В разделе «Хранилище» щелкните правой кнопкой мыши контроллер SATA и выберите «Добавить жесткий диск».
Выберите «Выбрать существующий диск» и перейдите к файлу, который вы только что переименовали.
Нажмите «ОК», чтобы закрыть окно настроек виртуальной машины. Теперь вы сможете нормально загружать виртуальную машину. Его диск будет либо фиксированным, либо динамическим, в зависимости от того, куда вы его конвертировали.
На чтение 6 мин. Просмотров 1.5k. Опубликовано 09.07.2019
VirtualBox позволяет вам выбрать либо динамически выделенный, либо диск фиксированного размера при создании нового файла виртуального жесткого диска. Динамически распределенные диски создаются быстрее и могут увеличиваться в размерах. Диски фиксированного размера могут быть более быстрыми в использовании, но не могут увеличиваться в размерах после заполнения. Вы можете конвертировать между двумя форматами и изменять размер дисков, если хотите.
Прежде чем продолжить, мы рекомендуем завершить работу виртуальной машины, а не приостанавливать ее и сохранять ее состояние. VirtualBox должен сказать, что виртуальная машина выключена.
Содержание
- Шаг первый: найдите команду VBoxManage и откройте командную строку
- Шаг второй: найдите путь к диску, который вы хотите конвертировать
- Шаг третий: конвертировать виртуальный диск
- Шаг четвертый: удалить старый виртуальный диск
- Шаг пятый: переименуйте новый диск
- Шаг шестой: Вставьте диск в VirtualBox
Шаг первый: найдите команду VBoxManage и откройте командную строку
VirtualBox позволяет преобразовывать фиксированный диск в динамический диск или динамический диск в фиксированный диск, но эта опция не отображается в графическом интерфейсе. Вместо этого вы должны использовать команду VBoxManage.exe
.
Найдите эту команду, чтобы продолжить. В Windows вы найдете его в программном каталоге VirtualBox, который по умолчанию является C: Program Files Oracle VirtualBox
. Если вы установили VirtualBox в другой каталог, посмотрите туда.
Откройте окно командной строки. Для этого откройте меню «Пуск», введите cmd
и нажмите Enter.
Введите cd
в командной строке, а затем путь к папке, в которой находится команда VBoxManage. Вам нужно будет заключить его в кавычки.
Вы можете быстро сделать это, введя cd
в окно командной строки, а затем перетащив значок папки из адресной строки файлового менеджера в командную строку.
Если вы используете путь по умолчанию, он должен выглядеть следующим образом:
cd "C: Program Files Oracle VirtualBox"
ПРИМЕЧАНИЕ. В этих инструкциях предполагается, что вы используете VirtualBox в Windows. Если вы используете VirtualBox в macOS или Linux, вы можете просто открыть окно терминала и запустить команду vboxmanage
в обычном режиме, как и любую другую команду.
Шаг второй: найдите путь к диску, который вы хотите конвертировать
Запустите следующую команду в окне командной строки, чтобы просмотреть список всех виртуальных жестких дисков на вашем компьютере:
Список жестких дисков VBoxManage.exe
Просмотрите список и определите путь к файлу виртуального диска, который вы хотите преобразовать. Допустим, мы хотим изменить виртуальный диск, связанный с виртуальной машиной с именем «Windows». Как видно из приведенных ниже результатов, путь к этому виртуальному диску в нашей системе – C: Users chris VirtualBox VMs Windows Windows.vdi
.
Шаг третий: конвертировать виртуальный диск
Теперь вы можете использовать команду VBoxManage для преобразования виртуального диска из фиксированного в динамический или из динамического в фиксированный.
Чтобы преобразовать виртуальный диск из фиксированного в динамический, выполните следующую команду:
VBoxManage.exe clonemedium диск "C: path to source.vdi" "C: path to destination.vdi" - вариант стандарта
Например, если исходный диск находится в C: Users chris VirtualBox VMs Windows Windows.vdi
и вы хотите создать новый диск с именем Windows-dynamic.vdi в той же папке вы бы запустили:
VBoxManage.exe clonemedium диск "C: Users chris VirtualBox VMs Windows Windows.vdi" "C: Users chris VirtualBox VMs Windows Windows-dynamic.vdi" - вариант стандарта
Чтобы преобразовать виртуальный диск из динамического в фиксированный, выполните следующую команду:
VBoxManage.exe clonemedium диск "C: path to source.vdi" "C: path to destination.vdi" - вариант исправлен
Например, если исходный диск находится по адресу C: Users chris VirtualBox VMs Windows Windows.vdi
и вы хотите создать новый диск с именем Windows-fixed.vdi в той же папке вы бы запустили:
VBoxManage.exe clonemedium диск "C: Users chris VirtualBox VMs Windows Windows.vdi" "C: Users chris VirtualBox VMs Windows Windows-fixed.vdi" - вариант исправлен
Шаг четвертый: удалить старый виртуальный диск
Приведенная выше команда просто клонирует существующий диск. В итоге вы получите как оригинальный файл диска, так и новый файл диска.
Во-первых, вам нужно фактически удалить существующий виртуальный диск из VirtualBox. В VirtualBox щелкните правой кнопкой мыши виртуальную машину, которая использует виртуальный диск, и выберите «Настройки».
Выберите «Хранилище» для просмотра подключенных устройств хранения. Щелкните правой кнопкой мыши оригинальный VDI и выберите «Удалить вложение». Нажмите «ОК» после этого.
Приведенный ниже процесс удалит исходный файл с вашего диска. Предупреждение . Вы можете создать резервную копию исходного файла на диске, если вы этого еще не сделали, на случай, если что-то пойдет не так с этим процессом.
В командной строке выполните следующую команду, чтобы просмотреть список всех виртуальных дисков на вашем компьютере:
Список жестких дисков VBoxManage.exe
Найдите UUID исходного диска, который вы хотите удалить. Вы можете скопировать его в буфер обмена, выбрав его левой кнопкой мыши, а затем щелкнув правой кнопкой мыши.
Выполните следующую команду, чтобы удалить исходный диск из реестра VirtualBox и удалить его. Вы можете щелкнуть правой кнопкой мыши в окне командной строки, чтобы вставить UUID.
VBoxManage.exe closemedium UUID - удалить
Теперь вы должны переименовать новый файл на диске так, чтобы он имел то же имя, что и исходный. Просто перейдите к нему в окне проводника или проводника.
Щелкните правой кнопкой мыши файл VDI, выберите «Переименовать» и измените его на исходное имя. Например, здесь мы переименовали созданный нами файл Windows-fixed.vdi в Windows.vdi.
После того, как вы переименовали диск, удалите старое имя диска из VirtualBox. Нажмите «Файл»> «Virtual Media Manager» в VirtualBox и найдите оригинальное имя переименованного диска – слева от него будет отображаться желтый значок предупреждения. Щелкните правой кнопкой мыши и выберите «Удалить». Нажмите «Удалить» еще раз, чтобы подтвердить и закрыть «Закрыть».
Шаг шестой: Вставьте диск в VirtualBox
Вернитесь в VirtualBox, щелкните правой кнопкой мыши виртуальную машину, связанную с виртуальным диском, и выберите «Настройки». В разделе «Хранилище» щелкните правой кнопкой мыши контроллер SATA и выберите «Добавить жесткий диск».
Выберите «Выбрать существующий диск» и перейдите к файлу, который вы только что переименовали.
Нажмите «ОК», чтобы закрыть окно настроек виртуальной машины. Теперь вы сможете нормально загружать виртуальную машину. Его диск будет либо фиксированным, либо динамическим, в зависимости от того, куда вы его конвертировали.
Summary:
VBoxManage.exe modifyhd --resize
can increase (but not decrease) the logical size of disk image (the size seen by the guest OS).VBoxManage.exe modifyhd inputfile.vdi --compact
can decrease the
physical disk image size (the size of the image file on disk as seen by the host OS). This however does not change the logical disk size. Note that this only works if free space has been zero’ed in the guest OS first.modifyhd
only works only with the dynamic format variant («dynamically allocated image»).modifyhd
only works with VDI and VHD image formats.- If you are using snapshots you will have to clone the latest snapshot
VDI from «Snapshots» subfolder.
For details see section 8.23. VBoxManage modifyhd in the manual.
The reason why decreasing the logical disk size of a VDI has not been implemented yet is to prevent data corruption which could occur and you would have unbootable VMs as a result of it. Therefore, when the --resize
option is used, the new disk size must be greater than the current size. It is not allowed to be less than or equal to the current size. In other words a 40 GB disk can only be resized to 41 GB or greater than that, it cannot be resized to 40 GB (that’s just dumb) or 39 GB or less than that.
Old versions of VirtualBox created VDI files as «fixed» format varient. The new default setting is now to create «dynamic» format variants when new VDI (virtual disk image) files are created. (I’m guessing this is the case since the introduction of dynamic format variant, whichever version that was introduced in.)
So what the error message «operation for this format is not implemented yet» means is that your VDI file uses the «fixed» format variant. To get around this problem you will have to clone your VDI file using the clonehd
command. To view what format variant your VDI file is in at the moment, you can use the showhdinfo
command.
Working Example
Show VDI information about the current disk.
Input command: vboxmanage.exe showhdinfo pathinputfile.vdi
C:Program FilesOracleVirtualBox>VBoxManage.exe showhdinfo "%userprofile%virt
ualbox vmssg2_win7_x64_labsg2_win7_x64_lab.vdi"
UUID: 132e9af1-0428-49f4-bc45-4d84680e17f5
Parent UUID: base
State: created
Type: normal (base)
Location: C:UsersNameVirtualBox VMssg2_win7_x64_labsg2_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 FilesOracleVirtualBox>
See where it says «fixed default»? That’s why it spits out the error above when you try to resize it.
Clone the old VDI file to a new VDI file.
Input command: vboxmanage.exe clonehd pathinputfile.vdi pathoutputfile.vdi
C:Program FilesOracleVirtualBox>VBoxManage.exe clonehd "%userprofile%virtual
box vmssg2_win7_x64_labsg2_win7_x64_lab.vdi" "%userprofile%virtualbox vmssg2
_win7_x64_labsg2_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 FilesOracleVirtualBox>
Voilà! The old file has now been cloned to a new file. Since the default setting in new versions of VirtualBox is to use «dynamic» format variant, you don’t have to define that explicitly. Although, if you are working with an older version of VirtualBox, then you might want to set the option to «dynamic» (if at all available) to ensure better compatibility and/or flexibility with future versions of VirtualBox.
Show VDI information about the cloned disk.
Input command: vboxmanage.exe showhdinfo pathinputfile_clone.vdi
C:Program FilesOracleVirtualBox>VBoxManage.exe showhdinfo "%userprofile%virt
ualbox vmssg2_win7_x64_labsg2_win7_x64_lab_clone.vdi"
UUID: 34dafa68-3093-4946-926a-8237ea263e5c
Parent UUID: base
State: created
Type: normal (base)
Location: C:UsersNamevirtualbox vmssg2_win7_x64_labsg2_win7_x64_lab_
clone.vdi
Storage format: VDI
Format variant: dynamic default
Capacity: 40960 MBytes
Size on disk: 7806 MBytes
C:Program FilesOracleVirtualBox>
See how it now says «dynamic default»? How nice!
(On the side note! The reason it says 7806 MB as physical size here is because I had used the --compact
option on the original VDI file in an attempt to enforce conversion to dynamic format variant. Just something I read on the VirtualBox forum, it supposedly would have worked with older versions, so I thought I might as well give that a try. It didn’t work.)
Resizing the cloned disk.
Input command: vboxmanage.exe modifyhd pathinputfile.vdi --resize 51200
C:Program FilesOracleVirtualBox>VBoxManage.exe modifyhd "%userprofile%virtua
lbox vmssg2_win7_x64_labsg2_win7_x64_lab_clone.vdi" --resize 51200
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
C:Program FilesOracleVirtualBox>
Success! No format bullshitting no more. Just remember to resize the new, cloned disk, and not the original one. Keep in mind that the size is expressed in MB. I believe you can use e.g. 51200
as well as 50G
(or possibly «GB»). There is also the option --resizebyte
which can be used to express the size in bytes.
Show VDI information about the resized clone disk.
Input command: vboxmanage.exe showhdinfo pathinputfile_clone.vdi
C:Program FilesOracleVirtualBox>VBoxManage.exe showhdinfo "%userprofile%virt
ualbox vmssg2_win7_x64_labsg2_win7_x64_lab_clone.vdi"
UUID: 34dafa68-3093-4946-926a-8237ea263e5c
Parent UUID: base
State: created
Type: normal (base)
Location: C:UsersNamevirtualbox vmssg2_win7_x64_labsg2_win7_x64_lab_
clone.vdi
Storage format: VDI
Format variant: dynamic default
Capacity: 51200 MBytes
Size on disk: 7806 MBytes
C:Program FilesOracleVirtualBox>
That’s it! From here what you have to do is add this cloned drive as your new VDI for the VM. You do that inside VirtualBox. I won’t go into that. If you have been able to read and understand this so far then you probably don’t need no further guiding. You can either delete the old «fixed» file, or leave it as a backup. Make sure you test the new VDI file before you delete the original source file.
Note! You will not immediately see the new size of the cloned disk. You have to boot the VM with it, and then you have to use your partition management tool to expand your partition to fill the virtual disk (or create more partitions). For Windows, just run diskmgmt.msc
and you’ll be able to expand the partition in there.
Screenshots
Reference
- forums.virtualbox.org — VBoxManage modifyhd —resize ==
VBOX_E_NOT_SUPPORTED - forums.virtualbox.org — 8.23. VBoxManage
modifyhd - www.virtualbox.org — 8.23. VBoxManage
modifyhd - SU — Resize partition of Windows 7 running on VirtualBox with
dynamically allocated
storage
Summary:
VBoxManage.exe modifyhd --resize
can increase (but not decrease) the logical size of disk image (the size seen by the guest OS).VBoxManage.exe modifyhd inputfile.vdi --compact
can decrease the
physical disk image size (the size of the image file on disk as seen by the host OS). This however does not change the logical disk size. Note that this only works if free space has been zero’ed in the guest OS first.modifyhd
only works only with the dynamic format variant («dynamically allocated image»).modifyhd
only works with VDI and VHD image formats.- If you are using snapshots you will have to clone the latest snapshot
VDI from «Snapshots» subfolder.
For details see section 8.23. VBoxManage modifyhd in the manual.
The reason why decreasing the logical disk size of a VDI has not been implemented yet is to prevent data corruption which could occur and you would have unbootable VMs as a result of it. Therefore, when the --resize
option is used, the new disk size must be greater than the current size. It is not allowed to be less than or equal to the current size. In other words a 40 GB disk can only be resized to 41 GB or greater than that, it cannot be resized to 40 GB (that’s just dumb) or 39 GB or less than that.
Old versions of VirtualBox created VDI files as «fixed» format varient. The new default setting is now to create «dynamic» format variants when new VDI (virtual disk image) files are created. (I’m guessing this is the case since the introduction of dynamic format variant, whichever version that was introduced in.)
So what the error message «operation for this format is not implemented yet» means is that your VDI file uses the «fixed» format variant. To get around this problem you will have to clone your VDI file using the clonehd
command. To view what format variant your VDI file is in at the moment, you can use the showhdinfo
command.
Working Example
Show VDI information about the current disk.
Input command: vboxmanage.exe showhdinfo pathinputfile.vdi
C:Program FilesOracleVirtualBox>VBoxManage.exe showhdinfo "%userprofile%virt
ualbox vmssg2_win7_x64_labsg2_win7_x64_lab.vdi"
UUID: 132e9af1-0428-49f4-bc45-4d84680e17f5
Parent UUID: base
State: created
Type: normal (base)
Location: C:UsersNameVirtualBox VMssg2_win7_x64_labsg2_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 FilesOracleVirtualBox>
See where it says «fixed default»? That’s why it spits out the error above when you try to resize it.
Clone the old VDI file to a new VDI file.
Input command: vboxmanage.exe clonehd pathinputfile.vdi pathoutputfile.vdi
C:Program FilesOracleVirtualBox>VBoxManage.exe clonehd "%userprofile%virtual
box vmssg2_win7_x64_labsg2_win7_x64_lab.vdi" "%userprofile%virtualbox vmssg2
_win7_x64_labsg2_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 FilesOracleVirtualBox>
Voilà! The old file has now been cloned to a new file. Since the default setting in new versions of VirtualBox is to use «dynamic» format variant, you don’t have to define that explicitly. Although, if you are working with an older version of VirtualBox, then you might want to set the option to «dynamic» (if at all available) to ensure better compatibility and/or flexibility with future versions of VirtualBox.
Show VDI information about the cloned disk.
Input command: vboxmanage.exe showhdinfo pathinputfile_clone.vdi
C:Program FilesOracleVirtualBox>VBoxManage.exe showhdinfo "%userprofile%virt
ualbox vmssg2_win7_x64_labsg2_win7_x64_lab_clone.vdi"
UUID: 34dafa68-3093-4946-926a-8237ea263e5c
Parent UUID: base
State: created
Type: normal (base)
Location: C:UsersNamevirtualbox vmssg2_win7_x64_labsg2_win7_x64_lab_
clone.vdi
Storage format: VDI
Format variant: dynamic default
Capacity: 40960 MBytes
Size on disk: 7806 MBytes
C:Program FilesOracleVirtualBox>
See how it now says «dynamic default»? How nice!
(On the side note! The reason it says 7806 MB as physical size here is because I had used the --compact
option on the original VDI file in an attempt to enforce conversion to dynamic format variant. Just something I read on the VirtualBox forum, it supposedly would have worked with older versions, so I thought I might as well give that a try. It didn’t work.)
Resizing the cloned disk.
Input command: vboxmanage.exe modifyhd pathinputfile.vdi --resize 51200
C:Program FilesOracleVirtualBox>VBoxManage.exe modifyhd "%userprofile%virtua
lbox vmssg2_win7_x64_labsg2_win7_x64_lab_clone.vdi" --resize 51200
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
C:Program FilesOracleVirtualBox>
Success! No format bullshitting no more. Just remember to resize the new, cloned disk, and not the original one. Keep in mind that the size is expressed in MB. I believe you can use e.g. 51200
as well as 50G
(or possibly «GB»). There is also the option --resizebyte
which can be used to express the size in bytes.
Show VDI information about the resized clone disk.
Input command: vboxmanage.exe showhdinfo pathinputfile_clone.vdi
C:Program FilesOracleVirtualBox>VBoxManage.exe showhdinfo "%userprofile%virt
ualbox vmssg2_win7_x64_labsg2_win7_x64_lab_clone.vdi"
UUID: 34dafa68-3093-4946-926a-8237ea263e5c
Parent UUID: base
State: created
Type: normal (base)
Location: C:UsersNamevirtualbox vmssg2_win7_x64_labsg2_win7_x64_lab_
clone.vdi
Storage format: VDI
Format variant: dynamic default
Capacity: 51200 MBytes
Size on disk: 7806 MBytes
C:Program FilesOracleVirtualBox>
That’s it! From here what you have to do is add this cloned drive as your new VDI for the VM. You do that inside VirtualBox. I won’t go into that. If you have been able to read and understand this so far then you probably don’t need no further guiding. You can either delete the old «fixed» file, or leave it as a backup. Make sure you test the new VDI file before you delete the original source file.
Note! You will not immediately see the new size of the cloned disk. You have to boot the VM with it, and then you have to use your partition management tool to expand your partition to fill the virtual disk (or create more partitions). For Windows, just run diskmgmt.msc
and you’ll be able to expand the partition in there.
Screenshots
Reference
- forums.virtualbox.org — VBoxManage modifyhd —resize ==
VBOX_E_NOT_SUPPORTED - forums.virtualbox.org — 8.23. VBoxManage
modifyhd - www.virtualbox.org — 8.23. VBoxManage
modifyhd - SU — Resize partition of Windows 7 running on VirtualBox with
dynamically allocated
storage
Статья написана студентом Хекслета. Мнение автора может не совпадать с позицией редакции
О проблеме
Во время работы с VBox так вышло, что однажды мне не хватило места на виртуальном диске.
Почитав гайды в интернете, нашёл как увеличить размер диска. Только ничего не получилось.
Оказалось, что при создании диска, был выбран фиксированный размер дискового пространства.
Задачи
- Разобраться с типами дисков
- Расширить виртуальный диск с фиксированным объёмом
- Завершить расширение диска в гостевой ОС
- Не потерять данные на расширяемом виртуальном диске
1. О типах виртуальных носителей
Выдержка из документации, приведена ниже. Ссылка на доку. Искать часть 5.2. Disk Image Files (VDI, VMDK, VHD, HDD)
Файл образа диска виртуальной машины находится на хостиг-системе и воспринимается гостевой системой, как жёсткий диск определённой геометрии. Когда гостевая ОС читает с диска или записывает на него, VBox перенаправляет запрос в файл образа.
Как и физический диск, виртуальный носитель имеет размер и ёмкость, которые необходимо указать при создании диска. Только в отличие от физического носителя его можно расширять.
VBox поддерживает типы виртуальных носителей:
- VDI. Собственный тип, формат контейнера жёсткого диска от VBox
- VMDK. Популярный открытый формат контейнера, используется многими другими продуктами виртуализации
- VHD. Тип виртуального носителя, который использует Microsoft
- HDD. Также поддерживаются файлы изображений Parallels версии 2
Варианты создания диска внезависимости от выбранного типа виртуального носителя:
- Фиксированный размер. Если создаём образ с фиксированным размером, то на хостинг-системе будет создан файл образа примерно такого же размера, как и емкость виртуального диска. Таким образом, для диска размером 10 ГБ у нас будет файл размером 10 ГБ
- Макимальный объём диска, расширить нельзя.
- Динамический размер. Изначально размер диска будет очень маленьким. Объём носителя будет увеличиваться каждый раз при записи на диск до тех пор, пока не достигнет максимальной ёмкости, выбранной при его создании
- Максимальный объём диска можно увеличить.
2. Решение проблемы
Расширение дискового пространства. Тип VDI, VHD, VMDK. Вариант — динамически расширяемый.
- Запустить VirtualBox.
- Открыть менеджер виртуальных дисков (сочетанием клавиш Ctrl + D)
- Во вкладке Жесткий диск, выбрать из списка тот, который расширяем
- Ниже, во вкладке Атрибуты, увеличиваем объём диска с помощью бегунка
- Так же можно увеличить объём диска, вручную прописав его размер в окошке справа от бегунка
- Подтверждаем
- После короткого ожидания, размер диска увеличен
- Далее необходимо запустить гостевую ОС и расширить диск уже там
Расширение дискового пространства. Тип VDI, VHD, VMDK. Вариант — фиксированный.
- Открыть менеджер виртуальных носителей
- Выбрать диск
- Сверху, кнопки с вариантами действий над диском
- «Копировать»
- В открывшемся окне необходимо открыть «Экспертный режим»
- В правой части окна «Хранение на жёстком диске»/»Storage on physical hard disk», нужно выбрать Динамически расширяемый вариант создания диска
- Подтвердить копирование
- Займет какое-то время
- В менеджере виртуальных носителей появится копия диска, только уже тип диска будет динамический.
- Выбрать диск и расширить его
- После расширения, копию расширенного диска необходимо примонтировать в виртуальной машине, вместо старого
3. Расширение дискового пространства в гостевой системе
Гостевая ОС, Windows
- Запустить гостевую ОС
- Открыть управление дисками.
- для Win7 — правым кликом по иконке Мой компьютер — Управление — Управление дисками
- для Win10 — правым кликом по иконке Windows/Пуск — Управление дисками
- Так же правым кликом выбрать диск, который необходимо расширить
- В контекстном меню, «Расширить том…»
- Готово
Гостевая ОС, думаю любой дистрибутив GNU/Linux
Я расширял в Debian-Arch подобных
- Загрузиться в live режиме
- Запустить GParted, если его нет, то:
sudo apt install gparted
sudo pacman -S gparted
- Неиспользуемый раздел будет как-бы вне основного блока размеченного пространства
- Для расширения необходимо
- Выбрать раздел, у меня /dev/sda2
- Правым кликом — Расширить..
- Расширяем, подтверждаем. Сверху, где графическое отображение объёма диска, можно расширить раздел курсором
- Теперь появилась возможность расширить основной раздел, у меня /dev/sda5
- Расширяем так же, как и /dev/sda2
- Затем подтверждаем все действия, зелёная галочка сверху.
- Раздел расширен, перезагрузка
Итоги
- Разобрались с типами дисков и системой хранения
- Расширен диск фиксированного объёма, путём его копирования и преобразования в динамически расширяемый
- Расширено дисковое пространство в гостевой системе
- Сохранились данные, которые уже были на виртуальном носителе
При создании виртуального диска в программе virtualbox, назначенного объема в процессе работы может не хватить. Тогда необходимо будет как-то увеличить размер диска. В принципе сделать это не сложно в случае динамического носителя, но осложнения могут возникнуть если диск является фиксированный. Так как в программе не предусмотрено увеличение объема такого типа созданных носителей.
Но не стоит отчаиваться, решение все же имеется, правда займет времени побольше. Данный метод осуществляется путем клонирования фиксированного диска и преобразование его в динамический, далее работа будет вестись уже с клоном. Для тех кто не в курсе, в клонированные диски переносится вся информация(папки, файлы, установленные программы) от донора. Ну давайте уже разберемся в данном вопросе на визуальном примере.
Клонируем фиксированный диск в VirtualBox
Открываем программу, переходим файл -> менеджер виртуальных носителей.
В списке виртуальных жестких дисков выбираем нужный, жмем правой кнопкой и нажимаем копировать. В моем случае это фиксированный windows 7, с объемом 20 ГБ.
Диск у нас уже выбран, поэтому нажимаем next.
Указываем тип создаваемого клона, я предпочитаю VHD, вы можете выбрать другой.
В этом окне нас естественно интересует динамический виртуальный жесткий диск.
Задаем любое имя будущему диску и нажимаем копировать.
Ожидаем примерно 10-15 минут окончание процесса клонирования.
После завершения процедуры, переходим в папку с виртуальными дисками, дабы убедится, что носитель создан.
Увеличиваем размер диск в VirtualBox
Убедившись в создании, переходим к процедуре увеличения размера. Здесь нам понадобится открыть командную строку. Если у вас стоит windows 10, то кликаем правой кнопкой мыши по меню пуск и открываем командную строку, желательно от имени администратора.
В случае семерки, жмем пуск и в поиске вводим cmd, найденный файл запускаем под администратором.
Теперь нам понадобится ввести определенную команду, но в начале нужно убедитесь в расположении папок с файлами программы и виртуального диска(клона).
Убедившись вводим команду:
"C:Program FilesOracleVirtualBoxVBoxManage.exe" modifyhd "H:VirtualBox VMsWindows 7Windows 7_2.vhd" --resize 31000
где,
- C:Program FilesOracleVirtualBoxVBoxManage.exe — путь к папке с файлами программы virtualbox.
- H:VirtualBox VMsWindows 7Windows 7_2.vhd — расположение созданного диска(клона).
- —resize 31000 — команда изменения размера до 31000МБ.
Ждем окончание процесса.
Создаем виртуальную машину
После открываем virtualbox, нажимаем кнопку создать.
В экспертном режиме вводим нужное имя, тип ОС1, указываем необходимы объем памяти(RAM)2, выбираем пункт использовать существующий виртуальный жесткий диск3 и жмем кнопку обзора4.
Выбираем наш клон и нажимаем кнопку открыть.
Теперь жмем создать.
Как видим машина создана, запускаем ее.
Переходим в мой компьютер и видим, что объем как был 20ГБ так и остался. Все дело в том, что и в самой виртуальной системе нужно расширить том. При создании клона создается точная копия, а сам объем уже надо увеличить вручную в системе.
Увеличиваем размер диска в виртуальной машине
Для этого переходим в управление компьютером, нажав правой кнопкой мыши по значку мой компьютер и выбрав соответствующий пункт.
Тут нас интересует вкладка управление дисками. Как видим имеется не распределенное пространство в размере 9 ГБ. Как раз столько нам и не хватает. Теперь нужно прибавить данный раздел к разделу (С:), для этого жмем правой кнопкой мыши по (С:) и выбираем пункт расширить том.
Размер выделяемого пространства должен быть максимальный, так как мы переносим весь объем диска.
Готово.
Как видим не распределенного пространства уже нет, так оно нашло распределение в локальном диске (С:).
Зайдя в мой компьютер увидим, что размер диска увеличен.
Возможно вы скажите, так диск же динамический, а хотели увеличить размер фиксированного. Так вот, теперь клонируете созданный клон с преобразованием в фиксированный, благо вы уже это делать научились и получите то, что хотели.
Оставляйте своё мнение о данной статье, ну и конечно же задавайте свои вопросы, если у вас что-то вдруг пошло не так.
Спасибо за внимание!
Статьи рекомендуемые к прочтению:
-
Как перенести установленную в компьютере Windows 7 на виртуальную машину VirtualBox
(30754)
-
Загружаем виртуальную машину с флешки программой Virtual Machine USB Boot
(16329)
-
Ошибка в программе VirtualBox. Аппаратное ускорение (VT-x AMD-V) недоступно в вашей системе. Что делать?
(107902)
-
Увеличить размер диска VirtualBox
(41938)
-
Ошибка VirtualBox — This operating system user the Physical Address Extension feature to support systems with more than 4GB of RAM.
(15116)
-
Виртуальная машина Hyper-V
(21067)
-
Как подключить общую папку в VirtualBox
(24786)
Время прочтения
8 мин
Просмотры 167K
Статья рассматривает особенности использования виртуальных дисков в VirtualBox, применение разных режимов чтения-записи, принцип и организацию работы snapshot-ов, кэширование ввода/вывода данных, а также некоторые аспекты использования виртуальных дисков с точки зрения информационной безопасности. Для тех, кому интересен пример с безопасностью, можете сразу переходить по якорю к разделу об особых режимах записи.
Начнем с некоторых общих понятий. У VirtualBox существуют 3 основных метода предоставления гостевой операционной системе (ОС) доступа к данным. Сей текст концентрируется на использовании виртуальных дисков.
Виртуальные диски подключаются к виртуальной — гостевой ОС, методом эмуляции подключения через соответствующий контроллер, IDE, SATA (AHCI), SCSI, SAS.
Поведение контроллеров запрограммировано таким образом, чтобы имитировать физические прототипы, следовательно IDE контроллер будет работать медленнее SATA и потреблять больше ресурсов процессора, ОС без соответствующих драйверов и аппаратной поддержки не будут взаимодействовать с виртуальными дисками и т.д. Например, в семействе Windows до Windows Vista нет поддержки Advanced Host Controller Interface (AHCI), к которому относится SATA, поэтому в частности, виртуальная машина с ОС Windows XP с SATA работать не будет.
Файлы виртуальных дисков
VirtualBox позволяет работать с разными форматами файлов виртуальных дисков. Помимо собственного VDI, поддерживаются VMDK (VMware), VHD (Microsoft), Parallels version 2 HDD format (Parallels).
Каждому виртуальному диску присваивается уникальный идентификатор UUID, это помогает VirtualBox удостовериться, что каждый диск используется только один раз и не позволяет импортировать в гостевую ОС обычные копии дисков (для этого существует отдельная процедура клонирования).
Виртуальные диски могут быть, как фиксированного размера, так и динамически выделяемого, причем VirtualBox позволяет увеличить размер дискового пространства, независимо от объёма и формата диска и даже в том случае, если диск содержит данные. Ниже пример, как это сделать с помощью утилиты vboxmanage.
vboxmanage modifyhd <uuid|filename> --resize <megabytes>
При выборе динамически выделяемого образа, файл контейнера будет «разрастаться» постепенно, по мере заполнения секторов данными, до тех пор, пока размер контейнера не достигнет указанного при создании виртуальной машины лимита.
Учитывая то, что в процессе регулярного увеличения размера контейнера задействуются дополнительные вычислительные ресурсы, скорость записи при использовании опции с фиксированным размером, как правило выше, в с равнении с динамическим диском. Тем не менее, если размер динамического диска в долгосрочной перспективе значительно не увеличивается, то разница в скорости записи практически нивелируется.
Управление виртуальными медиа (Virtual Media Manager)
VirtualBox ведет реестр всех виртуальных медиа носителей, которые используются всеми гостевыми ОС. Это так называемые ”known media”, доступ к списку (реестру) которых можно получить используя утилиту Virtual Media Manager (доступно из меню File). Эта утилита показывает детальную информацию о каждом виртуальном диске, включая полный путь к файлу, а также к какой именно виртуальной машине файл прикреплен. Информацию из реестра можно удалить используя встроенную функцию удаления “Remove”
Каждый отдельно взятый образ можно «открепить» от виртуальной машины за которой он закреплен, используя функцию ”Release”
Открепив образ, прикрепить его обратно нажатием одной кнопки не удастся, для этого необходимо будет добавить образ, как жесткий диск. Аналогичным способом «прикрепляются» и снэпшоты (снимки диска).
В очередной раз отмечу, что из-за наличия UUID, о которых говорилось выше, нельзя просто скопировать и прикрепить образ диска.
Snapshots (Снэпшоты)
Как известно snapshot в переводе с английского означает снимок. Принцип работы механизма прост. При создании снэпшота, VirtualBox переводит текущий образ (образы, если их несколько), прикрепленный к ВМ в режим только для чтения и создает отдельный виртуальный диск (диски) и все последующие процедуры записи производятся уже в новом виртуальном хранилище. Причем фиксируются только изменения в определенных секторах, проще говоря при создании снэпшота диска размером 10GB, новый снэпшот будет гораздо меньше, и будет увеличиваться в размере постепенно, как будут заполнятся сектора.
Логично предположить, что чем больше используется снэпшотов одной виртуальной машины, тем больше используется вычислительных ресурсов для выполнения операций чтения с диска. Действительно, если есть 2 снэпшота, то вначале VirtualBox смотрит есть ли нужный сектор в образе снэпшота2, если нет, то система обращается к снэпшоту1, если и там ничего не обнаружено, то тогда идет обращение к основному диску. Нагрузка все-же будет незначительной и мало заметной для конечного пользователя, т, к. вся таблица секторов постоянно присутствует в памяти.
Стоить помнить, что при удалении снэпшота, все изменения произведенные после его создания «сливаются» с ранее «замороженным» образом.
Кэширование ввода/вывода
Затронув тему производительности уместно будет упомянуть и о кэшировании. Изначально VirtualBox работает с файлами образов, как с обычными файлами, которые само-собой кэшируются хостовой ОС. Это сделано, как нистранно с целью увеличение скорости. Когда гостевая ОС производит операцию записи, то операция кэшируется хостовой ОС и сообщение об успешном завершении операции отправляется в гостевую ОС сразу-же, в то время как сама операция обрабатывается гостевой ОС асинхронно. Такой подход не всегда себя оправдывает, т.к. файлы образов диска имеют тенденцию увеличиваться в объеме и вся процедура начинает давать обратный эффект — происходит двойное кэширование на стороне гостевой и хостовой операционных систем и снижается скорость производимых операций.
Помимо расходa ресурсов еще одним недостатком кэширования является недостаточная надежность. Например, если внезапно случился перебой с электропитанием в момент, когда хоставая ОС уже сообщила гостевой об успешном выполнении записи, а сам процесс асинхронной записи еще не завершился. Такой сценарий безусловно приводит к потере данных.
Отключение кэширования выполняется следующим образом:
vboxmanage storagectl "VM name" --name <controllername> --hostiocache off
Bandwidth
VirtualBox позволяет ограничивать ширину пропускного канала для одного или нескольких виртуальных дисков.
Создаем группу “Limit” и устанавливаем лимит в 20 Mb/s
vboxmanage bandwidthctl "VM name" add Limit --type disk --limit 20M
Добавляем нужные диски в группу.
vboxmanage storageattach "VM name" --storagectl "SATA" --port 0 --device 0 --type hdd --medium disk1.vdi --bandwidthgroup Limit
vboxmanage storageattach "VM name" --storagectl "SATA" --port 1 --device 0 --type hdd --medium disk2.vdi --bandwidthgroup Limit
Суммарный для обоих дисков bandwidth не будет превышать 20 MB/s. Этот лимит можно изменить в любой момент, не выключая виртуальной машины.
vboxmanage bandwidthctl "VM name" set Limit --limit 100M
Особые режимы записи образов
Для каждого образа виртуального диска, поддерживаемого VirtualBox, не зависимо от формата, можно определить режим поведения при записи данных, будь это следствие операций внутри виртуальной машины или снимка дика (snapshot). Такие режимы называются «нестандартными», в то время, как по умолчанию все образы дисков функционируют в «нормальном» режиме. Для того, что бы перевести режим из «нормального» в «нестандартный» можно воспользоваться вышеупомянутым Virtual Media Manager или консольной утилитой vboxmanage
vboxmanage modifyhd <disk image>.vdi settype immutable
В «нормальном» режиме записи, гостевая ОС может осуществлять чтение и запись с физического диска без всяких ограничений a при создании снимков диска (snapshot), VirtualBox создает oтдельный файл в котором фиксируются все изменения.
В режиме «write through» функция снэпшотов работать не бует.
Режим работы «shareable» своего рода разновидность предыдущего. Тут тоже нет возможности работы со «снэпшотами», зато есть возможность использования несколькими одновременно работающими виртуальными машинами одного образа диска, сценарий кластеризации.
Схожий по названию, но отличающийся по принципам работы режим «multiattach», также позволяет использовать один образ диска для нескольких виртуальных машин, но в этом режиме каждая отдельная виртуальная машина использует свой независимый «снэпшот» и изменения произведенные в одной ВМ не доступны для других.
Режим «read only» используется в основном для работы с образами CD/DVD, т.к. предполагает только чтение.
Режим на который стоит обратить внимание называется «Immutable». Как следует из названия immutable образы не меняются с течением времени. Любые изменения в immutable диске актуальны ровно до тех пор, пока виртуальная машина работает. После отключения виртуальной машины все изменения пропадают. Прежде чем перевести диск в режим immutable стоит сначало создатъ «нормальный» диск, установить и настроить систему в оптимальное состояние, желательно не подключаясь к интеренету, и только после того, как гостевая система готова — «откреплять» диск и переводить его в режим immutable.
Одним из сценариев работы может быть схема при которой используются два диска – один в режиме immutable, на котором находится сама система, второй в нормальном или write-through режиме. На первый взгляд вполне безопасный и понятный сценарий работы — каждый раз загружается «свежая» система. Но не все так прозрачно и есть некоторые нюансы.
Во первых, для immutable дисков есть одно важное исключение. Они не “обнуляются” в случае, когда прикреплены к виртуальной машине, снимок диска которой был сделан пока та была запущенна — так называемый online-snapshot. Это означает, что если например, пользователь создал immutable disk, а потом в процессе работы, создал «снэпшот», не завершив работу виртуальной машины, то начиная с упомянутого «снэпшота» все последующие операции и действия внутри системы будут носить необратимый эффект, т.к. все действия будут де-факто происходить в «снэпшоте».
В случае если основной целью является «свежая система» при каждом запуске, то от использования снэпшотов, лучше воздержаться.
Во-вторых, вышеописанное «обнуление» отдельного образа происходит только в случае, когда команда включения/отключения виртуальной машины посылается самой средой VirtualBox, а не происходит внутри гостевой ОС. Проще говоря, если например перезагрузить гостевую ОС Windows стандартным методом (Меню пуск, перезагрзить систему), то обнуление immutable диска не произойдет.
Наконец последнее и самое важное — все изменения происходившие внутри виртуальной машины сохраняются на физическом диске и остаются там до тех пор, пока виртуальная машина не будет запущена заново.
После того, как текущий контейнер установлен в режим immutable, VirtualBox перестает использовать этот контейнер и фактически диск переходит в режим «read only». Все операции записи перенаправляются в отдельный образ и каждый раз, когда виртуальная машина начинает работу этот новый «отдельный» образ «обнуляется». В реальности на жестком диске создается временный «снэпшот», который находится в папке Snapshots, соответствующей виртуальной машины, внутри которого и происходит вся работа. После завершения работы виртуальной машины вышеупомянутый временный скриншот остается нетронутым.
Рассмотрим простой пример
Боб создал виртуальную машину, настроил ОС и перевел диск в режим immutable. Боб регулярно использует свою виртуальную машину для тайного общения с Алисой. При каждом запуске, загружается «свежая» система, не содержащая никаких логов предыдущего общения, текстов, видео или фото. В очередной раз закончив переписку, Боб спокойно выключает виртуальную машину и идет спать.
Предположим также, что перед каждым запуском ОС Боб проверяет, что режим диска установлен как “immutable”.
Ева имеет доступ к компьютеру на котором установлена виртуальная машина. Ей достаточно зайти в папку Snapshots внутри директории соответствующей виртуальной машины и там будет требуемый «снэпшот».
Все что остается сделать Еве, что бы увидеть всю переписку, равно как и результат всех действий производимых Бобом внутри ОС, это перевести диск в «нормальный» режим и перед тем, как запустить виртуальную машину прикрепить к ней снэпшот. Более того, Ева может каждый день делать резервные копии таких «снэпшотов», главное, что бы это было сделано до того, как Боб снова запустит виртуальную машину.
Решением для Боба в данной ситуации будет после завершения работы, вручную удалять все содержимое папки Snapshots. Не говоря уже о том, что надо постоянно проверять в каком режиме работает диск и желательно, либо вообще заблокировать некоторые элементы GUI, что достаточно просто реализуется
vboxmanage setextradata global GUI/Customizations OPTION[,OPTION...]
Справедливости ради стоит сказать, что у тех-же Parallels, с самых ранних версий для того, что бы перевести диски из одного режима в другой необходим пароль суперпользователя, а временные «снэпшоты» удаляются моментально, после завершения работы.
Вместо заключения
VirtualBox замечательная и очень гибкая в настройке система виртуализации, сопоставимая по возможностям с коммерческими продуктами от флагманов индустрии. Данная статья показывает некоторые особенности, на которые уместно обратить внимание и лишь мизерную часть всех возможностей VirtualBox.