Skip to content

Thin Provisioning vs Thick Provisioning in VMware

Thin, thick lazy zeroed, or thick eager zeroed? Compare the three VMware disk formats, how each affects performance and capacity, and when to pick which.

SDSysadmin Desk October 4, 2026 7 min read
Diagram-style cover comparing a thin-provisioned VMDK that grows on demand against thick-provisioned disks that reserve full capacity up front

When you create a virtual disk in vSphere, VMware asks you to pick a format: Thin Provision, Thick Provision Lazy Zeroed, or Thick Provision Eager Zeroed. Most people accept the default and move on, then wonder months later why a datastore filled up faster than expected, or why one VM feels snappier than another with identical specs.

The three formats trade space efficiency against up-front allocation and a small first-write cost. None is universally “best.” Thin saves space and lets you over-provision. Thick reserves everything at creation. Eager zeroed goes a step further and wipes the disk clean before the VM ever touches it.

This breaks down what each format actually does on the datastore, where the performance differences come from, and how to choose — plus how to convert between them if you picked wrong.

How a VMDK consumes datastore space

A virtual disk is a VMDK file on a datastore. The provisioning format decides how much of that datastore the VMDK claims and when.

The three VMware disk formats at a glance

Thin Provision Allocates space on demand. A 100 GB disk with 20 GB written uses ~20 GB.
Thick Lazy Zeroed Reserves full size at creation. Blocks zeroed on first write.
Thick Eager Zeroed Reserves full size AND zeroes every block at creation.

The key difference is when space gets committed. A thin 100 GB disk on a fresh VM might occupy only a few gigabytes. The same disk as thick takes the full 100 GB on the datastore the moment you create it, even though the guest OS sees an empty drive either way.

Thin provisioning: pay as you grow

Thin is the space-efficient choice. The VMDK starts small and grows as the guest writes data, up to the disk’s maximum size. This lets you over-provision — assign more total disk to VMs than the datastore physically holds — on the bet that not every VM will fill its disk at once.

That’s powerful and a little dangerous. The upside is obvious: better utilization, less wasted capacity, and the ability to give VMs generous disk sizes without buying storage you don’t need yet. The downside is that over-provisioning means you can promise more than you have.

There’s a minor performance note too. As a thin disk grows into new blocks, vSphere has to allocate and zero them, which adds a small cost on those first writes. On modern flash storage it’s rarely noticeable, but on busy spinning disks or heavy sequential-write workloads it can show up.

Thick lazy zeroed: full reservation, zero on first write

Thick Lazy Zeroed reserves the disk’s entire size on the datastore at creation. The space is yours immediately, so you can’t be surprised later by another VM eating it. But the blocks aren’t wiped yet — whatever data was previously in those datastore blocks stays until the guest writes to them. On that first write, vSphere zeroes the block, then completes the write.

That first-write zeroing is a one-time, per-block cost. After a block has been written once, it behaves like any other. For most workloads the overhead is small and disappears as the disk gets used.

This is a common middle-ground default: you get guaranteed capacity without the longer creation time of eager zeroing.

Thick eager zeroed: everything zeroed up front

Thick Eager Zeroed reserves the full size and writes zeros across every block at creation. Nothing is left for the first-write path, so there’s no per-block penalty when the guest starts writing. The trade-off is creation time — zeroing a large disk takes a while and generates real I/O on the datastore while it happens.

Why bother? Two reasons:

  • Consistent low latency. Workloads that can’t tolerate even a small first-write hiccup benefit from having all the zeroing done before they run.
  • It’s required for some features. VMware Fault Tolerance and certain clustered/shared-disk configurations require eager zeroed disks.

How the formats compare

Datastore space at creation Thin: minimal · Lazy: full · Eager: full
Space grows over time Thin: yes · Lazy: no · Eager: no
First-write zeroing cost Thin: yes (on growth) · Lazy: yes · Eager: none
Creation time Thin: fast · Lazy: fast · Eager: slow (zeroes everything)
Over-provisioning possible Thin: yes · Lazy: no · Eager: no
Required for Fault Tolerance Thin: no · Lazy: no · Eager: yes

Converting between formats

