Як збільшити розмір жорсткого диска віртуальної машини?


257

введіть тут опис зображення

На моїй віртуальній машині WinXP у мене не вистачало місця, на що я дав лише 10 ГБ місця, коли я створив її. Чи є простий спосіб збільшити його, скажімо, до 20 ГБ? Я не бачу жодної очевидної опції в налаштуваннях VirtualBox.


Пропозиція, подана нижче, дає цю помилку

wim@wim-ubuntu:/media/data/winxp_vm$ VBoxManage modifyhd wim.vdi --resize 20000
VBoxManage: error: Cannot register the hard disk '/media/data/winxp_vm/wim.vdi' {46284957-2c09-4e70-8a49-bfbe0f7f681d} because a hard disk '/home/wim/VirtualBox VMs/winxp_vm/wim.vdi' with UUID {46284957-2c09-4e70-8a49-bfbe0f7f681d} already exists
VBoxManage: error: Details: code NS_ERROR_INVALID_ARG (0x80070057), component VirtualBox, interface IVirtualBox, callee nsISupports
Context: "OpenMedium(Bstr(pszFilenameOrUuid).raw(), enmDevType, AccessMode_ReadWrite, fForceNewUuidOnOpen, pMedium.asOutParam())" at line 210 of file VBoxManageDisk.cpp

Видалення .vdi з VirtualBox перед тим, як викликати команду VBoxManage, а потім знову додати її, було успішним. Але тепер я не можу завантажувати віртуальну машину, я отримую цей тривожний екран:

введіть тут опис зображення

До речі, йдеться FATAL: Could not read from the boot medium! System halted.


Після команди VBoxManage vdi повинен бути приєднаний до VM. Крім того, потрібно буде змінити розмір розділу в межах вікон, оскільки у вас буде цей порожній простір:

введіть тут опис зображення

Мені вдалося легко змінити розмір розділу, використовуючи трохи безкоштовної програми під назвою EASEUS Partition Master 9.1.0 Home Edition .


3
Ваша проблема полягає в тому, що ви прив'язали диск до місця "/ media / data" і що він не знаходиться в оригінальному "/ home / wim / VirtualBox VMs". Я відповів, як я це виправив.
stolsvik

1
Я детально описую свій досвід тут: kmonsoor.wordpress.com/2012/05/26/virtualbox-increase-disk-розмір "прийнятої" відповіді нижче - далеко не навіть правильний.
kmonsoor

Існує ще одна можливість "копіювати існуючий vdi" на "новий порожній vdi, розмір якого більший за існуючий" (див. Justintung.com/2011/01/06/… )
парашутувати

також зауважте, що просто зміна розміру може не допомогти, оскільки розмір "vdi" збільшився б, але на основі "vm-os-інсталяції" ваш основний розділ залишається таким же, а щойно виділений простір, як правило, відображається "нерозподіленим ". Отже, потрібно зробити "перерозподіл розділу" (див. Посилання вище).
парашутизм

Відповіді:


325

Відкрийте термінал і перейдіть до папки із зображенням диска VirtualBox, а потім скористайтеся такою командою:

VBoxManage modifyhd YOUR_HARD_DISK.vdi --resize SIZE_IN_MB

заміни YOUR_HARD_DISKі SIZE_IN_MBназви вашого зображення та потрібного розміру. sudoможе знадобитися на деяких машинах або ви можете зіткнутися з помилкою. Ця відповідь та більш повне пояснення тут, на веб-сайті8 . Подяку Андрію там за публікацію цієї відповіді.

Після зміни розміру додаткове віртуальне місце на жорсткому диску потрібно розділити та відформатувати для того, щоб гість міг його використовувати. Це можна зробити за допомогою gparted, завантаживши гостя з прямого ISO. Ми також можемо змінити розмір існуючого розділу за допомогою gparted. Для цього нам може знадобитися відключити /swapта створити новий розділ swap.


20
+1. Щойно я використовував це для збільшення розміру мого диска Windows 7 з 20 до 30 Гб, і він працював дуже плавно (не потрібно реєструвати тощо). $ VBoxManage modifyhd Windows7.vdi --resize 30720 0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100% Спочатку Windows не виявив збільшений простір, але після потужної роботи це зробило, а потім я зміг використовувати вбудований інструмент управління дисками для збільшення розміру мого розділу C:.
Джонік

