仮想ディスクの圧縮
Windows上のVMware Playerなら、設定メニューからディスク圧縮が選べるけど、OSX上のFusionではそんなメニューが見つからない、次のコマンドでやる
vmware-vdiskmanager -d 対象vmのvmdkファイル (defragの場合) vmware-vdiskmanager -k 対象vmのvmdkファイル (shrinkの場合)
割と面倒(笑)
もちろん、ゲストOS側で空き領域はゼロクリアしておく前提
ボリュームがルートのみなら、
dd if=/dev/zero of=/zero bs=4k; \rm /zero
この前やってみたら、30GBが18.6GBまで縮小できた。テスト用に使っている環境の話。
毎回、手でコマンドを打つのは面倒なので、こんなスクリプトにしてみました。
#!/bin/sh VMDKMAN="/Applications/VMware Fusion.app/Contents/Library" VMDIR="/Users/atanabe/Virtual Machines.localized" case "$1" in ec2) "$VMDKMAN"/vmware-vdiskmanager -d "$VMDIR"/linux-ec2.vmwarevm/linux-ec2.vmdk if [ $? = 0 ]; then "$VMDKMAN"/vmware-vdiskmanager -k "$VMDIR"/linux-ec2.vmwarevm/linux-ec2.vmdk else exit fi ;; nc2) "$VMDKMAN"/vmware-vdiskmanager -d "$VMDIR"/linux-nc2.vmwarevm/linux-nc2.vmdk if [ $? = 0 ]; then "$VMDKMAN"/vmware-vdiskmanager -k "$VMDIR"/linux-nc2.vmwarevm/linux-nc2.vmdk else exit fi ;; c10) "$VMDKMAN"/vmware-vdiskmanager -d "$VMDIR"/linux-c10.vmwarevm/linux-c10.vmdk if [ $? = 0 ]; then "$VMDKMAN"/vmware-vdiskmanager -k "$VMDIR"/linux-c10.vmwarevm/linux-c10.vmdk else exit fi ;; *) echo $"Usage: $0 {ec2|nc2|c10}" RETVAL=1 exit $RETVAL esac
もう今ではec2しか使っていませんが、過去に作ったVM資産である、nc2とc10も指定可能としています。実体はアーカイブ上にしか存在しませんけどね。Just in case.
最終更新日: 2016年5月26日