thinプロビジョニング形式で仮想ディスクを作成した場合、ファイルが追加されるたびにその分のディスクサイズを確保して、消されても縮むことはない。
なので、例えばテンポラリ領域として、50GBのディスクを一旦置いたら、50GB広がったままで、ファイルサイズ的にみるととってももったいない。
という場合、ダイエットできる手順があります。
まず、ゲストOSで空き領域すべてゼロ埋めをする
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
# ひっ迫していて、空けられそうなパーテーションを確認。この場合、/と/homeの二つ # df Filesystem 1K-blocks Used Available Use% Mounted on /dev/mapper/rhel-root 52403200 44291832 8111368 85% / devtmpfs 930904 0 930904 0% /dev tmpfs 941940 0 941940 0% /dev/shm tmpfs 941940 8792 933148 1% /run tmpfs 941940 0 941940 0% /sys/fs/cgroup /dev/sda1 1038336 145688 892648 15% /boot /dev/mapper/rhel-home 1017661956 165312780 852349176 17% /home tmpfs 188388 0 188388 0% /run/user/0 # ゼロ埋めコマンド実行(&付きなどで実行し、watchとかでdfするといいかも) # dd if=/dev/zero of=/zerofile bs=4k ; rm -fr /zerofile # dd if=/dev/zero of=/home/zerofile bs=4k ; rm -fr /home/zerofile # シャットダウン # shutdown -h now |
ホストOSへCLIでログインし、vmdkを圧縮する
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
# 上記ゲストOSのファイル群が格納されているディレクトリへ移動 # pwd /vmfs/volumes/datastore1/TEST # 対象ファイルを確認。この場合、「TEST_0.vmdk」になる # ls -l total 937891848 -rw------- 1 root root 8684 Jan 30 07:26 TEST.nvram -rw-r--r-- 1 root root 0 Feb 16 2018 TEST.vmsd -rwxr-xr-x 1 root root 3268 Jan 30 07:26 TEST.vmx -rw------- 1 root root 150 Jan 30 06:11 TEST.vmxf -rw------- 1 root root 1099511627776 Jan 30 07:26 TEST_0-flat.vmdk -rw------- 1 root root 558 Jan 30 07:24 TEST_0.vmdk -rw-r--r-- 1 root root 242849 Jan 30 06:33 vmware-10.log -rw-r--r-- 1 root root 241572 Jan 30 06:34 vmware-11.log -rw-r--r-- 1 root root 289832 Jan 30 07:22 vmware-12.log -rw-r--r-- 1 root root 249178 Jan 30 06:17 vmware-7.log -rw-r--r-- 1 root root 230360 Jan 30 06:19 vmware-8.log -rw-r--r-- 1 root root 243051 Jan 30 06:32 vmware-9.log -rw-r--r-- 1 root root 240185 Jan 30 07:26 vmware.log # 確認したファイルに対し、圧縮コマンドを実行 # vmkfstools -K TEST_0.vmdk vmfsDisk: 1, rdmDisk: 0, blockSize: 1048576 Hole Punching: 22% done. # 見た目減っているのかと思うけど、totalが減ってる20GBくらいに # ls -l total 210046984 -rw------- 1 root root 8684 Jan 30 07:26 TEST.nvram -rw-r--r-- 1 root root 0 Feb 16 2018 TEST.vmsd -rwxr-xr-x 1 root root 3268 Jan 30 07:26 TEST.vmx -rw------- 1 root root 150 Jan 30 06:11 TEST.vmxf -rw------- 1 root root 1099511627776 Jan 30 07:26 TEST_0-flat.vmdk -rw------- 1 root root 558 Jan 30 08:44 TEST_0.vmdk -rw-r--r-- 1 root root 242849 Jan 30 06:33 vmware-10.log -rw-r--r-- 1 root root 241572 Jan 30 06:34 vmware-11.log -rw-r--r-- 1 root root 289832 Jan 30 07:22 vmware-12.log -rw-r--r-- 1 root root 249178 Jan 30 06:17 vmware-7.log -rw-r--r-- 1 root root 230360 Jan 30 06:19 vmware-8.log -rw-r--r-- 1 root root 243051 Jan 30 06:32 vmware-9.log -rw-r--r-- 1 root root 240185 Jan 30 07:26 vmware.log |
ファイルの実態を見ると変化がないように見えるが、対象仮想マシンの「プロビジョニングされたサイズ」を見てみると減っていることが分かると思う。
それか、ovaまたはovfへのエクスポート時に。