3
+1, Це, безумовно, найчистіший спосіб зробити це.
Starx

20
@asd Зміна розміру диска недостатня, вам також потрібно змінити розмір розділу.
Бруно

5
Я думаю, що в останніх версіях VirtualBox це .\VBoxManage.exe modifymedium disk 4d30d154-f8c2-4a3b-bd8b-ddcfbfe64aaf --resize 30720зараз. modifyhdтакож працює, хоча - є відстала сумісність зі старими командами.
TranslucentCloud

2
Я просто змінюю розмір файлу vdi від 25G до 120G, але дисковий менеджер системи Windows7 все ще не бачить нерозподіленого простору. Це викликано файлом знімка (у мене був знімок раніше), але коли я намагаюся видалити знімок, звіт про віртуальну скриньку виходить з ладу, тому я не можу видалити знімок. Будь-які ідеї? Мій гість win7 все ще бачить 25G. Дякую.
ollydbg23

25

Для мене працювало наступне:

VBoxManage modifyhd YOUR_HARD_DISK.vdi --resize SIZE_IN_MB

Однак я розумію, як може змінюватись пробіг :-) Що стосується зміни розміру розділу, в Windows 7 я зміг змінити розмір на екрані, який ви показали, натиснувши правою кнопкою миші на диск C: на нижній панелі та вибравши збільшити гучність.

Екран управління комп'ютером


12
sudoце НЕ обов'язково. Це може пошкодити дозволи у вашому домашньому каталозі, що вимагає використання sudoдля virtualbox, що є поганою ідеєю.
Лекенштейн

1
@Lekensteyn: Добре знати, що це не потрібно. Я використовував це, тому що інші казали, що це не працює, не використовуючи root. Що стосується корупції дозволів, chmod добре працює, щоб виправити подібні помилки.
Річард Повінеллі

@Lekensteyn: chown виправить помилки власності. Я згадую chmod та chown, тому що мені довелося виправити проблему, на яку ви багато разів посилаєтесь :-)
Річард Повінеллі

2
Це чудово підходить для Windows, але якщо у вас є гостьова ОС Linux, це посилання може допомогти у повторному розмірі розділів: forums.virtualbox.org/viewtopic.php?f=35&t=50661
Jon

Якщо ви запускаєте Windows всередині Linux, вам потрібно дотримуватися цих параметрів та розширити диск, інакше windows не зможе додати додаткового місця, яке ми додали
Ajith R Nair

18

Вім, я думаю, вам потрібно спочатку скасувати реєстрацію з Vbox. Файл, Менеджер медіа, натисніть на ваш hdd та скасуйте його. Потім спробуйте ще раз.


2
Не потрібно для Linux у VirtualBox. Просто довелося спочатку повністю вимкнути гостьову ОС.
Underverse

15

Ви також можете це зробити за допомогою меню VirtualBox:

Виберіть File->Virtual Media Manager ...

Відкриється вікно: введіть тут опис зображення

Виберіть свій диск і виберіть Properties. Тепер просто перемістіть повзунок внизу.

Після запуску віртуальної машини вікна не розпізнають новий простір.

У вікнах відкрийте Computer Management(шукайте його в меню "Пуск"), у лівому меню виберіть Storage-> Disk Management. Виберіть свій розділ (можливо C :), клацніть правою кнопкою миші на ньому та виберіть Extend Volume .... Тепер просто натисніть майстра і все закінчиться.


Чи потрібно це робити Releaseдо цього? Наразі слайдер є сірим. Або ви вибрали динамічний розділ?
Рой

Рой: коли ви робите віртуальний диск, переконайтеся, що він має динамічний розмір.
lenooh

10

Після зміни розміру та неможливості перегляду розміру на моїй гостьовій машині Windows XP мені довелося

  1. клонувати його
  2. змінити розмір за допомогою "VBoxManage modifyhd winxppro \ Clone.vdi --розмір 30720" і все працює

