2015-02-03 33 views
17

VirtualBox có thể nhỏ gọn (giảm kích thước) của .vdi hình ảnh nhưng không thể với hình ảnh đĩa .vmdk. Nhưng chúng ta có thể nhỏ gọn .vmdk file nếu chúng ta:Thu nhỏ hình ảnh đĩa VirtualBox vmdk

  1. tách
  2. chuyển đổi để .vdi
  3. compact
  4. chuyển đổi trở lại .vmdk
  5. đính kèm một lần nữa để máy vitual gốc

Vì vậy, Tôi đã cố thu nhỏ hình ảnh VirtualBox của mình bằng tập lệnh này:

#/bin/bash 

VM_PATH=~/VirtualBox\ VMs 
cd "$VM_PATH" 
VM="$(ls ffnord-example_gc-gw0_* -d -1|head -n 1)" 
cd "$VM" 
VM_VDMK_NAME="$(ls *.vmdk -1|head -n 1)" 
VM_NAME="$VM_PATH/$VM/$VM_VDMK_NAME" 

echo reducing size of "$VM_NAME" 
ls -lah "$VM_NAME" 
set -x 
vboxmanage showvminfo "${VM}" 
vboxmanage storageattach "${VM}" --storagectl SATA --port 0 --device 0 --type hdd --medium none 
vboxmanage clonehd --format vdi "${VM_NAME}" /tmp/VM-disk.vdi 
vboxmanage closemedium disk "${VM_NAME}" --delete 
vboxmanage modifyhd /tmp/VM-disk.vdi --compact 
vboxmanage clonehd --format vmdk /tmp/VM-disk.vdi "${VM_NAME}" 
vboxmanage closemedium disk /tmp/VM-disk.vdi --delete 
vboxmanage storageattach "${VM}" --storagectl SATA --port 0 --device 0 --type hdd --medium 4/VMs/VM-disk1.vmdk 

Tôi đã thích nghi this script from crysol nhưng có vẻ như điều này không hoạt động trên Ubuntu? Các vboxmanage storageattach đầu tiên bắt đầu với một lỗi ngay lập tức:

VBoxManage: error: Could not find a controller named 'SATA' 

Nếu tôi cố gắng "SATA Controller" thay vì:

vboxmanage storageattach "${VM}" --storagectl "SATA Controller" --port 0 --device 0 --type hdd --medium none 

tôi nhận được lỗi này:

VBoxManage: error: No storage device attached to device slot 0 on port 0 of controller 'SATA Controller' 
VBoxManage: error: Details: code VBOX_E_OBJECT_NOT_FOUND (0x80bb0001), component SessionMachine, interface IMachine, callee nsISupports 
VBoxManage: error: Context: "DetachDevice(Bstr(pszCtl).raw(), port, device)" at line 381 of file VBoxManageStorageController.cpp 

Nếu tôi nhận xét ra những vboxmanage storageattach dòng, kịch bản hoạt động tốt, nhưng VM kết quả có cùng kích thước như trước và nó không khởi động nữa.

Đây là output of vboxmanage showvminfo "${VM}"

+1

Có thể nó được gắn vào máy ảo dưới dạng bộ điều khiển IDE thay vì bộ điều khiển SATA không? –

+1

Máy ảo của bạn không có bất kỳ bộ nhớ nào được đính kèm, được hiển thị trong đầu ra 'showvminfo' mà bạn đã đăng. Do đó, bạn thấy thông báo lỗi này. Tôi nghi ngờ một kịch bản lệnh trước đó, không đầy đủ, vì lệnh 'storageattach' đầu tiên sẽ xóa tệp VMDK khỏi cấu hình VM của bạn: ' vboxmanage storageattach [...] --medium none' – he1ix

Trả lời

26

Tôi tìm thấy một solution:

Đầu tiên bên trong VM điền tất cả các không gian miễn phí với số không:

cat /dev/zero > zero.fill;sync;sleep 1;sync;rm -f zero.fill 

Máy chủ lưu trữ của bạn, cài đặt vmware-vdiskmanager từ VMware Knowledge Base :

cd /tmp/ 
wget http://kb.vmware.com/selfservice/viewAttachment.do?attachID=1023856-vdiskmanager-linux.7.0.1.zip&documentID=1023856 
unp 1023856-vdiskmanager-linux-7.0.1.zip 
mv 1023856-vmware-vdiskmanager-linux.7.0.1 /usr/bin/vmware-vdiskmanager 
chmod +x /usr/bin/vmware-vdiskmanager 

Hãy cẩn thận, rằng bạn có đủ không gian đĩa trống trước khi bạn bắt đầu, bạn cần MV tăng lên gấp đôi kích thước trong suốt quá trình.

Sau đó nén nó với:

/usr/bin/vmware-vdiskmanager -k ~/VirtualBox\ VMs/<virtual disk.vmdk> 

Source

+0

Nhìn ở đây có thể bạn sẽ tìm thấy một tệp khác giải pháp [http://www.experts-exchange.com/Software/VMWare/A_12938-HOW-TO-Shrink-a-VMware-Virtual-Machine-Disk-VMDK-in-15-minutes.html](http:/ /www.experts-exchange.com/Software/VMWare/A_12938-HOW-TO-Shrink-a-VMware-Virtual-Machine-Disk-VMDK-in-15-minutes.html) –

+1

Có sẵn phần mềm vmware-vdiskmanager dựng sẵn không 'cho OSX? – Quanlong

+5

@Quanlong phần "Tệp đính kèm" ở cuối bài viết VMWare KB mà rubo77 được liên kết có 3 phiên bản vmware-vdiskmanager. Việc đầu tiên được xác định bởi Mac OS Finder như là một thực thi Unix, và chạy trên ít nhất El Capitan mà tôi đã thử nghiệm nó trên. – mike

3

tôi có thể không nhận được giải pháp rubo77s trên giải pháp vmware-vdiskmanager để làm việc, tôi tin rằng nó có phụ thuộc vào máy trạm vmware hoặc máy nghe nhạc vmware, không phải trong đó Tôi có, tôi đã tìm thấy thực thi và nó đã cho tôi lỗi.

tôi đã có thể giải quyết điều này bằng cách sử dụng lệnh

cat /dev/zero > zero.fill;sync;sleep 1;sync;rm -f zero.fill

zero của ông sau đó sử dụng virtualboxes xuất khẩu sang .ova công cụ.

điều này sẽ dẫn đến việc loại bỏ/nén không gian được zero. thì bạn có thể nhập lại.

Các vấn đề liên quan