免責事項

当ブログに掲載されている情報は個人的に調べたものであり、その内容の正確性や安全性を保証するものではありません。
記事で紹介している情報で被ったいかなる損害に関しても、当サイトでは一切の責任を負いかねます。

2015年7月5日日曜日

Compress Thin provisioning disk (Linux OS)

今回は Thin provisioning フォーマットの vmdk を vmkfstools を使って圧縮する方法をご紹介します。
Thin provisioning ディスクは容量可変ディスクですが、一旦アロケートされたブロックは開放しないので、ファイルの増減が多いシステムでは結構無駄な領域として残ってしまいがちです。
 なお、今回は Guest OS が Linux OS の場合の手順です。

Thin provisioning vmdk を圧縮するにあたってのポイントは 2 つです。

 ・圧縮前に Guest OS 内で空き容量をゼロクリアする
 ・ゼロクリアするので、一時的に VMFS の容量は逼迫する


手順概要は以下の通りです。
簡単ですね。
-------------------------------
1.Guest OS にログインして、対象のディスクをゼロクリアする。
2.圧縮前に Guest OS をシャットダウンする。
3.vmdk を vmkfstools コマンドを使って圧縮する。
-------------------------------


では、実際の手順をご紹介します。
なお、今回の Linux OS の構成はこのようになっています。
-------------------------------
OS:CentOS 6.2
vCPU:1
vRAM:2GB
vmdk:20GB(Thin provisioning)
-------------------------------


0.まず、現状のストレージ使用量を確認しておきます。
VMFS としてはこのような使用量になります。
-------------------------------
/vmfs/volumes/52049736-07317bdd-a74a-005056910157 # du -hs test001/test001-flat.vmdk
3.1G    ./test001/test001-flat.vmdk
/vmfs/volumes/52049736-07317bdd-a74a-005056910157 #

-------------------------------


1.Guest OS にログインして、対象の vmdk に対してゼロクリアを行います。
-------------------------------
[root@test001 home]# dd if=/dev/zero of=ZEROFILE.txt bs=1000000 ; rm -f ZEROFILE.txt
dd: writing `ZEROFILE.txt': デバイスに空き領域がありません
13680+0 records in
13679+0 records out
13679198208 bytes (14 GB) copied, 951.158 s, 14.4 MB/s
[root@test001 home]#

-------------------------------

このとき、VMFS はこのような使用量になります。(青字)
-------------------------------
/vmfs/volumes/52049736-07317bdd-a74a-005056910157 # du -hs test001/test001-flat.vmdk
15.6G   test001/test001-flat.vmdk
/vmfs/volumes/52049736-07317bdd-a74a-005056910157 #

-------------------------------


2.圧縮前に Guest OS をシャットダウンします。
-------------------------------
[root@test001 home]# shutdown -h now
Broadcast message from
root@test001
        (/dev/pts/0) at 13:51 ...
The system is going down for halt NOW!
[root@test001 home]#

-------------------------------


3.vmdk を vmkfstools コマンドを使って圧縮します。(青字)
これは ESXi から作業します。
-------------------------------
/vmfs/volumes/52049736-07317bdd-a74a-005056910157 # vmkfstools --punchzero test001/test001.vmdk
vmfsDisk: 1, rdmDisk: 0, blockSize: 1048576
Hole Punching: 100% done.
/vmfs/volumes/52049736-07317bdd-a74a-005056910157 #

-------------------------------

vmkfstools 実行後に VMFS の使用量を確認します。
すると、割り当て容量が減少したことが確認できました。(青字)
-------------------------------
/vmfs/volumes/52049736-07317bdd-a74a-005056910157 # du -hs test001/test001-flat.vmdk
2.7G    test001/test001-flat.vmdk
/vmfs/volumes/52049736-07317bdd-a74a-005056910157 #

-------------------------------


これらの作業を vSphere Web Client から状態を確認すると、このようになりました。

vSphere Web Client からみたストレージ使用量の変化


ちなみに、Guest OS 内でゼロクリアしたあと、Storage vMotion を行っても、圧縮はできませんでした。
Storage vMotion だと、一旦 Eager Zeroed Thick disk に変更したあと、改めて Thin provisioning disk に変更するとできそうですね。(試していませんが。)

0 件のコメント:

コメントを投稿