Я бачив на інших форумах, що знімки можуть перешкоджати зміні розміру та неможливості видалити всі знімки для різних помилок, які я отримав, єдине знайдене рішення для мене було клонувати його, щоб видалити знімки, а потім змінити його розмір, і все працювало. Для зміни розміру зовнішніх вікон може допомогти компакт-диск для завантаження, що знаходиться тут


6

У мене була така ж проблема, коли я перемістив диск і замінив оригінал символьним посиланням. Після цього це все добре, але у вас виникають проблеми з командою 'modifyhd', оскільки це, очевидно, канонізує шлях до vdi-файлу при роботі з ним. Таким чином, виглядає так, що ви намагаєтеся додати новий диск з тим же UUID, але іншим шляхом - або щось подібне.

Були дві проблеми:

  1. Диск потрібно було вийняти з віртуального комп'ютера, який ним користувався, але потім також "зі списку hdds VirtualBox". Це було виправлено командою 'closemedium', яка видаляє її із цього списку.

  2. Змінено розмір диска був "фіксованим диском" замість "динамічним", і можна змінити розмір лише динамічних дисків. Це було виправлено командою 'clone' (клон динамічний), а потім змінити розмір отриманого диска.

Це мій журнал того, як це було зроблено. Зауважте, що я ні в якому разі не виконуються як root , за винятком випадків, коли після цього я змінюю розмір розділу та файлової системи.

Зняти АСОЦІАЦІЮ НА ДИСК ВМ.

ПЕРСИСТИКА ПРОБЛЕМИ:

virt_box@TestBox:~/VirtualBox VMs/TestInception 64 bit$ VBoxManage modifyhd TestInception\ 64\ bit.vdi --resize 8192
VBoxManage: error: Cannot register the hard disk '/datadisk/VirtualBox VMs/TestInception 64 bit/TestInception 64 bit.vdi' {6cd99209-e4db-4178-a6c2-53f9581b1fad} because a hard disk '/home/virt_box/VirtualBox VMs/TestInception 64 bit/TestInception 64 bit.vdi' with UUID {6cd99209-e4db-4178-a6c2-53f9581b1fad} already exists
VBoxManage: error: Details: code NS_ERROR_INVALID_ARG (0x80070057), component VirtualBox, interface IVirtualBox, callee nsISupports
VBoxManage: error: Context: "OpenMedium(Bstr(pszFilenameOrUuid).raw(), enmDevType, enmAccessMode, fForceNewUuidOnOpen, pMedium.asOutParam())" at line 178 of file VBoxManageDisk.cpp

Ах, диск все ще "в системі":

virt_box@TestBox:~/VirtualBox VMs/TestInception 64 bit$ VBoxManage list hdds
UUID:        ba58276a-bbe1-4354-8ae5-246bdac390c8
Parent UUID: base
Format:      VDI
Location:    /home/virt_box/VirtualBox VMs/TestInception 32 bit/TestInception.vdi
State:       locked write
Type:        normal
Usage:       TestInception 32 bit (UUID: a693ac62-7caa-4f11-9d00-51d3a149f5f7)

UUID:        6cd99209-e4db-4178-a6c2-53f9581b1fad
Parent UUID: base
Format:      VDI
Location:    /home/virt_box/VirtualBox VMs/TestInception 64 bit/TestInception 64 bit.vdi
State:       created
Type:        normal

Видаліть / видаліть диск із списку дисків VirtualBox ("closemedium"):

virt_box@TestBox:~/VirtualBox VMs/TestInception 64 bit$ VBoxManage closemedium disk 6cd99209-e4db-4178-a6c2-53f9581b1fad
virt_box@TestBox:~/VirtualBox VMs/TestInception 64 bit$ VBoxManage list hdds
UUID:        ba58276a-bbe1-4354-8ae5-246bdac390c8
Parent UUID: base
Format:      VDI
Location:    /home/virt_box/VirtualBox VMs/TestInception 32 bit/TestInception.vdi
State:       locked write
Type:        normal
Usage:       TestInception 32 bit (UUID: a693ac62-7caa-4f11-9d00-51d3a149f5f7)

Спробуйте змінити розмір ще раз:

virt_box@TestBox:~/VirtualBox VMs/TestInception 64 bit$ VBoxManage modifyhd TestInception\ 64\ bit.vdi --resize 8192
0%...
Progress state: VBOX_E_NOT_SUPPORTED
VBoxManage: error: Resize hard disk operation for this format is not implemented yet!

