VMWARE THICK and THIN Disk
VMWARE THICK and THIN Disk
VMWARE THICK and THIN Disk
Thick Provision Lazy Zeroed: is a disk that takes all of its space at the time of its
creation, but this space may contain some old data on the physical media. This old
data is not erased or written over, so it needs to be “zeroed out” before new data can
be written to the blocks. This type of disk can be created more quickly, but its
performance will be lower for the first writes due to the increased IOPS (input/output
operations per second) for new blocks.
Thick Provision Eager Zeroed: is a disk that gets all of the required space still at
the time of its creation, and the space is wiped clean of any previous data on the
physical media. Creating eager zeroed disks takes longer, because zeroes are written
to the entire disk, but their performance is faster during the first writes. This sub-type
of thick-provisioned virtual disk supports clustering features, such as fault tolerance.
Thin provisioning helps to avoid wasted physical capacity and can save businesses on up-
front storage costs. However, thick provisioning has the benefit of less latency because all
storage is allocated at once when virtual machines are created.
This means that creating a 100GB virtual disk actually consumes 100GB of physical disk
space, which also means that the physical storage is unavailable for anything else, even if
no data has been written to the disk.
Thick Provisioning
Thick provisioning is a type of storage pre-allocation. With thick provisioning, the complete
amount of virtual disk storage capacity is pre-allocated on the physical storage when the
virtual disk is created. A thick-provisioned virtual disk consumes all the space allocated to it
in the datastore right from the start, so the space is unavailable for use by other virtual
machines.
A Lazy zeroed disk is a disk that takes all of its space at the time of its creation, but
this space may contain some old data on the physical media. This old data is not
erased or written over, so it needs to be "zeroed out" before new data can be written
to the blocks. This type of disk can be created more quickly, but its performance will
be lower for the first writes due to the increased IOPS (input/output operations per
second) for new blocks;
An Eager zeroed disk is a disk that gets all of the required space still at the time of
its creation, and the space is wiped clean of any previous data on the physical media.
Creating eager zeroed disks takes longer, because zeroes are written to the entire
disk, but their performance is faster during the first writes. This sub-type of thick-
provisioned virtual disk supports clustering features, such as fault tolerance.
For data security reasons, eager zeroing is more common than lazy zeroing with thick-
provisioned virtual disks. Why? When you delete a VMDK, the data on the datastore is not
totally erased; the blocks are simply marked as available, until the operating system
overwrites them. If you create an eager zeroed virtual disk on this datastore, the disk area
will be totally erased (i.e., zeroed), thus preventing anyone with bad intentions from being
able to recover the previous data – even if they use specialized third-party software.
Thin Provisioning
Thin-provisioned virtual disks are quick to create and useful for saving storage space. The
performance of a thin-provisioned disk is not higher than that of a lazy zeroed thick-
provisioned disk, because for both of these disk types, zeroes have to be written before
writing data to a new block. Note that when you delete your data from a thin-provisioned
virtual disk, the disk size is not reduced automatically. This is because the operating system
deletes only the indexes from the file table that refer to the file body in the file system; it
marks the blocks that belonged to "deleted" files as free and accessible for new data to be
written onto. This is why we see file removal as instant. If it were a full deletion, where
zeroes were written over the blocks that the deleted files occupied, it would take about the
same amount of time as copying the files in question. See the simplified illustration below.
Issues That May Occur When Using Thin-Provisioned Virtual Disks
Using thin-provisioned virtual disks is not always smooth. There are some issues that you
should be aware of and prepared to deal with.
Download our free White Paper: "How to Calculate Recovery Time Objective and
Cut Downtime Costs"
Let’s consider an example that renders the virtual machines unusable. For example, we have
a 20GB datastore with three virtual machines running on it. Each virtual machine has a thin-
provisioned virtual disk set with a maximum size of 10 GB. (This practice is called
"overprovisioning" – we assign virtual disks more space than they can physically take up.
This is done often, as it allows you to scale the system by adding more physical storage as
you need it.) The file size of each virtual disk will expand as data is added, until there is no
free space left on the datastore. The situation becomes critical when there is only 1GB of
free space left on the datastore, as when, for example, VM1 occupies 8 GB, VM2 occupies 7
GB, and VM3 - 4 GB.
Regular methods of file deletion within virtual machines will not help shrink the thin-
provisioned virtual disks. If more than 1 GB of new data is written to any of these virtual
machines, all three of them will fail, and you will need to migrate one or more of the virtual
machines to another datastore to restore their running states.
How to Reduce the Size of Thin-Provisioned Virtual Disk After Deleting Files
To be able to reduce the VMDK file size of your thin-provisioned virtual disks, you need to
know how to zero the blocks that the data you deleted previously occupied. Let’s find out
how to do that.
NOTE: Disk shrinking operations are only possible if the virtual machines do not contain
snapshots. Also, please be attentive and execute commands at your own responsibility.
Always back up all of your important data before carrying out any disk operations. To back
up your VMware and Hyper-V virtual machines, use NAKIVO Backup & Replication.
Shrinking Thin-Provisioned VMware Disks in Linux
Let’s consider an example: we have a 10,266,496 KB (10GB) VMDK file (we learned about
its size by going to the directory on the datastore where our virtual machine is located) and
want to shrink the virtual disk on which the guest Linux OS is installed. We can try to delete
unnecessary files on this virtual disk. However, Linux does not automatically zero blocks
after deleting files; you will have to do this yourself. You can do this by using the dd (data
duplicator) utility for copying and converting data. This tool is available on all Linux systems.
NOTE: Before running the dd utility, it is necessary to make sure the datastore has enough
capacity to use it (e.g., for ESXi server, you can check the storage capacity in the storage
section of the vSphere client – go to Configuration >> Storage).
Let’s use the dd utility.
1. First, we check the free space on a guest Linux virtual machine by using the df -
h command:
root@test-virtual-machine:/# df -h
Filesystem Size Used Avail Use% Mounted on udev 469M 0 469M 0% /dev tmpfs
99M 6,3M 92M 7% /run /dev/sda7 17G 8,8G 6,4G 58% / tmpfs 491M 116K 491M
1% /dev/shm tmpfs 5,0M 4,0K 5,0M 1% /run/lock tmpfs 491M 0 491M 0%
/sys/fs/cgroup /dev/sda1 945M 121M 760M 14% /boot /dev/sda6 3,7G 13M 3,5G
1% /var/log tmpfs 99M 36K 99M 1% /run/user/1000
We can see from this output that the / (root) partition contains 8.8 GB of files.
2. Let’s delete a few gigabytes of unnecessary files in the root partition. This is what
we see in the console, if we run the df -h / command:
Filesystem Size Used Avail Use% Mounted on /dev/sda7 17G 4,7G 11G 31% /
Thus, our root partition now contains 4.7 GB of files. However, going to the
directory where our VMDK file is located, we can see that its size is still
10,266,496 KB (10 GB).
3. Now we are going to fill the free space with zeroes (in our case, we’ll fill 10 GB out
of 11 GB available). First, we type cd followed by the name of the directory that
the partition that needs to be zeroed out is mounted to (in our case it is cd /,
because we want to navigate to the root partition). After that, we run the
following command, changing the variables to suit our needs:
In this command:
10240+0 records in 10240+0 records out 10737418240 bytes (10 GB) copied,
59,4348 s, 181 MB/s Command has been completed successfully.
So, now the size of our VMDK file is 11,321,856 KB (10.8 GB), meaning that it has
expanded. Also, if we run the df -h / command again, we will see the following:
Filesystem Size Used Avail Use% Mounted on /dev/sda7 17G 15G 569M 97% /
This means that almost the whole root partition (i.e., 97%) is occupied. This is
because we have filled most of the previously "available" space with zeroes. Now,
our thin-provisioned virtual disk is ready to be shrunk.
This is the output we see in our case (i.e., we see the list of available partitions):
/ /boot /var/log
Please disregard any warnings about disk space for the duration of shrink process.
Progress: 100 [===========>] Disk shrinking complete.
Now, the size of our shrinked VMDK file is 5,323,456 KB (that is, 5.08 GB – much
less than the 10.8 GB it was before).
NOTE: If your guest virtual machine is running on an ESXi server, after filling the blocks
with zeroes, you can follow these steps:
1. Power off the virtual machine, or disconnect the virtual disk you want to shrink.
2. Connect to the ESXi host with the SSH client.
3. Navigate to the Virtual Machine Folder.
4. Verify disk usage with du -h.
5. Run vmkfstools -K test-virtual-machine.vmdk.
6. Verify disk usage with du -h once again.
NAKIVO Backup & Replication Free Edition – the #1 free data protection solution that can be
installed on both Linux and Windows.
Shrinking Thin-Provisioned VMware Disks in Windows
Like Linux, Windows does not automatically zero blocks after deleting files. To be able to
zero the free space of the target disks on your Windows virtual machine, you need to
download SDelete – a free utility from the Microsoft’s Sysinternals Suite – and unzip the files
from the downloaded archive to c:\program files\sdelete.
Then follow these steps:
1. Run cmd.
2. Go to the directory where SDelete is located. In our case, it is: cd c:\program files\
sdelete
3. For each partition in the console, use the sdelete -z command. This is what we
have in our case:
sdelete -z c: sdelete -z d:
These commands will zero out any free space on your thin-provisioned disk by
filling in any unused space on the specified partitions.
Wait a couple of minutes until the process is finished. Your VMDK file will expand
to its maximum size during the process.
4. Make sure VMware Tools are installed on your Windows virtual machine. By
default, VMware Tools are installed to c:\program files\vmware\vmware tools\.
Navigate to this directory by typing: cd c:\program files\vmware\vmware tools\.
5. To view the available disk partitions, type:vmwaretoolboxcmd disk list
6. Shrink the disk partitions that you need. In our case, we ran the commands:
You can use this method for virtual machines that are running on VMware ESXi or VMware
Workstation.
Designed for businesses of all sizes, NAKIVO Backup & Replication offers complete data
protection for all of your production workloads, including VMware vSphere Backup, Hyper-V
Backup, Microsoft 365 Backup and more. Get the Free Trial now!
6. Click OK to finish.
If there are no datastore clusters in your vSphere environment, follow these steps to create
and set up a new datastore cluster:
In this blog post, we have considered the types of virtual disks and weighed the advantages
and disadvantages of each in order to better understand the differences between thick and
thin provisioning. Eager zeroed thick-provisioned disks are the best for performance and
security, but require enough free storage space and take a lot of time to be created. Lazy
zeroed thick-provision disks are good for their short creation times, but they do not provide
as much speed as eager zeroed disks do, and are less secure. Thin-provisioned disks are the
best choice to save datastore space at the moment of disk creation.
You can create a virtual disk with a greater maximum size than the physical space you have
available (“overprovisioning”) and add more physical storage in the future, but remember
that if the physical disk space fills up and the thin-provisioned disk cannot grow to
accommodate more data, your virtual machines will become unusable – so don’t forget to
keep an eye on the amount of free space. We also went through methods of shrinking thin-
provisioned VMware virtual disks, in case you prefer not to add more storage and need to
reduce the space taken.
Convert thick disk provisioning to thin on VMware ESXi with the options:
1. VMware converter
2. VMware vCenter (vMotion)
3. VMware command line (this article)
If you do have vCenter configured, it’s best to move a VM with VMotion and select the virtual
disk format Thin Provision in the wizard. You can use VMware converter or command line if
you don’t have vCenter, you only have one ESXi host, or don’t want to spend a license to get
more features.
Convert thick provisioned to thin with vmkfstools in ESXi Shell (command line)
In this step by step guide, you will learn how to convert a thick provisioned lazy zeroed disk
to thin on VMware ESXi 6.7. The steps are the same for other ESXi versions. You will use the
vmkfstools command.
The vmkfstools command offers the ability to clone virtual machine content and also convert
from one virtual machine disk (.vmdk) format into another.
Read the VMware documentation about cloning and converting virtual machine disks with
vmkfstools.
Shut down the VM that you want to convert if you did not do that already.
Virtual machine disk files are locked while in-use by a running virtual machine.
Step 3. Enable SSH on VMware ESXi host
Enable SSH via the GUI. Expand Host and click on Manage. Click the tab Services and find
the service name TSM-SSH. Click on Start.
WARNING:
All commands run on the ESXi shell are logged and may be included in
support bundles. Do not provide passwords directly on the command line.
Most tools can prompt for secrets or accept them from standard input.
Change to the directory of the VM. In this example, it’s the file server FS01-2016. Run the
command cd FS01-2016.
[root@localhost:/vmfs/volumes/5e88aaf7-7ab335e2-4adc-1c697a0f86bd] cd FS01-2016
[root@localhost:/vmfs/volumes/5e88aaf7-7ab335e2-4adc-1c697a0f86bd/FS01-2016]
Copy
List the files in the directory and verify that two files are created: FS01-2016.thin-
flat.vmdk and FS01-2016.thin.vmdk.
[root@localhost:/vmfs/volumes/5e88aaf7-7ab335e2-4adc-1c697a0f86bd/FS01-2016] ls -lh
total 72898560
-rw------- 1 root root 60.0G Jan 5 22:04 FS01-2016-flat.vmdk
-rw------- 1 root root 60.0G Jan 5 22:07 FS01-2016-thin-flat.vmdk
-rw------- 1 root root 504 Jan 5 22:07 FS01-2016-thin.vmdk
-rw------- 1 root root 264.5K Jan 5 22:04 FS01-2016.nvram
-rw------- 1 root root 450 Jan 5 21:58 FS01-2016.vmdk
-rw-r--r-- 1 root root 0 Jan 5 21:58 FS01-2016.vmsd
-rwxr-xr-x 1 root root 3.2K Jan 5 22:04 FS01-2016.vmx
-rw-r--r-- 1 root root 226.5K Jan 5 22:04 vmware.log
Copy
Click Yes.
Step 10. Register VM in ESXi
Click on Create / Register VM.
Click on Next.
Click Finish.
Conclusion
In this article, you learned how to convert thick provisioned disk to thin on VMware ESXi.
Check the disk type before you start to convert from thick to thin disk in the command line
interface. Verify the conversion at the end and start up the system to make sure all is
working.