Picked the wrong format? You’re not stuck with it.

  • Thin to thick (lazy zeroed): browse the datastore, right-click the VMDK, and choose Inflate. The VM should be powered off. This claims the full size on the datastore.
  • Change format during migration: a Storage vMotion lets you pick the destination format. Migrating to another datastore (or the same one, depending on setup) you can convert thin to thick or thick to thin as part of the move.
  • Thick to thin: the cleanest route is Storage vMotion, selecting the thin format on the destination. A plain inflate only goes toward thick.

Which one should you pick?

Match the format to the workload rather than defaulting blindly:

Choosing a provisioning format

  • General-purpose VMs where space efficiency matters: thin, with datastore alarms
  • Predictable workloads where you want guaranteed capacity: thick lazy zeroed
  • Latency-sensitive databases or anything needing steady write performance: thick eager zeroed
  • VMware Fault Tolerance or shared-disk clustering: thick eager zeroed (required)
  • Tight, well-monitored storage and you want maximum utilization: thin

The pragmatic default for a lot of environments is thin for general VMs — it uses space well and is easy to grow — paired with disciplined monitoring of real datastore usage. Reach for eager zeroed when a workload demands consistent latency or a feature requires it. Lazy zeroed sits in between when you want the capacity guarantee without the long creation time.

If you’re thinking about storage formats, you’re probably also thinking about how to protect what’s on them. Two reminders that pair well here: VMware snapshots are not backups, and you’ll still want a real plan to back up your ESXi virtual machines.

Wrapping up

VMware’s three disk formats are a trade between space and up-front work. Thin grows on demand and lets you over-provision, as long as you watch real datastore usage. Thick lazy zeroed reserves full capacity at creation and zeroes blocks on first write. Thick eager zeroed does all the zeroing up front for steady write latency, and it’s required for Fault Tolerance.

For everyday VMs, thin plus good monitoring is a solid default. Move to eager zeroed when latency or a feature forces the issue, and remember you can inflate or Storage vMotion your way out of a bad early choice. For more storage and platform guides, browse the virtualization guides.

Frequently asked questions

What's the difference between thin and thick provisioning in VMware?

A thin-provisioned disk only consumes datastore space as the guest writes data, so a 100 GB disk with 20 GB of data uses about 20 GB. A thick-provisioned disk reserves its full size on the datastore at creation, so a 100 GB disk takes 100 GB immediately whether or not the guest has written anything.

What's the difference between lazy zeroed and eager zeroed thick disks?

Both reserve full capacity up front. Thick lazy zeroed leaves old blocks on disk and zeroes each one the first time the guest writes to it, which adds a tiny first-write cost. Thick eager zeroed wipes the entire disk to zero at creation, so there's no first-write penalty but provisioning takes longer.

Is thin provisioning slower than thick?

On modern storage the gap is small. Thin disks pay a minor cost when they grow into new blocks, and eager zeroed thick avoids first-write zeroing entirely. For most workloads the difference is negligible; for latency-sensitive or clustered workloads like Fault Tolerance, eager zeroed is required or preferred.

Can I convert a thin disk to thick later?

Yes. You can inflate a thin disk to thick lazy zeroed from the datastore browser, or change the format during a Storage vMotion migration. Converting from thick back to thin is typically done with Storage vMotion choosing the thin format on the destination datastore.

What happens if a thin-provisioned datastore fills up?

If you over-provision and the combined thin disks try to grow past the actual datastore capacity, VMs that need to expand their disks pause with an out-of-space condition until you free space or add capacity. This is why thin provisioning needs active monitoring of real datastore usage, not just provisioned size.

Which provisioning type should I use by default?

For most general-purpose VMs, thin provisioning is a reasonable default because it uses space efficiently and is easy to monitor. Use thick eager zeroed for workloads that demand consistent low latency or require it, such as VMware Fault Tolerance and some clustered databases.

Sources & further reading

Official vendor documentation referenced while writing this guide.

SD

Sysadmin Desk

Infrastructure & Cloud

Hands-on guidance for infrastructure, virtualization, and containers — Hyper-V, VMware, Docker, and the day-to-day operations work that keeps environments running.

MCSA Guru provides independent, educational IT guidance. Microsoft, Windows, Windows Server, Microsoft 365, Exchange, and Microsoft Teams are trademarks of Microsoft Corporation; Docker is a trademark of Docker, Inc. MCSA Guru is not affiliated with or endorsed by Microsoft or Docker. Always test changes in a safe environment before applying them in production.

Related guides

Fixing something right now?

Jump straight into the guide library or search for the exact error or task you are dealing with.