VMKFSTOOLS –Punchzero | Shrink VMDK

tarafından 11 Aralık 2014 tarihinde VMware, VMware ESXi, VMware vCenter kategorisine yazıldı.

Merhaba,

Virtual machine’lere disk verilirken genellikle az yer kaplaması açısından Thin disk veriliyor. Thin disk’ler, diğer disk method’larından farklıdır. Belirttiğiniz alanı datastore’dan allocated etmezler. Örneğin bir virtual machine’e 20GB thin disk ekliyorsunuz. İlk olarak bu disk’in datastore’da kaplayacağı alan 0 bayt olacaktır. Bu disk’in içerisine veri yazıldıkta disk büyümeye başlayacaktır. Ben disk içerisine 5GB’lık bir dosya kopyaladığımda bu disk aynı zamanda datastore’da da 5gb yer kaplayacaktır. Peki disk’in içerisinden 5GB’ı sildiğimizde bu disk datastore’da yine 0 bayt mı kaplayacaktır? Tabiki hayır.

ESXi üzeirnde bir thin, thick ile oluşturulmuş virtual machine’in disk’lerini küçültmek için vmkfstools komutlarını kullanabilirsiniz.

Ben bunun örneğini kendi demo ortamımdan göstereceğim. Üzerinde birtane thin disk olan virtual machine’ini inceliyoruz. İşletim sistemi olarak Redhat Linux kullandım.


/vmfs/volumes/53a07518-ef6f2cb9-39a3-001cc4dfef98/Linuxtest # du -ah
8.0K    ./Linuxtest.vmx
0       ./Linuxtest.vmxf
0       ./Linuxtest.vmsd
1.7G    ./Linuxtest-flat.vmdk
0       ./Linuxtest.vmdk
1.0M    ./Linuxtest.nvram
1.0M    ./vmware-1.log
1.0M    ./vmware-2.log
1.7G    .

Virtual machine’i ilk olarak kurduğumuzda disk’in boyutu 1.7Gb olarak gözükmekte. Aşağıdaki komut ile ben 500mb boyutunda bir dosya oluşturuyorum.

 dd if=/dev/zero of=test.file bs=500000000 count=1 

Yukarıdaki komut ile dosya oluşturduktan sonra ESXi’ın SSH’ından tekrar du -ah komutunu çalıştırıyoruz.


/vmfs/volumes/53a07518-ef6f2cb9-39a3-001cc4dfef98/Linuxtest # du -ah
8.0K    ./Linuxtest.vmx
0       ./Linuxtest.vmxf
0       ./Linuxtest.vmsd
2.2G    ./Linuxtest-flat.vmdk
0       ./Linuxtest.vmdk
1.0M    ./Linuxtest.nvram
1.0M    ./vmware-1.log
1.0M    ./vmware-2.log
1.0M    ./vmware.log
2.2G    .
/vmfs/volumes/53a07518-ef6f2cb9-39a3-001cc4dfef98/Linuxtest #

du-ah komutu ile görüldüğü gibi vmdk dosyası 2.2GB olmuş gözüküyor. Şimdi işletim sistemi içerisinde oluşturduğumuz dosyayı silin ve tekrar du -ah komutunu çalıştırın. VMDK boyutu değişmeyecektir.

Öncelikle Virtual machine’i shutdown konumuna getiriyoruz. Ardından ESXi host’a SSH ile bağlanıyoruz ve aşağıdaki komutu çalıştırıyoruz. Tabi komutu çalıştırırken vmdk’nın bulunduğu dizinde olmanız gereklidir.

 # vmkfstools --punchzero Linuxtest.vmdk 

Komutu çalıştırdıktan sonra bize aşağıdaki gibi bir sonuç çıkarıyor.

Not: Bu komutu çalıştırdıktan sonra işlemin bitme süresi tamamen vmdk’nın boyutuna bağlı olarak değişecektir.

SSH


/vmfs/volumes/53a07518-ef6f2cb9-39a3-001cc4dfef98/Linuxtest # vmkfstools --punchzero Linuxtest.vmdk
vmfsDisk: 1, rdmDisk: 0, blockSize: 1048576
Hole Punching: 100% done.

Hole Punhing 100% olduğunda işlemimiz tamamlanmış oluyor.

/vmfs/volumes/53a07518-ef6f2cb9-39a3-001cc4dfef98/Linuxtest # du -ah
8.0K    ./Linuxtest.vmx
0       ./Linuxtest.vmxf
0       ./Linuxtest.vmsd
1.7G    ./Linuxtest-flat.vmdk
0       ./Linuxtest.vmdk
1.0M    ./Linuxtest.nvram
1.0M    ./vmware-1.log
1.0M    ./vmware-2.log
1.0M    ./vmware-3.log
1.0M    ./vmware.log
1.8G    .
/vmfs/volumes/53a07518-ef6f2cb9-39a3-001cc4dfef98/Linuxtest #

du -ah komutunu tekrar çalıştırdığımızda ilk oluşturduğumuz boyutu görüyoruz.

Burada şunu belirtmek istiyorum. Siz bu işlemi isterseniz farklı yöntemler ile de yapabilirsiniz. Virtual machine’i storage vmotion ile thin disk’e çevirerekte bu işlemi gerçekleştirebilirsiniz. Ancak bazı kullanıcılar datastore değiştirmeden bu işlemi yapmak istiyor oyüzden bunu anlatma gereği duydum.

Umarım faydalı olmuştur.

İyi çalışmalar.

Bu yazı blog üzerinde Tayfun DEĞER tarafından paylaşılmıştır. 2009 yılında açılan blog kısa zaman içerisinde büyük bir izleyici kitlesine sahip olmuştur.Tayfun DEĞER danışmanlık ve eğitimler vermektedir. vExpert 2013-2015, VCP5, VCP5-DT, VCP-Cloud ve MCSE sertifikalarına sahiptir.Twitter 'dan @tayfundeger veya RSS ile sitedeki değişiklikleri takip edebilirsiniz.