БАГАТО, "фіксованого розміру" НЕ РОБОТА! "clonehd" на допомогу, оскільки це залишає "динамічно виділений" клонований диск:

virt_box@TestBox:/datadisk/VirtualBox VMs/TestInception 64 bit$ VBoxManage clonehd TestInception\ 64\ bit.vdi TestInception\ 64\ bit-cloned.vdi
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
Clone hard disk created in format 'VDI'. UUID: 8e237500-173b-401a-9e63-9e64da110da9

ЗАРАЗ РОЗМІСТЮ (миттєвий):

virt_box@TestBox:/datadisk/VirtualBox VMs/TestInception 64 bit$ VBoxManage modifyhd --resize 8192 TestInception\ 64\ bit-cloned.vdi 
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%

ТОГО ДОПОМОГАЙТЕ ДЛЯ ЯКЩОГО ВМ, ДЛЯ ОПЕРАЦІЇ Це робиться як корінь. Передбачає, що у вас є лише один розділ і, можливо, поміняти місцями.

# fdisk /dev/sdb  # <- The extra disk, just attached to be resized
// The procedure looks like this:
// m - print help
// p - print table
// d ... - delete partition (delete both if you have root and swap)
// n - new partition (create root/first partition starting on exact same sector as before, typically 2048, but ends on last, or last minus swap)
//  ... n.. (.. then add the swap partition. Calculate how many sectors using original table)
// t - change type of partition (swap partition, if any, to 82 - not 83 which is "normal Linux").
// w - write partition table (write out, with the resized partition)

# e2fsck -f /dev/sdb1

e2fsck 1.42.5 (29-Jul-2012)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/sdb1: 99918/122160 files (0.3% non-contiguous), 471032/487936 blocks

# resize2fs /dev/sdb1

resize2fs 1.42.5 (29-Jul-2012)
Resizing the filesystem on /dev/sdb1 to 1965824 (4k) blocks.
The filesystem on /dev/sdb1 is now 1965824 blocks long.

Це працювало для мене, дотримуйтесь
marijnz0r

4

Для мене це працювало за допомогою Virtualbox 5.2.6, встановленого на Ubuntu 16.04 Host Machine та Windows 10 Guest: відкрийте Virtualbox Manager, натисніть на Global Tools (верхній правий кут) та виберіть Virtual Media Manager. Клацніть на вкладці жорсткого диска та виберіть вашу гостьову ОС. У нижній частині поля натисніть на вкладку Атрибути. Внизу ви можете побачити розмір віртуального диска, а за допомогою повзунка можна збільшити розмір на свій смак. (За допомогою цього методу ви можете лише збільшувати, а не зменшувати розмір). Клацніть на Застосувати. Запустіть свою гостьову ОС Windows, відкрийте Управління комп'ютером, клацніть правою кнопкою миші на C: Диск та виберіть Розширити гучність, щоб розширити файлову систему з нерозподіленою частиною.

Це все, що я мав зробити, працює для мене ідеально.


Працювали чудово. Чи не може це бути прийнятою відповіддю, принаймні для останніх версій VirtualBox?
Завжди слухаючи

2

Безперечний спосіб - це зробити так само, як переміщення на більший жорсткий диск, який не працює у VM. Спочатку використовуйте ccleaner або подібну програму в XP, щоб очистити всі непотрібні файли. Потім створіть вторинний віртуальний жорсткий диск потрібного розміру. Завантажте разом з ISO clonezilla у вашому віртуальному накопичувачі ODD та клоніруйте разом із обраним параметром "змінити розмір до нового розміру". Потім встановіть новий Virtual HDD як основний, а не видаляйте старий, поки ви не знаєте, що він працював.


2

Я отримав ту саму помилку, поки я не використав sudo для запуску команди, потім працював ідеально, все ще потрібно, щоб розділ був вирощений з боку гостя, щоб використовувати додаткове місце.


Деякі люди повідомили, що це призводить до поганого дозволу домашнього режисера
Джонатана

2

Переконайтеся, що ви ввійшли як користувач із дозволом на запис у файл образу диска. Потім бігайте

