VirtualBox能够压缩(减小大小) .vdi
镜像,但不能用于.vmdk
磁盘镜像。但是我们可以压缩.vmdk
文件,如果我们:
.vdi
.vmdk
所以我试着用下面的脚本缩小我的VirtualBox镜像:
#/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
我改编了this script from crysol,但这似乎不能在Ubuntu上运行?第一个vboxmanage storageattach
立即以一个错误开始:
VBoxManage: error: Could not find a controller named 'SATA'
如果我改用"SATA Controller"
:
vboxmanage storageattach "${VM}" --storagectl "SATA Controller" --port 0 --device 0 --type hdd --medium none
我得到了这个错误:
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
如果我注释掉这些vboxmanage storageattach
行,脚本会工作得很好,但得到的VM大小与以前相同,并且它不再引导。
发布于 2015-02-08 14:13:26
我找到了一个solution
首先,在虚拟机内部,用零填充所有空闲空间:
cat /dev/zero > zero.fill;sync;sleep 1;sync;rm -f zero.fill
在您的主机上,从VMware Knowledge Base安装vmware-vmware管理器
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
注意,在开始之前,您有足够的空闲磁盘空间,在此过程中,您需要MV增长到双倍大小。
然后使用以下命令进行压缩:
/usr/bin/vmware-vdiskmanager -k ~/VirtualBox\ VMs/<virtual disk.vmdk>
发布于 2018-03-27 03:35:39
我不需要安装VMWare,也不需要转换回VMDK,所以我使用
在主机内部:
sudo yum clean all
sudo dd if=/dev/zero of=/EMPTY bs=1M
sudo rm -f /EMPTY
cat /dev/null > ~/.bash_history && history -c && exit
然后在来宾关闭后:
$ vboxmanage clonehd --format vdi centos-7-1-1.x86_64.vmdk newdisk.vdi
$ ls -lh
-rwx------+ 1 Chloe None 39G Mar 26 14:52 centos-7-1-1.x86_64.vmdk
-rwx------+ 1 Chloe None 22G Mar 26 15:01 newdisk.vdi
它还允许稍后进行压缩
$ vboxmanage modifyhd newdisk.vdi --compact
在VirtualBox图形用户界面中,我选择了“选择虚拟硬盘文件”来选择新文件。
发布于 2016-09-30 00:54:00
我无法让vmware-vdiskmanager解决方案上面的rubo77s解决方案工作,我相信它依赖于vmware工作站或vmware播放器,这两者我都没有,我确实找到了可执行文件,它给了我错误。
我用他的零命令解决了这个问题
同步cat /dev/
> zero.fill;sync;sleep 1;sync;rm -f zero.fill
然后使用虚拟框导出到.ova工具。
这将导致卵子剥离/压缩归零的空间。然后您可以重新导入它。
https://stackoverflow.com/questions/28309819
复制相似问题