vmdkの圧縮

# du -h liveVM20140813/
269.6G liveVM20140813/
#

このシステムを圧縮。実際には50Gくらい。

# date; time vmkfstools --punc
hzero liveVM20140813/liveVM20140813.vmdk; date
Wed Aug 13 13:02:13 UTC 2014
vmfsDisk: 1, rdmDisk: 0, blockSize: 1048576
Hole Punching: 100% done.
real 6m 9.12s
user 1m 11.53s
sys 0m 0.00s
Wed Aug 13 13:08:22 UTC 2014
# du -h liveVM20140813/
269.6G liveVM20140813/
#

全然減らない。

そこで、未使用領域をゼロ埋めしてみる。ゼロファイルを作ったらすぐ削除。

$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 95G 3.7G 86G 5% /
udev 32G 4.0K 32G 1% /dev
tmpfs 13G 724K 13G 1% /run
none 5.0M 0 5.0M 0% /run/lock
none 32G 144K 32G 1% /run/shm
/dev/sda3 394G 43G 331G 12% /usr/local
$

$ date; time sudo dd if=/dev/zero of=/zerofile bs=1M count=90000; date
2014年 8月 13日 水曜日 13:14:18 JST
90000+0 records in
90000+0 records out
94371840000 bytes (94 GB) copied, 131.419 s, 718 MB/s

real 2m11.505s
user 0m0.040s
sys 1m13.809s
2014年 8月 13日 水曜日 13:16:29 JST
$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 95G 92G 0 100% /
udev 32G 4.0K 32G 1% /dev
tmpfs 13G 724K 13G 1% /run
none 5.0M 0 5.0M 0% /run/lock
none 32G 144K 32G 1% /run/shm
/dev/sda3 394G 43G 331G 12% /usr/local
$ sudo rm /zerofile
$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 95G 3.7G 86G 5% /
udev 32G 4.0K 32G 1% /dev
tmpfs 13G 724K 13G 1% /run
none 5.0M 0 5.0M 0% /run/lock
none 32G 144K 32G 1% /run/shm
/dev/sda3 394G 43G 331G 12% /usr/local
$

$ date; time sudo dd if=/dev/zero of=/usr/local/zerofile bs=1M count=350000; date
2014年 8月 13日 水曜日 13:18:37 JST
350000+0 records in
350000+0 records out
367001600000 bytes (367 GB) copied, 525.422 s, 698 MB/s

real 8m45.448s
user 0m0.084s
sys 4m17.748s
2014年 8月 13日 水曜日 13:27:22 JST
$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 95G 3.7G 86G 5% /
udev 32G 4.0K 32G 1% /dev
tmpfs 13G 724K 13G 1% /run
none 5.0M 0 5.0M 0% /run/lock
none 32G 144K 32G 1% /run/shm
/dev/sda3 394G 386G 0 100% /usr/local
$ sudo rm /usr/local/zerofile

これでゼロ埋め。

$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 95G 3.7G 86G 5% /
udev 32G 4.0K 32G 1% /dev
tmpfs 13G 724K 13G 1% /run
none 5.0M 0 5.0M 0% /run/lock
none 32G 144K 32G 1% /run/shm
/dev/sda3 394G 43G 331G 12% /usr/local
$

サイズ的には元に戻った。ESXiから見るとサイズは大きくなっている。ゼロ埋めしすぎか。

# du -h liveVM20140813/
484.1G liveVM20140813/
#

システムを停止後、ESXiで.vmdkを圧縮。

# date; time vmkfstools --punchzero liveVM20140813/liveVM20140813.vmdk; date
Wed Aug 13 13:32:21 UTC 2014
vmfsDisk: 1, rdmDisk: 0, blockSize: 1048576
Hole Punching: 100% done.
real 9m 41.90s
user 1m 37.11s
sys 0m 0.00s
Wed Aug 13 13:42:03 UTC 2014
# du -h liveVM20140813/
54.3G liveVM20140813/
#

270Gあったのが、55G まで縮小できた。