ทำไมฉันไม่สามารถปรับขนาด VDI แบบไดนามิกด้วยคำสั่ง modifiedhd


29

ฉันเห็นที่นี่ฉันจะเพิ่มขนาดฮาร์ดดิสก์ของเครื่องเสมือนได้อย่างไร

มันควรจะทำงานกับคำสั่งเช่น

VBoxManage modifyhd xp.vdi --resize 2000

เมื่อ VDI มีขนาดคงที่คุณจะได้รับข้อผิดพลาดนี้:

~/VirtualBox VMs/xp$ VBoxManage modifyhd xp.vdi --resize 2000
0%...
Progress state: VBOX_E_NOT_SUPPORTED
VBoxManage: error: Resize hard disk operation for this format is not implemented yet!

discusion และวิธีการแก้ปัญหาที่อยู่ที่นี่

แต่ฉันพบข้อผิดพลาดขณะที่ VDI ของฉันเป็นแบบไดนามิก

~/VirtualBox VMs/xp$ VBoxManage showhdinfo xp.vdi
UUID:           8880dc58-cd0c-4ffb-a583-f8dd50eda98e
Parent UUID:    base
State:          created
Type:           normal (base)
Location:       /home/cip/VirtualBox VMs/xp/xp.vdi
Storage format: VDI
Format variant: dynamic default
Capacity:       8192 MBytes
Size on disk:   4693 MBytes
In use by VMs:  xp (UUID: e2b70963-3c26-41cf-88f6-4e03ca721e2d)

ทำไมถึงเป็นอย่างนั้น?


ปัญหาเดียวกันที่นี่กับ Ubuntu 16.04LTS และ dynamic vdi แปลกมาก
Luckyrings

คำตอบ:


26

หากต้องการใช้VBoxManage modifyhdเรามีคำเตือนต่อไปนี้:

  • ไดรฟ์จำเป็นต้องอยู่ในรูปแบบ. VDI หรือ. VHD
  • ไดรฟ์จะต้องอยู่ในรูปแบบไดนามิกไม่คงที่ (ดิสก์คงที่สามารถแปลงเป็นไดนามิกได้โดยสร้างโคลน)
  • ขนาดไดรฟ์จะมีผลกับขนาดโลจิคัลเท่านั้น
  • ไม่สามารถลดขนาดของไดรฟ์ให้เท่ากับหรือต่ำกว่าขนาดทางกายภาพ
  • สำหรับการหดตัวขนาดทางกายภาพ0ที่เราต้องเติมช่องว่างที่ไม่ได้ใช้ไดรฟ์ด้วย
  • Windows VDI อาจจะต้องมีการจัดระเบียบก่อนที่จะลดขนาดทางกายภาพของมัน

ในตัวอย่างด้านบนนั้นได้พยายามปรับขนาดดิสก์แบบไดนามิกที่มีขนาดฟิสิคัล 4693 MB เป็น 2,000 MB ซึ่งไม่สามารถทำได้ ดังนั้นข้อผิดพลาด


1
ฉันสะดุดที่นี่เช่นกัน มันช่างเจ็บปวดเหลือเกิน
ลัส

2
หากต้องการแก้ไขไดรฟ์ในรูปแบบคงที่ให้ทำตามคำตอบโดย @ ripper234
Sharun

ตรวจสอบคำตอบของฉันมันมีรายละเอียดทั้งหมดที่คุณต้องการและฉันสามารถรับรองได้ว่ามันใช้งานได้
Mauricio Gracia Gutierrez

