สรุป:
VBoxManage.exe modifyhd --resize
สามารถเพิ่ม (แต่ไม่ลดลง) ขนาดโลจิคัลของดิสก์อิมเมจ (ขนาดที่เห็นโดย guest OS)
VBoxManage.exe modifyhd inputfile.vdi --compact
สามารถลดขนาดอิมเมจของฟิสิคัลดิสก์ (ขนาดของไฟล์อิมเมจบนดิสก์ตามที่โฮสต์ระบบปฏิบัติการเห็น) อย่างไรก็ตามสิ่งนี้ไม่ได้เปลี่ยนขนาดของดิสก์แบบลอจิคัล โปรดทราบว่าจะใช้งานได้ต่อเมื่อพื้นที่ว่างเป็นศูนย์ใน guest OS ก่อน
modifyhd
ใช้งานได้เฉพาะกับตัวแปรรูปแบบไดนามิก ("ภาพที่จัดสรรแบบไดนามิก")
modifyhd
ใช้ได้กับรูปแบบภาพ VDI และ VHD เท่านั้น
- หากคุณใช้สแน็ปช็อตคุณจะต้องโคลน VDI สแน็ปช็อตล่าสุดจากโฟลเดอร์ย่อย "Snapshots"
สำหรับรายละเอียดดูหัวข้อ8.23 VBoxManage แก้ไขhdในคู่มือ
เหตุผลที่การลดขนาดดิสก์โลจิคัลของ VDI ยังไม่ถูกนำไปใช้งานเพื่อป้องกันความเสียหายของข้อมูลที่อาจเกิดขึ้นและคุณจะมี VM ที่ไม่สามารถบูตได้ซึ่งเป็นผลมาจากมัน ดังนั้นเมื่อใช้--resize
ตัวเลือกขนาดดิสก์ใหม่ต้องมากกว่าขนาดปัจจุบัน ไม่อนุญาตให้น้อยกว่าหรือเท่ากับขนาดปัจจุบัน กล่าวอีกนัยหนึ่งดิสก์ 40 GB สามารถปรับขนาดเป็น 41 GB หรือมากกว่านั้นเท่านั้นไม่สามารถปรับขนาดเป็น 40 GB (นั่นเป็นเพียงใบ้) หรือ 39 GB หรือน้อยกว่านั้น
VirtualBox เวอร์ชันเก่าสร้างไฟล์ VDI เป็น varient รูปแบบ "คงที่" การตั้งค่าเริ่มต้นใหม่ในขณะนี้คือการสร้างชุดรูปแบบ "ไดนามิก" เมื่อสร้างไฟล์ 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>
Voila! ไฟล์เก่าถูกโคลนไปยังไฟล์ใหม่แล้ว เนื่องจากการตั้งค่าเริ่มต้นใน 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 MB นี่เป็นเพราะฉันได้ใช้--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>
ที่ประสบความสำเร็จ! ไม่มีรูปแบบการพล่ามไม่มีอีกต่อไป เพียงจำไว้ว่าต้องปรับขนาดดิสก์ที่โคลนใหม่และไม่ใช่ดิสก์ดั้งเดิม โปรดทราบว่าขนาดจะแสดงเป็น MB ฉันเชื่อว่าคุณสามารถใช้เช่น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 ใหม่ก่อนที่จะลบไฟล์ต้นฉบับ
บันทึก! คุณจะไม่เห็นขนาดใหม่ของดิสก์ที่ลอกแบบมาทันที คุณต้องบูต VM ด้วยจากนั้นคุณต้องใช้เครื่องมือการจัดการพาร์ติชันของคุณเพื่อขยายพาร์ติชันของคุณเพื่อเติมดิสก์เสมือน (หรือสร้างพาร์ติชันเพิ่มเติม) สำหรับ Windows ให้เรียกใช้diskmgmt.msc
แล้วคุณจะสามารถขยายพาร์ติชันในนั้นได้
ภาพหน้าจอ
การอ้างอิง