VBoxManage modifyhd YOUR_HARD_DISK.vdi --resize SIZE_IN_MB  

Працював для мене в перший час запиту


1
Вам довелося перевстановити / переформатувати / переділити? чи це просто завантажилося право резервного копіювання?
Джонатан

2

Якщо ваша хост-машина - це вікна, ви можете виконати таку команду, щоб збільшити або зменшити розмір диска vdi у віртуальному полі

"C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" modifyhd "C:\Users\your_user_name\VirtualBox VMs\Ubuntu18LTS\Ubuntu18LTS.vdi" --resize 20000

У наведеній вище команді замініть your_user_name справжнім користувачем Windows і 20000 - це розмір диска MB.


1

Власне кажучи, здається, що modifyhdодне не приносить вам користі в деяких випадках. Я фактично розширив свій WinXP vdi, клонувавши зображення після розширення.

Ось повний покроковий посібник, який працював для мене пару тижнів тому: http://libtronics.com/2011/07/resize-virtualbox-disk-for-winxp-guest/


Можете пояснити, будь ласка, кроки тут? Відповіді, що мають трохи більше, ніж посилання на інший сайт, тут, як правило, знущаються і можуть бути видалені .
Том Броссман

1
Ну, вам потрібно зрозуміти, що робить modifyhd, що не набагато більше, ніж розширення базового віртуального диска, ось і все. Вам ще потрібно розширити файлову систему, що на ній.
Марцін Камінський

1

Ось спосіб змінити розмір вашого диска VirtualBox, незалежно від того, чи це диск фіксованого формату чи динамічний формат. Зокрема, це запобігає цій помилці:

Progress state: VBOX_E_NOT_SUPPORTED
VBoxManage: error: Resize hard disk operation for this format is not implemented yet!

⚠️ Створіть резервну копію віртуального диска. Ніколи не знаєш, що може піти не так.

На своєму хості:

  1. Відкрийте вікно терміналу.

    У Windows: Відкрийте командний рядок cmd.

  2. Перейдіть до каталогу з віртуальним диском, який ви хочете змінити. Наприклад:

    cd "My VMs"
  3. Створіть новий диск VirtualBox з потрібним ім'ям файлу, розміром (у мегабайти) та форматом (або Standard(динамічним), або Fixed). Наприклад, для створення диска фіксованого формату розміром 50 Гб, який називається MyNewDisk.vdi:

    VBoxManage createmedium --filename "MyNewDisk.vdi" --size 50000 --variant Fixed

    Якщо VBoxManageкоманда не розпізнається, вкажіть повний шлях до неї. Його можна знайти в каталозі встановлення VirtualBox. У Windows вищевказана команда стане:

    "C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" createmedium
        --filename "MyNewDisk.vdi" --size 50000 --variant Fixed
    
  4. Скопіюйте оригінальний диск на новий диск.

    VBoxManage clonemedium "MyOriginalDisk.vdi" "MyNewDisk.vdi" --existing
  5. Зміна розміру зроблена! Ви можете перевірити властивості нового диска, якщо хочете:

    VBoxManage showmediuminfo "MyNewDisk.vdi"
  6. Змініть віртуальну машину, щоб замість неї використовувати новий диск.

Далі, у вашій гостьовій ОС вам потрібно змінити розмір розділів, щоб використовувати нещодавно доступний простір.


1

Для тих, у кого Windows на VHD, як і я, спочатку переходять у VDI шляхом клонування за допомогою наступної команди Linux. (Зверніть увагу, вимкнено живлення Windows VM.)

VBoxManage clonehd Windows10.vhd Windows10.vdi --format vdi

Це повторить vhd.

Тоді VDI можна змінити за допомогою наступного. Зверніть увагу, що VDI фактично не буде рости, поки його не використовувати.

VBoxManage modifyhd Windows10.vdi --resize 80000

Після виправлення місця зберігання в хості програмного забезпечення VM та включення VM завантажується Windows, але розділ все одно буде однакового розміру. Інструмент Google для Windows, який може змінити розмір розділу диска C. Я використовував EaseUs Partition Master для вирощування розділу диска C до мого нового розміру.

Нарешті, VHD можна видалити.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.