ฉันสร้างภาพนี้เมื่อสองปีที่แล้วฉันลืมไปนานแล้วว่ามันมีขนาดคงที่และไม่ใช่แบบไดนามิก การอ่านในคำตอบของคุณทำให้ฉันนึกถึง ฉันใช้เวลากว่าหนึ่งชั่วโมงในการพยายามหาสาเหตุว่าทำไมฉันจึงทำสิ่งนี้ไม่ได้: (... ขอบคุณ
Madivad

ขอบคุณสิ่งนี้ช่วยได้ สำหรับ linux อย่าลืมเรียกใช้pvresizeคำสั่งเพื่อใช้พื้นที่นั้นสำหรับ linux
Maksim Luzik

24

วิธีแก้ปัญหานี้ทำงานสำหรับฉัน:

  1. ปิดเครื่อง
  2. สร้างไดรฟ์ใหม่ผ่านทางส่วนติดต่อผู้ดูแลระบบตามขนาดที่คุณต้องการ
  3. ใช้clonemedium VBoxManageกับ--existingค่าสถานะ

    VBoxManage clonemedium <source-guid> <destinatin-guid> --existing
    

หมายเหตุ : ตอนนี้ดิสก์ใหม่จะมีพื้นที่ส่วนเกินเป็นไม่ได้ปันส่วนและคุณจะต้องใช้ gparted เพื่อขยายขนาดให้ใหญ่สุด

ไม่แน่ใจว่าทำไมพวก VirtualBox ถึงไม่สามารถใช้สิ่งที่กล่าวมาข้างต้นเพื่อนำสิ่งนี้ไปใช้แทนการขว้างVBOX_E_NOT_SUPPORTED... อย่างน้อยลิงค์ไปยังสิ่งนี้ :)


1
ฉันจะจัดสรรพื้นที่ส่วนเกินบน windows ได้อย่างไร
Ken

4
@Ken ไม่แน่ใจว่าคุณคิดออก; Start -> Run -> diskmgmt.msc คลิกขวาที่ C: (หรือไดร์ฟหลัก) และเลือกที่จะขยาย
เทรนต์

2
สิ่งนี้ช่วย ฉันไม่ได้ใช้ GUID แต่มีชื่อไฟล์ไดรฟ์
Luckyrings

3
@ ripper234 สามขั้นตอนต้องการคำอธิบายเชิงลึก - สำหรับคนอย่างฉันที่ไม่แน่ใจว่าพวกเขากำลังทำอะไรอยู่ ใน 2) เรากำลังสร้างดิสก์แบบคงที่ใหม่หรืออะไร .vdi .vdmk ?? โปรดยกตัวอย่างที่เหมาะสมอาจมีกราฟิก 3) clonemedium กำลังทำอะไรเมื่อเทียบกับ clonehd? สอง guids มาจากไหน - โดยเฉพาะปลายทาง - มันมีอยู่แล้วแม้ว่าเราจะโคลนนิ่ง? ขอบคุณ
mwarren

ขอขอบคุณ. ตอนนี้ฉันถูกนำมาที่นี่ในฐานะผู้ใช้ Windows (แม้ว่านี่จะเป็นถาม Ubuntu) ดังนั้นฉันจะเพิ่มที่นี่ใน VBoxManage เวอร์ชั่น Windows คุณต้องใส่เส้นทางไปยังฮาร์ดไดรฟ์เสมือนจริงแทนที่จะเป็น VM guid ของ
Sean Burchett

4

นี่คือกระบวนการทั้งหมดฉันจะพยายามให้รายละเอียดมากที่สุด

  1. ตรวจสอบให้แน่ใจว่าเครื่องที่คุณกำลังจะเติบโตมีขนาดอยู่ในสถานะ "ปิดเครื่อง" (ไม่ได้อยู่ใน "บันทึก" หรือสถานะอื่น ๆ )

ในกรณีของฉันมันเป็นเครื่องขนาด 32 GB และจะเรียกมันว่าSMALL VM

  1. สร้างเครื่องเสมือนใหม่ด้วยขนาดที่ต้องการใหม่

