Seperti yang kita ketahui, di dalam virtualisasi terdapat 2 tipe virtual harddisk yang bisa digunakan, yaitu thin & thick. Berikut adalah sedikit insight mengenai kedua tipe virtual harddisk tersebut.
Thick merupakan tipe virtual harddisk yang langsung mengalokasikan kapasitas virtual HDD sesuai dengan besaran yang ditentukan saat proses pembuatan VM. Misalnya VM baru dibuat dengan alokasi virtual HDD sebesar 10 GB, maka kapasitas HDD secara fisik akan langsung berkurang 10 GB (Digunakan untuk alokasi virtual HDD). Walaupun virtual HDD tersebut belum digunakan sampai 10 GB, misalnya baru digunakan 1 GB saja.
Sedangkan, thin merupakan tipe virtual harddisk yang tidak langsung mengalokasikan kapasitas virtual HDD saat pembuatan VM. Misalnya VM baru dibuat dengan alokasi virtual HDD sebesar 10 GB, maka kapasitas HDD secara fisik tidak akan langsung berkurang sebesar 10 GB, melainkan hanya berkurang sebesar kapasitas yand dibutuhkan saja. Jika kapasitas yang dibutuhkan saat pembuatan VM hanya 1 GB maka kapasitas HDD secara fisik juga akan berkurang sebesar 1 GB, walaupun kapasitas yang dialokasikan kepada virtual HDD tersebut adalah 10 GB sekalipun.
Secara prinsip virtual HDD tipe thick memiliki kecepatan yang lebih kencang dibandingkan dengan yang thin, karena proses alokasi sudah dilakukan saat awal proses pembuatan VM (Dengan konsekuensi, proses pembuatan VM thick lebih lama dibandingkan VM thin). Sedangkan pada tipe thin, proses alokasi akan selalu dilakukan pada saat ada penambahan data baru di sisi VM.
Walaupun demikian, tipe thin ini juga bagus digunakan pada server virtualisasi yang kapasitas fisiknya tidak terlalu besar, karena berapapun kapasitas virtual HDD yang dialokasikan, kapasitas akan berkurang sesuai dengan kapasitas yang digunakan (Bukan berkurang sesuai dengan kapasitas yang dialokasikan). Selain itu proses pembuatan VM thin juga lebih cepat karena tidak ada proses alokasi.
Hanya saja, VM thin ini memiliki 1 kekurangan yang menurut saya sangat mengganggu. Kekurangannya adalah VMDK (File virtual HDD) thin tidak bisa menyesuaikan besaran kapasitasnya apabila ada penghapusan data pada VM bersangkutan. Seperti inilah contoh kasus terkait dengan kekurangan yang saya maksud.
- Sebelum penghapusan data
- Data VM Linux sebesar 5 GB
- Size VMDK (File virtual HDD) sebesar 5 GB (Sama dengan data pada VM Linux)
- Menghapus data pada VM Linux sebesar 3 GB
- Setelah penghapusan data
- Data VM Linux sebesar 2 GB
- Size VMDK (File virtual HDD) masih sama, yaitu 5 GB (Tidak dengan data pada VM Linux)
Padahal seharusnya size VMDK menyesuaikan data yang ada pada VM Linux, yaitu berkurang menjadi 2 GB. Tetapi karena tipe virtual HDD yang digunakan adalah thin, maka penyesuaian di sisi VMDK tidak bisa dilakukan.
Jadi secara prinsip alokasi pada virtual HDD thin hanya berfungsi saat penambahan data saja, dan tidak berfungsi saat ada pengurangan data (VMDK tidak akan disesuaikan jika ada pengurangan data).
Maka dari itu, perlu adanya provisioning secara manual pada VMDK yang sudah terlanjur besar, supaya kapasitasnya sesuai dengan besaran data asli yang ada pada VM. Berikut adalah langkah-langkah untuk melakukannya.
Persiapan
- Enable SSH Services
- Login via web browser dengan user root
- Pilih menu Manage | Services
- Start service ESXi Shell dan SSH
Provisioning VMDK
- Akses console VM yang akan di provisioning
- Buka terminal VM Linux
- Cek kapasitas HDD VM dengan perintah berikut
# df -h Filesystem Size Used Avail Use% Mounted on udev 963M 0 963M 0% /dev tmpfs 198M 1.4M 196M 1% /run /dev/sda1 48G 9.0G 37G 20% / tmpfs 986M 76K 986M 1% /dev/shm tmpfs 5.0M 0 5.0M 0% /run/lock tmpfs 986M 0 986M 0% /sys/fs/cgroup /dev/loop0 97M 97M 0 100% /snap/core/9804 /dev/loop1 97M 97M 0 100% /snap/core/9665 tmpfs 198M 28K 197M 1% /run/user/123 tmpfs 198M 0 198M 0% /run/user/0
- Misalnya disini saya akan melakukan provisioning pada partisi /. Sebagai informasi, kapasitas partisi / sebelumnya sudah mencapai 17 GB, lalu saya melakukan penghapusan sampai menjadi 9 GB saja
- Catat juga besaran kapasitas yang available pada partisi tersebut, misalnya available pada partisi VM kali ini adalah 37 GB
- Sekarang coba bandingkan size VMDK VM tersebut pada datastore vSphere
- Terlihat bahwa size file VMDK jauh lebih besar (17 GB) jika dibandingkan dengan size data pada VM (9 GB). Hal ini terjadi karena size data pada VM pernah mencapai 17 GB
- Kembali ke terminal VM
- Masuk ke direktori utama partisi yang akan di provisioning, dalam contoh kali ini saya akan provisioning partisis /. Untuk masuk ke direktori tertentu bisa dilakukan dengan perintah cd (lokasi-direktori)
# cd /
- Selanjutnya adalah membuat file zero blocks
- Untuk file zero blocks sebenarnya bisa saja kita buat sesuai dengan kapasitas yang available, tetapi tidak rekomendasi karena yang akan kita provisioning kali ini adalah partisi utama Linux (Sistem Linux bisa bermasalah apabila kapasitas availablenya 0). Rekomendasi dari saya besaran file zero blocks bisa menggunakan hitungan, kapasitas availabe dikurangi 2 GB. Misalnya dalam kasus kali ini, 37 – 2 = 35 GB
- Konversikan alokasi file zero blocks ke dalam bentuk MB, dengan hitungan (Besaran GB) x 1024. Misalnya dalam kasus kali ini, 35 x 1024 = 35840 MB
- Lalu buat file zero blocks dengan perintah “dd bs=1M count=(besaran-zero-blocks-dalam-satuan-MB) if=/dev/zero of=zero” (Pada langkah kali ini kapasitas VM akan dipenuhi oleh zero blocks), lalu tunggu proses generate file zero blocks selesai
# dd bs=1M count=35840 if=/dev/zero of=zero 35840+0 records in 35840+0 records out 37580963840 bytes (38 GB, 35 GiB) copied, 356.648 s, 105 MB/s
- Setelah itu, shutdown VM Linux
- Remote VMware vSphere tempat VM Linux via SSH. Jika menggunakan Windows bisa menggunakan putty, atau jika menggunakan Linux dan MacOS bisa memasukkan perintah ssh root@(IP vSphere host) di terminal
- Masuk ke direktori tempat penyimpanan VM dengan perintah “cd /vmfs/volumes/(nama-datastore)/(nama-vm)”
# cd /vmfs/volumes/datastore80.3/192.168.11.201-Ubuntu-Raihan/ # ls 192.168.11.201-Ubuntu-Raihan-6bc03b6b.hlog 192.168.11.201-Ubuntu-Raihan-aux.xml 192.168.11.201-Ubuntu-Raihan-ctk.vmdk 192.168.11.201-Ubuntu-Raihan-flat.vmdk 192.168.11.201-Ubuntu-Raihan.nvram 192.168.11.201-Ubuntu-Raihan.vmdk 192.168.11.201-Ubuntu-Raihan.vmsd 192.168.11.201-Ubuntu-Raihan.vmx 192.168.11.201-Ubuntu-Raihan.vmxf vmware-65.log vmware-66.log vmware-67.log vmware-68.log vmware-69.log vmware-70.log vmware.log vmx-192.168.11.201-Ubuntu-Raihan-2651018093-1.vswp
- Yang perlu diperhatikan adalah file dengan ekstensi .vmdk (Abaikan file dengan nama …..-flat.vmdk)
- Disini saya akan provisioning file VMDK yang pertama. Sebagai informasi VMDK selanjutnya akan diberi nama dengan pola nama-vm_1.vmdk, nama-vm_2.vmdk dan seterusnya
- Selanjutnya adalah melakukan provisioning file VMDK dengan perintah “vmkfstools -K (nama-vm).vmdk”
# vmkfstools -K 192.168.11.201-Ubuntu-Raihan.vmdk vmfsDisk: 1, rdmDisk: 0, blockSize: 1048576 Hole Punching: 10% done.
- Tunggu sampai proses provisioning selesai
- Lalu cek kembali size VMDK pada datastore vSphere
- Terlihat bahwa size VMDK sudah sama ataupun mendekati dengan kapasitas yang ada di VM.
- Terakhir, nyalakan kembali VM Linux lalu hapus file zero blocks yang tadi sudah digenerate
# cd / # rm zero