抬头仰望星空,是否能发现自己的渺小。

伪斜杠青年

人们总是混淆了欲望和理想

MacOS Vmware 优化 Linux 虚拟机 .vmdk 磁盘大小

经过一些尝试,有安装了 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条评论

发表评论