ในกรณีของฉันฉันตัดสินใจที่จะสร้างเครื่องเสมือน 70 GB ใหม่ในขณะที่กู้คืนเนื้อหาของเครื่องขนาดเล็กภายใน VM ใหม่นี้และฉันจะอ้างถึงสิ่งนี้เป็นLARGE VM

  1. รันคำสั่งVBoxManage list hddsหรือเปิดVirtual Media Managerเพื่อรับ GUID ของSMALL VM (ต้นทาง) และ GUID ของLARGE VM (ปลายทาง)

ด้วย GUID เหล่านั้นให้สร้างคำสั่งต่อไปนี้

VBoxManage clonemedium SMALL_VM_GUID LARGE_VM_GUID - มีอยู่แล้ว

ในกรณีของฉันORIGIN - SMALL VMคือ: 39143127-42b6-478a-afb2-5e58f14218b

ในกรณีของฉันคำอธิบาย - VM ขนาดใหญ่คือ: bb808b5b-b88c-49b2-a646-3414af906d84

แน่นอนว่า GUID ของคุณจะแตกต่างจากของฉัน

ตรวจสอบให้แน่ใจว่าคุณไม่ได้คว่ำ GUIDs มิฉะนั้นเครื่องใหม่จะแทนที่เนื้อหาของเครื่องที่คุณมีอยู่ !!!!

หลังจากทำให้แน่ใจว่าคุณไม่ได้ผสมต้นกำเนิดกับปลายทางให้รันคำสั่งนี้:

$ VBoxManage clonemedium 39143127-42b6-478a-afb2-5e58f14218b2 bb808b5b-b88c-49b2-a646-3414af906d84 - ปัจจุบัน

0% ... 10% ... 20% ... 30% ... 40% ... 50% ... 60% ... 70% ... 80% ... 90% ... 100%

สื่อโคลนสร้างขึ้นในรูปแบบ 'VDI' UUID: bb808b5b-b88c-49b2-a646-3414af906d84

  1. เริ่มLARGE VMใหม่ที่คุณสร้างในขั้นตอนที่ 2

  2. ตรวจสอบในเครื่องมือหน้าต่างการจัดการคอมพิวเตอร์ว่าเครื่องมีขนาดพื้นที่ว่างที่ไม่ได้ใช้ / unformat มากขึ้น

  3. หากคุณต้องการคุณสามารถเรียกใช้ "chkdsk" บนไดรฟ์ C เพื่อให้แน่ใจว่าทุกอย่างพร้อม (อาจทำให้คุณต้องรีบูตสองครั้งบนLARGE VM )

  4. การใช้ gparted-live * .iso "ใส่เข้าไป" ในเครื่องเสมือนใหม่แล้วรีบูต

  5. บูตเข้าสู่สภาพแวดล้อมแบบ gparted

  6. ขยายพาร์ติชันของคุณและบันทึกการเปลี่ยนแปลง

  7. "Eject" gparted-live * .iso เพื่อบูตอีกครั้งใน Windows

  8. ตรวจสอบในเครื่องมือหน้าต่างการจัดการคอมพิวเตอร์ว่าขณะนี้เครื่องมีไดรฟ์ C ที่ใหญ่กว่าเพื่อแก้ปัญหา spece ของคุณ

ฉันมีภาพหน้าจอของกระบวนการเหล่านี้ แต่ตัดสินใจที่จะไม่รวมไว้เพราะจะทำให้คำตอบของฉันใหญ่และน่ากลัวสำหรับผู้ที่ "รีบ" เพื่อให้ได้พื้นที่ว่างบนเครื่องเสมือน Windows ของพวกเขา


ขอบคุณสำหรับคำแนะนำ ในขั้นตอนที่ 3 คุณได้รับ GUID จากที่ไหน ฉันไม่แน่ใจว่า Virtual Media Manager คืออะไร
A.

3
ไม่เป็นไรฉันคิดว่าฉันได้รับมาจากมันVBoxManage list hdds
1818

@ A.Wan นี่คือผู้จัดการสื่อเสมือน - google.com.co/…
Mauricio Gracia Gutierrez
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.