经过一些尝试,有安装了 Vmware Tools 后在虚拟机内执行,比如:
vmware-toolbox-cmd disk shrink /
以及直接在 MacOS 下执行:
/Applications/VMware\ Fusion.app/Contents/Library/vmware-vdiskmanager -k ./虚拟磁盘.vmdk
甚至为了方便,我还在 .zshrc
里加 alias :
alias vmd="/Applications/VMware\ Fusion.app/Contents/Library/vmware-vdiskmanager -k"
但最后结果都不那么满意,虚拟机实际占用 18G ,虚拟磁盘占用 28G ,并没有像 Windows 虚拟机那般是多少便是多少。
但我并不想尝试 一些极端办法,比如 dd
,因为会将物理磁盘撑满,这对磁盘是不健康的:
sudo dd if=/dev/zero of=/zerofile
bs=2M
sudo rm /zerofile
通过了解 Linux 的磁盘碎片相关,得知 Linux 无需整理,默认文件便是最小碎片化,但如此则磁盘就可能由于部分文件分布到末端而撑到最大。
然后想起在虚拟机内执行 vmware-toolbox-cmd disk shrink /
系统应当会提示“文件系统根目录上的磁盘空间不足”,我这里并没有提示。不由得让我觉得有必要去做一次磁盘碎片整理,让文件归属到相对密集的区块:
sudo e4defrag /
sudo e4defrag /home
Linux 确实是碎片最小化的,很快就完成了,然后再次做缩减处理时,提示了“文件系统根目录上的磁盘空间不足”,那么其实说明一切已经到位。
最后不由得让我把注意力放到那个特殊的 swap 分区,因为刚刚好是多出的 8G 空间,经过删除 swap 测试发现并不是这个原因。
我的虚拟机是将 home
单独划分为一个分区,/
则是另一个分区,/
和 home
之间,空闲了相当大的一部分空间。几经折腾,发现最终应当是按分区分别压缩:
sudo vmware-toolbox-cmd disk shrink /
sudo vmware-toolbox-cmd disk shrink /home
执行完,已经从 26G 缩小至 Linux 实际的 18G 大小。所以结论是:
对于 Linux 虚拟机磁盘占用的压缩,MacOS 版 Vmware 不直接给出压缩功能 ,是因为应当在虚拟机内部按分区压缩处理。因此在 MacOS 上使用 vmware-vdiskmanager 进行压缩对于多分区的 .vmdk 是无效的。
以上。
本站由以下主机服务商提供服务支持:
0条评论