// Module included in the following assemblies:
//
// * storage/understanding-persistent-storage.adoc
//* microshift_storage/understanding-persistent-storage-microshift.adoc

:_mod-docs-content-type: CONCEPT
[id="pvc-storage-class_{context}"]
= Storage classes

[role="_abstract"]
To request specific storage capabilities, define the `StorageClass` name in the `storageClassName` attribute of your `PersistentVolumeClaim` (PVC). This setting ensures the claim binds only to matching `PersistentVolumes` (PVs) or triggers dynamic provisioning if the cluster administrator has configured on-demand creation.

ifndef::microshift,openshift-rosa,openshift-rosa-hcp[]
[IMPORTANT]
====
The Cluster Storage Operator might install a default storage class depending on the platform in use. This storage class is owned and controlled by the Operator. The storage class cannot be deleted or modified beyond defining annotations and labels. If different behavior is desired, you must define a custom storage class.
====
endif::microshift,openshift-rosa,openshift-rosa-hcp[]

ifdef::openshift-rosa,openshift-rosa-hcp[]
[IMPORTANT]
====
The Cluster Storage Operator installs a default storage class. This storage class is owned and controlled by the Operator. The storage class cannot be deleted or modified beyond defining annotations and labels. If different behavior is desired, you must define a custom storage class.
====
endif::openshift-rosa,openshift-rosa-hcp[]

The cluster administrator can also set a default storage class for all PVCs. When you configure a default storage class, the PVC must explicitly ask for `StorageClass` or `storageClassName` annotations set to `""` to be bound to a PV without a storage class.

[NOTE]
====
If more than one storage class is marked as default, a PVC can only be created if the `storageClassName` is explicitly specified. Therefore, only set one storage class as the default.
====
