Tóm lược:
VBoxManage.exe modifyhd --resize
có thể tăng (nhưng không giảm) kích thước logic của hình ảnh đĩa (kích thước mà hệ điều hành khách nhìn thấy).
VBoxManage.exe modifyhd inputfile.vdi --compact
có thể giảm kích thước hình ảnh đĩa vật lý (kích thước của tệp hình ảnh trên đĩa mà hệ điều hành máy chủ nhìn thấy). Điều này tuy nhiên không thay đổi kích thước đĩa logic. Lưu ý rằng điều này chỉ hoạt động nếu không gian trống đã bị xóa trong hệ điều hành khách trước.
modifyhd
chỉ hoạt động với biến thể định dạng động ("hình ảnh được phân bổ động").
modifyhd
chỉ hoạt động với các định dạng hình ảnh VDI và VHD.
- Nếu bạn đang sử dụng ảnh chụp nhanh, bạn sẽ phải sao chép VDI ảnh chụp nhanh mới nhất từ thư mục con "Ảnh chụp nhanh".
Để biết chi tiết, xem phần 8.23. VBoxManage sửa đổihd trong hướng dẫn.
Lý do tại sao việc giảm kích thước đĩa logic của VDI vẫn chưa được triển khai là để ngăn ngừa hỏng dữ liệu có thể xảy ra và bạn sẽ có các máy ảo không thể khởi động do kết quả của nó. Do đó, khi --resize
tùy chọn được sử dụng, kích thước đĩa mới phải lớn hơn kích thước hiện tại. Nó không được phép nhỏ hơn hoặc bằng kích thước hiện tại. Nói cách khác, một đĩa 40 GB chỉ có thể được thay đổi kích thước thành 41 GB hoặc lớn hơn thế, nó không thể thay đổi kích thước thành 40 GB (chỉ là câm) hoặc 39 GB hoặc ít hơn thế.
Các phiên bản cũ của VirtualBox đã tạo các tệp VDI dưới dạng biến cố định dạng "cố định". Cài đặt mặc định mới hiện đang tạo các biến thể định dạng "động" khi các tệp VDI (hình ảnh đĩa ảo) mới được tạo. (Tôi đoán đây là trường hợp kể từ khi giới thiệu biến thể định dạng động, bất kỳ phiên bản nào được giới thiệu.)
Vì vậy, thông báo lỗi "hoạt động cho định dạng này chưa được triển khai" có nghĩa là tệp VDI của bạn sử dụng biến thể định dạng "cố định". Để giải quyết vấn đề này, bạn sẽ phải sao chép tệp VDI của mình bằng clonehd
lệnh. Để xem định dạng biến thể của tệp VDI của bạn tại thời điểm này, bạn có thể sử dụng showhdinfo
lệnh.
Ví dụ làm việc
Hiển thị thông tin VDI về đĩa hiện tại.
Lệnh đầu vào: 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>
Xem nơi nó nói "mặc định cố định"? Đó là lý do tại sao nó phát sinh lỗi ở trên khi bạn cố gắng thay đổi kích thước.
Sao chép tệp VDI cũ sang tệp VDI mới.
Lệnh đầu vào: 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>
Võngà! Tập tin cũ hiện đã được sao chép vào một tập tin mới. Vì cài đặt mặc định trong các phiên bản mới của VirtualBox là sử dụng biến thể định dạng "động", nên bạn không phải xác định rõ ràng điều đó. Mặc dù, nếu bạn đang làm việc với phiên bản VirtualBox cũ hơn, thì bạn có thể muốn đặt tùy chọn thành "động" (nếu có) để đảm bảo khả năng tương thích và / hoặc linh hoạt tốt hơn với các phiên bản VirtualBox trong tương lai.
Hiển thị thông tin VDI về đĩa nhân bản.
Lệnh đầu vào: 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>
Xem làm thế nào bây giờ nó nói "mặc định động"? Thật tuyệt!
(Bên cạnh --compact
đó sẽ làm việc với các phiên bản cũ hơn, vì vậy tôi nghĩ rằng tôi cũng có thể thử nó. Nó không hoạt động.)
Thay đổi kích thước đĩa nhân bản.
Lệnh đầu vào: 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>
Sự thành công! Không định dạng nhảm nhí không hơn. Chỉ cần nhớ thay đổi kích thước đĩa mới, nhân bản, chứ không phải đĩa gốc. Hãy nhớ rằng kích thước được thể hiện bằng MB. Tôi tin rằng bạn có thể sử dụng ví dụ 51200
như 50G
(hoặc có thể là "GB"). Ngoài ra còn có tùy chọn --resizebyte
có thể được sử dụng để thể hiện kích thước theo byte.
Hiển thị thông tin VDI về đĩa nhân bản đã thay đổi kích thước.
Lệnh đầu vào: 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>
Đó là nó! Từ đây, những gì bạn phải làm là thêm ổ đĩa nhân bản này làm VDI mới cho VM. Bạn làm điều đó trong VirtualBox. Tôi sẽ không đi vào đó. Nếu bạn đã có thể đọc và hiểu điều này cho đến nay thì có lẽ bạn không cần phải hướng dẫn thêm. Bạn có thể xóa tập tin "cố định" cũ hoặc để nó làm bản sao lưu. Đảm bảo bạn đã kiểm tra tệp VDI mới trước khi xóa tệp nguồn gốc.
Ghi chú! Bạn sẽ không thấy ngay kích thước mới của đĩa nhân bản. Bạn phải khởi động VM với nó, và sau đó bạn phải sử dụng công cụ quản lý phân vùng để mở rộng phân vùng của mình để lấp đầy đĩa ảo (hoặc tạo thêm phân vùng). Đối với Windows, chỉ cần chạy diskmgmt.msc
và bạn sẽ có thể mở rộng phân vùng trong đó.
Ảnh chụp màn hình
Tài liệu tham khảo