---
id: "k8s-persistent-volume"
type: "component"
kind: "block-storage"
provider: "k8s"
category: "data"
aliases: "pv"
docs: "https://kubernetes.io/docs/concepts/storage/persistent-volumes/"
url: "https://localhost:3000/catalogue/components/k8s-persistent-volume"
---

# PersistentVolume

Piece of cluster storage with a lifecycle independent of any Pod, bound exclusively to one claim.

| | |
|---|---|
| Provider | [k8s](https://localhost:3000/catalogue?provider=k8s) |
| Kind | [Block storage volume](https://localhost:3000/catalogue/kinds/block-storage) |
| Category | Data |
| Official docs | [https://kubernetes.io/docs/concepts/storage/persistent-volumes/](https://kubernetes.io/docs/concepts/storage/persistent-volumes/) |
| Also known as | pv |

## Properties

| property | type | values | required | kind default | this component |
|---|---|---|---|---|---|
| `accessMode` | enum | `read-write-once`, `read-only-many`, `read-write-many`, `read-write-once-pod` | no | — | inherited |
| `encryptionAtRest` | boolean | — | no | — | inherited |
| `exclusiveBinding` | boolean | — | no | true | inherited |
| `iops` | integer | — | no | — | inherited |
| `managed` | boolean | — | no | false | **false** |
| `mediaType` | enum | `ssd`, `hdd` | no | — | inherited |
| `provisioning` | enum | `static`, `dynamic` | no | — | inherited |
| `reclaimPolicy` | enum | `retain`, `delete`, `recycle` | no | "retain" | inherited |
| `redundancy` | enum | `local`, `zonal`, `regional` | no | — | inherited |
| `sizeGib` | integer | — | no | — | inherited |
| `snapshots` | boolean | — | no | false | inherited |
| `volumeMode` | enum | `filesystem`, `block` | no | "filesystem" | inherited |

Bold values are the ones this component pins.

## Rules that apply · 0

No rule selects this kind or its category.

## Other products of the same kind · 28

- [Elastic Block Storage](https://localhost:3000/catalogue/components/alibaba-ebs.md) `alibaba-ebs` — alibabacloud
- [Amazon EBS](https://localhost:3000/catalogue/components/aws-ebs.md) `aws-ebs` — aws
- [EC2 instance store](https://localhost:3000/catalogue/components/aws-instance-store.md) `aws-instance-store` — aws
- [Azure Container Storage](https://localhost:3000/catalogue/components/azure-container-storage.md) `azure-container-storage` — azure
- [Azure Elastic SAN](https://localhost:3000/catalogue/components/azure-elastic-san.md) `azure-elastic-san` — azure
- [Azure Disk Storage](https://localhost:3000/catalogue/components/azure-managed-disk.md) `azure-managed-disk` — azure
- [Generic block storage volume](https://localhost:3000/catalogue/components/block-storage.md) `block-storage` — default
- [Block volume](https://localhost:3000/catalogue/components/block-volume.md) `block-volume` — default
- [Ceph RBD](https://localhost:3000/catalogue/components/ceph-rbd.md) `ceph-rbd` — default
- [Longhorn](https://localhost:3000/catalogue/components/longhorn.md) `longhorn` — default
- [OpenEBS](https://localhost:3000/catalogue/components/openebs.md) `openebs` — default
- [OpenZFS](https://localhost:3000/catalogue/components/openzfs.md) `openzfs` — default
- [Portworx](https://localhost:3000/catalogue/components/portworx.md) `portworx` — default
- [Volumes Block Storage](https://localhost:3000/catalogue/components/digitalocean-volumes.md) `digitalocean-volumes` — digitalocean
- [Hyperdisk](https://localhost:3000/catalogue/components/google-hyperdisk.md) `google-hyperdisk` — gcp
- [Local SSD](https://localhost:3000/catalogue/components/google-local-ssd.md) `google-local-ssd` — gcp
- [Persistent Disk](https://localhost:3000/catalogue/components/google-persistent-disk.md) `google-persistent-disk` — gcp
- [IBM Cloud Block Storage for VPC](https://localhost:3000/catalogue/components/ibm-block-storage.md) `ibm-block-storage` — ibm
- [Block Storage for Classic](https://localhost:3000/catalogue/components/ibm-block-storage-classic.md) `ibm-block-storage-classic` — ibm
- [IBM Storage Ceph as a Service](https://localhost:3000/catalogue/components/ibm-storage-ceph.md) `ibm-storage-ceph` — ibm
- [PersistentVolumeClaim](https://localhost:3000/catalogue/components/k8s-persistent-volume-claim.md) `k8s-persistent-volume-claim` — k8s
- [StorageClass](https://localhost:3000/catalogue/components/k8s-storage-class.md) `k8s-storage-class` — k8s
- [Volume](https://localhost:3000/catalogue/components/k8s-volume.md) `k8s-volume` — k8s
- [OCI Block Volume](https://localhost:3000/catalogue/components/oci-block-volume.md) `oci-block-volume` — oci
- [OCI Boot Volume](https://localhost:3000/catalogue/components/oci-boot-volume.md) `oci-boot-volume` — oci
- [OCI Local NVMe Storage](https://localhost:3000/catalogue/components/oci-local-nvme.md) `oci-local-nvme` — oci
- [OpenStack Cinder](https://localhost:3000/catalogue/components/openstack-cinder.md) `openstack-cinder` — openstack
- [Block Storage Unit (BSU)](https://localhost:3000/catalogue/components/outscale-bsu.md) `outscale-bsu` — outscale

## Use it in a design

```yaml
nodes:
  - { id: "k8s-persistent-volume", component: "k8s-persistent-volume" }
```

## Source (`component` YAML, verbatim)

```yaml
# yaml-language-server: $schema=../../schema/component.schema.json
# Kubernetes PersistentVolume: a piece of cluster storage with a lifecycle independent of any Pod,
# provisioned by an administrator or dynamically by a StorageClass. Per "Persistent Volumes"
# volumeMode defaults to Filesystem, a manually created PV defaults to the Retain reclaim policy
# while a dynamically provisioned one inherits Delete from its StorageClass, binding to a claim is
# one-to-one and exclusive, and access mode must be stated explicitly -- there is no default.
# Durability, encryption and redundancy come from the backing storage, so none of them are set.
schemaVersion: "1"
type: "component"
id: "k8s-persistent-volume"
kind: "block-storage"
provider: "k8s"
docs: "https://kubernetes.io/docs/concepts/storage/persistent-volumes/"
aliases: ["pv"]
defaults:
  managed: false
properties:
  volumeMode:
    type: "enum"
    values: ["filesystem", "block"]
    default: "filesystem"
  reclaimPolicy:
    type: "enum"
    values: ["retain", "delete", "recycle"]
    default: "retain"
  accessMode:
    type: "enum"
    values: ["read-write-once", "read-only-many", "read-write-many", "read-write-once-pod"]
  provisioning:
    type: "enum"
    values: ["static", "dynamic"]
  exclusiveBinding:
    type: "boolean"
    default: true
```

Human page: https://localhost:3000/catalogue/components/k8s-persistent-volume
