> For the complete documentation index, see [llms.txt](https://docs.platform9.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.platform9.com/private-cloud-director/storage/block-storage/volume-provisioning-thin-vs-thick.md).

# Volume Provisioning: Thin vs. Thick

<code class="expression">space.vars.product\_name</code> supports two volume provisioning modes for block storage: **thin provisioning** and **thick provisioning**. The mode is determined by the storage driver and can be controlled through Volume Type extra-specs.

## How Provisioning Modes Work

### Thick Provisioning

With thick provisioning, the entire requested volume capacity is reserved on the storage backend at creation time. A 100 GiB volume immediately occupies 100 GiB of physical storage, regardless of how much data the volume actually holds.

**When to use thick provisioning:**

* Workloads that require predictable I/O performance with no first-write overhead.
* Environments where strict capacity accounting is required (for example, financial or compliance-sensitive deployments).
* Backends where you want to guarantee that physical space will always be available for the volume.

### Thin Provisioning

With thin provisioning, the Persistent Storage Service creates the logical volume but allocates physical storage only as data is written. A 100 GiB thin-provisioned volume may initially occupy only a few megabytes of physical capacity.

Thin provisioning enables **over-allocation**: the sum of all logical volume sizes can exceed the total physical capacity of the backend pool. This is useful for environments where volumes are sparsely populated (for example, development or test workloads), but it requires careful monitoring to avoid running out of physical space.

**When to use thin provisioning:**

* Environments where storage efficiency matters and volumes are not fully written.
* Test or development clusters where flexibility is more important than guaranteed space.
* Storage backends that natively default to thin (for example, Ceph RBD, Pure Storage).

{% hint style="warning" %}
**Over-allocation risk**

When thin provisioning is in use, it is possible for the total logical capacity of volumes to exceed available physical storage. If the backend pool runs out of physical space, writes to thin-provisioned volumes will fail. Monitor physical pool utilization and set alerts at the storage backend level — logical volume sizes alone do not reflect actual consumption.
{% endhint %}

## Driver and Backend Dependency

Not all storage drivers support both provisioning modes. Some drivers default to thin provisioning and do not expose a configurable option; others support both modes and expose a selection mechanism through Volume Type extra-specs or driver-level configuration.

The Persistent Storage Service relies on drivers to report accurate capacity data. The `max_over_subscription_ratio` and `reserved_percentage` settings in the backend configuration influence how the Persistent Storage Service evaluates available space, but their effectiveness depends on accurate driver reporting.

Refer to your storage vendor's driver documentation for the authoritative list of capabilities supported for your backend.

## Driver Support Summary

The following table summarizes thin and thick provisioning support for commonly used drivers. Consult the vendor's driver documentation for full details and any version-specific constraints.

| Driver              | Provisioning Support | Notes                                                                                       |
| ------------------- | -------------------- | ------------------------------------------------------------------------------------------- |
| Ceph RBD            | Thin (default)       | Thin provisioning is the native RBD behavior; thick is not typically available.             |
| Dell PowerFlex      | Both (configurable)  | Controlled via Volume Type extra-specs.                                                     |
| Dell PowerMax       | Both (configurable)  | Controlled via Volume Type extra-specs.                                                     |
| HPE Alletra/Primera | Both (configurable)  | Selected via Volume Type extra-specs.                                                       |
| LVM                 | Both (configurable)  | Thin provisioning is enabled by setting `lvm_type=thin` in the driver configuration.        |
| NetApp Unified      | Both (configurable)  | Controlled via Volume Type extra-specs.                                                     |
| NFS                 | Thin (default)       | Thin behavior is controlled by the `nfs_sparsed_volumes` driver option (`True` by default). |
| Pure Storage        | Thin (default)       | Thin provisioning is the native behavior; thick is not typically available.                 |

## Configuring Provisioning Type via Volume Types

For drivers that support both modes, the provisioning type is specified in the Volume Type extra-specs. Volume Types are created and managed in the <code class="expression">space.vars.product\_name</code> UI under **Storage > Volume Types**, or via the `pcdctl` CLI.

### Setting extra-specs

Add the following extra-spec key to the Volume Type:

| Extra-spec key      | Value   | Effect                       |
| ------------------- | ------- | ---------------------------- |
| `provisioning:type` | `thin`  | Requests thin provisioning.  |
| `provisioning:type` | `thick` | Requests thick provisioning. |

**Example: creating Volume Types with the Pcdctl CLI**

```bash
# Thin-provisioned Volume Type backed by an SSD pool
pcdctl volume type create SSD-Thin \
  --property volume_backend_name=ssd_pool \
  --property provisioning:type=thin

# Thick-provisioned Volume Type backed by an HDD pool
pcdctl volume type create HDD-Thick \
  --property volume_backend_name=hdd_pool \
  --property provisioning:type=thick
```

### LVM-specific configuration

For the LVM driver, thin provisioning is enabled at the driver level rather than via a Volume Type extra-spec:

```ini
# In cinder.conf, under the relevant [backend] section
lvm_type = thin
```

Refer to the [LVM driver documentation](https://docs.openstack.org/cinder/latest/configuration/block-storage/drivers/lvm-volume-driver.html) for full configuration details.

## Monitoring Guidance

Thin provisioning introduces a gap between logical volume sizes and physical storage consumption. The Persistent Storage Service does not expose physical pool utilization directly. Use storage-backend-specific tooling to monitor physical usage:

* Configure capacity alerts on the backend storage system or management layer.
* Track pool utilization alongside logical allocation to detect over-subscription before it causes write failures.
* When `max_over_subscription_ratio` is tuned to allow higher over-subscription, more frequent monitoring is warranted.

## Related Pages

* [Supported Storage Drivers](/private-cloud-director/storage/block-storage/supported-storage-drivers.md)
* [Block Storage High Availability](/private-cloud-director/storage/block-storage/block-storage-high-availability.md)
* [Certified Block Storage Drivers & Configurations](/private-cloud-director/storage/block-storage/volume-backend-configuration-examples.md)
* [Volume](/private-cloud-director/storage/volume.md)


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.platform9.com/private-cloud-director/storage/block-storage/volume-provisioning-thin-vs-thick.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
