Як змінити VDI фіксованого розміру за допомогою команди modifyhd в Windows?


70

Я намагаюся розібратися, як змінити розмір файлу 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>

а

Скажіть, що тепер?! ... не вдається змінити розмір віртуальних жорстких дисків формату VDI? Ви не кажете? Не підтримуєте власний формат? А як щодо цього ...

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


4
Я зняв рент за якість VirtualBox, що не додає нічого корисного до питання.
sleske

1
Для подальшої довідки modifyhdтепер відомий як, modifymediumале залишається сумісним назад - див. Virtualbox.org/manual/ch08.html#vboxmanage-modifyvdi
djule5

Відповіді:


121

Підсумок:

  • 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і ви зможете розширити там розділ.

Скріншоти

а б c г е f г

Довідково



Добре око! Я виправив параметр modifyhd. Дякую, що ви звернули на це увагу.
Самір

2
Справді добре написана відповідь! ІМХО за це має отримати багато голосів.
Йохан Карлссон

+1: Такі люди, як ти, і знання, якими ти вільно ділишся, це робить екосистему StackExchange таким фантастичним ресурсом!
Homunculus Reticulli

1
Якщо у вас є проблеми, оскільки ви використовуєте знімки , перегляньте virtualbox.org/ticket/9103 . В основному, потрібно застосувати modifymedium/ modifyhdоперацію до самого файлу знімка.
djule5

11

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

У терміналі на комп'ютері Mac введіть компакт-диск у каталог із файлом VDI та введіть наступне:

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

У розділі зберігання програм VirtualBox додайте mydiskClone.vdi як другий HD, а потім запускайте VM нормально.

В оболонці гостьової ОС введіть:

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

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

sudo resize2fs /dev/sdb1

Вимкнення гостьової ОС.

У розділі зберігання додатків VirtualBox знову встановіть mydiskClone.vdi як завантажувальний диск. Потім запустіть гостьову ОС і перевірте новий розмір диска, використовуючи властивості "Комп'ютер" у файловому браузері.


Ця відповідь не має сенсу. Ви спочатку створюєте один великий розділ на / dev / sdb, потім зміните його розмір, але спочатку не створюєте файлову систему. Ви, можливо, забули крок копіювання над оригінальним розділом?
sleske

5

Клонування насправді є кращим рішенням, і є простіший спосіб зробити це.

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


Це частина відповіді від самміга.
Ефрен

4

Гаразд, тому я зробив це без клонування .

У мене був VGB-файл 100 Гб (фіксованого формату) з Ubuntu на ньому. Працює прекрасно. Я хотів звільнити трохи місця в хості, зменшивши VM.

Кроки:

  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 модифікує компакт-диск "ubuntu.vdi"

Минув час, але це спрацювало!


1
Ви впевнені, що це спрацювало? Відповідно до посібника VirtualBox, --compactпрацює лише для динамічно виділених зображень, а не для фіксованих розмірів.
sleske

1
@ ATOzTOA: Якщо файл зображення диска зростає, це не зображення "фіксованого формату", а зображення "динамічно виділеного", про що ви написали у своїй відповіді.
sleske

3
Ні, це динамічно виділене зображення . Цитуючи посібник: "Якщо ви створюєте зображення фіксованого розміру, у вашій хост-системі буде створено файл зображення, який має приблизно такий же розмір, як і ємність віртуального диска." Virtualbox.org/manual/ch05.html#vdidetails
sleske

1
"Зображення фіксованого розміру означає, що воно не може перевищувати вказаний розмір." НЕМАЄ. "Фіксований розмір" означає, що розмір є фіксованим, тому завжди однаковий. Прочитайте документи.
sleske

1
Якщо хтось читає це і не знає, хто прав. @sleske правильний. Зображення з фіксованим розміром точно такі, як вони кажуть. Виправлений у розмірі, визначеному під час створення зображення. У орієнтирах це забезпечує набагато більшу продуктивність щодо динамічно розподілених зображень, тому кожен, хто використовує VBox для інтенсивних завдань HD, повинен, мабуть, враховувати цей формат, незважаючи на його обмеження.
Джек

2

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

