Підсумок:
VBoxManage.exe modifyhd --resize
може збільшити (але не зменшити) логічний розмір зображення диска (розмір, який бачить гостьова ОС).
VBoxManage.exe modifyhd inputfile.vdi --compact
може зменшити розмір зображення фізичного диска (розмір файлу зображення на диску, який бачить хост-операційна система). Це, однак, не змінює розмір логічного диска. Зауважте, що це працює лише в тому випадку, якщо в гостьовій ОС спочатку було встановлено нульове місце.
modifyhd
працює лише з варіантом динамічного формату ("динамічно виділене зображення").
modifyhd
працює лише з форматами VDI та VHD.
- Якщо ви використовуєте знімки, вам доведеться клонувати останній знімок VDI з підпапки "Знімки".
Докладніше див. Розділ 8.23. VBoxManage модифікуйте в посібнику.
Причина, чому зменшення розміру логічного диска VDI ще не було здійснено, - це запобігання пошкодженню даних, яке може статися, і ви отримаєте незавантажені VM в результаті цього. Тому, коли використовується --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
(або, можливо, "GB"). Також є варіант, --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 для VM. Ви робите це всередині VirtualBox. Я не буду в цьому займатися. Якщо ви до цього часу вміли читати та розуміти, вам, ймовірно, не потрібно більше керівництва. Ви можете видалити старий "виправлений" файл або залишити його як резервну копію. Переконайтесь, що ви протестуєте новий файл VDI, перш ніж видалити вихідний вихідний файл.
Примітка! Ви не відразу побачите новий розмір клонованого диска. Ви повинні завантажувати з ним віртуальну машину, і тоді вам доведеться скористатися інструментом управління розділами для розширення розділу, щоб заповнити віртуальний диск (або створити більше розділів). Для Windows просто запустіть diskmgmt.msc
і ви зможете розширити там розділ.
Скріншоти
Довідково