Крок 1: Використовуйте командний рядок Windows (VBoxmanage) для збільшення розміру диска. Порада тут полягає в тому, щоб використовувати ідентифікатор диска vdi замість того, щоб нескінченно намагатися ввести місцезнаходження файлу та отримувати повідомлення про помилки.

Крок 2: Потім потрібно розгорнути свій основний розділ, щоб використовувати новий простір. Завантажте gparted iso та створіть нову віртуальну машину у VBox, використовуючи її як джерело IDE. Потім використовуйте наявний VDI-накопичувач як диск sata. Не створюйте віртуальний привід для цієї машини. Завантажте нову машину, і у вас буде запущений Gui. Це може зайняти пару перезавантажень, щоб розібратися.

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

Не шматок пирога, але це можна виконати ... На те, щоб розібратися в цьому, мені знадобилося півдня. Запуск win8.1 / Ubuntu на VBox

Віллі


2

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

  1. Використовуйте VirtualBox для створення нового диска потрібного розміру (розмір ОБОВ'ЯЗКОВО повинен бути прирівняний до оригіналу). Зробіть це, відкривши налаштування VirtualBox для гостьового віртуального комп'ютера, перейдіть до пункту «Зберігання», клацніть контролер жорсткого диска (напр., «SATA»), а потім натисніть «+», щоб додати жорсткий диск. Потім налаштуйте новий диск за бажанням.
  2. Завантажте відомий ISO ISO gparted та налаштуйте гостьовий VM для завантаження з нього (знову ж, Налаштування зберігання).
  3. Створіть резервну копію поточної пам’яті вашого гостя VM.
  4. Завантажте гостьовий VM (повинен завантажуватися в gparted живу середу). Зсередини розбитого середовища:
    1. Використовуйте додаток gparted, щоб переконатися, що ваш наявний диск є "/ dev / sda", і що ваш новий (більший) диск "/ dev / sdb" (праворуч внизу).
    2. Закрийте програму gparted.
    3. Відкрийте термінал із кореневими приватними правами (клацніть правою кнопкою миші на робочому столі -> Термінали -> термінал з правами 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. Вимкніть гостьовий VM (gparted live) та видаліть ISO з приводу VM.
  5. Перейдіть у Налаштування VBox для гостьового віртуального комп'ютера, перейдіть до Зберігання та вийміть оригінальний диск зі списку (клацніть правою кнопкою миші та виберіть "Видалити додаток"). Це має залишити ваш новостворений диск для VM. Примітка. Цей крок - це просто вийняти диск із конфігурації гостьового VM - ваш оригінальний гостьовий диск VM (тобто малий) все ще доступний на хост-машині.
  6. Завантажте VM і насолоджуйтесь!
  7. (Як тільки все буде підтверджено, як працює, можна видалити оригінальний диск VM.)

Хоча вищезазначене для мене багато разів працювало, здається, що для використання LVM потрібно ще кілька кроків. (ПРИМІТКА. Якщо використовується LVM, ви можете просто додати новий диск потрібного розміру, а потім додати цей диск до групи гучності.) З CentOS 6.6, де використовується LVM, мені довелося також збільшити простір всередині LVM. Тож після завантаження нового диска, створеного вище, я зробив щось за цими напрямками (різні частини цього варіанту залежать від імен вашої установки):

  1. Отримайте інформацію про налаштування LVM:

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

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

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

    Перед:

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

    Команда:

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

    Після:

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

Гарна відповідь! Ласкаво просимо на сайт!
djsmiley2k - Корова

1

Ось як я змінив розмір / зменшив / зменшив фіксований VDI-образ (мій процес його розширення знаходиться в іншій відповіді в цій самій темі):

Спочатку короткий фон про те, для чого мені це потрібно (оскільки існує безліч сценаріїв зменшення VDI, деякі з яких можуть бути неможливі при такому підході): Роки тому я створив фіксований VDI для гостя Windows Server і розміру його розміром 600 Гб. Я не пригадую, чому я вибрав саме цей розмір, але на сьогоднішній день я спожив лише 100 Гб цього гостя і хочу повернути більшу частину залишків. Тому в моєму випадку я хочу зберегти всі дані в гостях і просто хочу звільнити невикористаний простір у гості.

(Наступні кроки здебільшого з моєї пам’яті зробили це за останні 2 години, тому вибачте, якщо я щось пропущу тут.)

  1. Визначте, наскільки великим ви хочете бути нового розміру. Звичайно, ви, мабуть, захочете залишити гостя з додатковим простором поза тим, що він зараз споживає. Розмір повинен бути принаймні таким самим, як дані у вихідному / оригінальному диску, округлені до найближчого ГБ.
  2. Використовуйте VirtualBox для створення нового диска фіксованого розміру з розміром, визначеним на попередньому кроці. Зробіть це, відкривши налаштування VirtualBox для гостьового віртуального комп'ютера, перейдіть до пункту «Зберігання», клацніть контролер жорсткого диска (напр., «SATA»), а потім натисніть «+», щоб додати жорсткий диск. Потім налаштуйте новий диск за бажанням.
  3. Завантажте існуючий ISO ISO gparted та налаштуйте гостьовий VM для завантаження з нього (знову ж, налаштування зберігання).
  4. Створіть резервну копію поточної пам’яті вашого гостя VM.
  5. Завантажте гостьовий VM (повинен завантажуватися в 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).
    9. Якщо припустити, що ваш "оригінальний" диск є / dev / sda, а "new" є / 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. Вимкніть гостьовий VM (gparted live) та видаліть gparted ISO з VM-накопичувача.
  6. Перейдіть у Налаштування VBox для гостьового віртуального комп'ютера, перейдіть до Зберігання та вийміть оригінальний диск зі списку (клацніть правою кнопкою миші та виберіть "Видалити додаток"). Це має залишити ваш новостворений диск для VM. Примітка. Цей крок - це просто видалення диска з конфігурації гостьового VM - ваш оригінальний гостьовий диск VM (тобто великий VDI) все ще доступний на хост-машині.
  7. Останнім кроком, який я повинен був зробити для свого гостя Windows, було встановити / виправити MBR та / або BCD. (Я не знаю, чи потрібне щось для гостя Linux, оскільки я цього ще не зробив.) Якщо я просто завантажився зі свого нового VDI, у мене з’явився екран помилки завантажувальної програми Windows з цим вмістом (на жаль, я не став ' t захопити скріншот, перш ніж я виправити проблему):

    windows failed to start
    status 0xc000000e
    information A required device isn't connected or can't be accessed.
    
  8. Отримайте ISO для встановлення або відновлення Windows (в ідеалі такого, який відповідає вашій версії ОС) і налаштуйте гостьовий VM для завантаження з нього (знову ж, налаштування пам’яті).

  9. Запустіть гостьовий VM і виберіть завантаження з CD / DVD.

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

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

      Ця остання команда повинна знайти вашу установку Windows та запропонувати її додати до BCD. Відповідь "Y".

    3. Вийдіть із командного рядка та вимкніть гостьовий VM.
  10. Перейдіть у "Налаштування VBox" для гостьового комп'ютера, перейдіть до "Зберігання" та видаліть установку / ремонт Windows ISO з приводу CD / DVD.
  11. Завантажте VM і насолоджуйтесь!
  12. (Як тільки все буде підтверджено, як працює, можна видалити оригінальний диск VM.)

0

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

Примітка: Як вказував djule5 (див. Коментар відразу після запитання), modifyhdвін зараз відомий як modifymedium(але залишається сумісним назад). Тут я використовую modifymedium.

1. Вийдіть із запущеного VM

Так, ця відповідь стосується файлу VDI, який вже використовується VM 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. Використовуйте інструмент розділення для розширення логічного розділу

Запустіть свій розміщений VM. Потім скористайтеся інструментом розділення .

Деякі інструменти для розміщеного GNU / Linux:

Якщо розміщена система використовує Windows:

4. Перевірте вільний простір перегородки

Розмір файлу VDI (у вашій хост-системі), можливо, не змінився, оскільки ваш VM ще не використовував зайву кількість місця. Весело.


-1

Це працювало б для мене і має визначати загальну кількість ємності жорсткого диска. Не простір, який нам потрібно збільшити ...

C: \ Програмні файли \ Oracle \ VirtualBox> VBoxManage.exe модифікуйте "D: \ Віртуальна машина \ Віртуальний файл VMs \ Windows 7 (FileZilla Server) \ Windows 7 (FileZilla Server) .vdi" --зміна 15360

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