Skip to content

Commit cb01c2c

Browse files
authored
Merge pull request #50146 from akalenyu/filesystem-outer-volume-size
Add a note about filesystem overhead for PVC size request
2 parents fdb06cf + 5917b08 commit cb01c2c

File tree

1 file changed

+30
-22
lines changed

1 file changed

+30
-22
lines changed

content/en/docs/concepts/storage/persistent-volumes.md

Lines changed: 30 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -830,17 +830,26 @@ the request is for storage. The same
830830
[resource model](https://git.k8s.io/design-proposals-archive/scheduling/resources.md)
831831
applies to both volumes and claims.
832832

833+
{{< note >}}
834+
For `Filesystem` volumes, the storage request refers to the "outer" volume size
835+
(i.e. the allocated size from the storage backend).
836+
This means that the writeable size may be slightly lower for providers that
837+
build a filesystem on top of a block device, due to filesystem overhead.
838+
This is especially visible with XFS, where many metadata features are enabled by default.
839+
{{< /note >}}
840+
833841
### Selector
834842

835843
Claims can specify a
836844
[label selector](/docs/concepts/overview/working-with-objects/labels/#label-selectors)
837-
to further filter the set of volumes. Only the volumes whose labels match the selector
838-
can be bound to the claim. The selector can consist of two fields:
845+
to further filter the set of volumes.
846+
Only the volumes whose labels match the selector can be bound to the claim.
847+
The selector can consist of two fields:
839848

840849
* `matchLabels` - the volume must have a label with this value
841850
* `matchExpressions` - a list of requirements made by specifying key, list of values,
842-
and operator that relates the key and values. Valid operators include In, NotIn,
843-
Exists, and DoesNotExist.
851+
and operator that relates the key and values.
852+
Valid operators include `In`, `NotIn`, `Exists`, and `DoesNotExist`.
844853

845854
All of the requirements, from both `matchLabels` and `matchExpressions`, are
846855
ANDed together – they must all be satisfied in order to match.
@@ -850,31 +859,30 @@ ANDed together – they must all be satisfied in order to match.
850859
A claim can request a particular class by specifying the name of a
851860
[StorageClass](/docs/concepts/storage/storage-classes/)
852861
using the attribute `storageClassName`.
853-
Only PVs of the requested class, ones with the same `storageClassName` as the PVC, can
854-
be bound to the PVC.
862+
Only PVs of the requested class, ones with the same `storageClassName` as the PVC,
863+
can be bound to the PVC.
855864

856865
PVCs don't necessarily have to request a class. A PVC with its `storageClassName` set
857866
equal to `""` is always interpreted to be requesting a PV with no class, so it
858-
can only be bound to PVs with no class (no annotation or one set equal to
859-
`""`). A PVC with no `storageClassName` is not quite the same and is treated differently
867+
can only be bound to PVs with no class (no annotation or one set equal to `""`).
868+
A PVC with no `storageClassName` is not quite the same and is treated differently
860869
by the cluster, depending on whether the
861870
[`DefaultStorageClass` admission plugin](/docs/reference/access-authn-authz/admission-controllers/#defaultstorageclass)
862871
is turned on.
863872

864-
* If the admission plugin is turned on, the administrator may specify a
865-
default StorageClass. All PVCs that have no `storageClassName` can be bound only to
866-
PVs of that default. Specifying a default StorageClass is done by setting the
867-
annotation `storageclass.kubernetes.io/is-default-class` equal to `true` in
868-
a StorageClass object. If the administrator does not specify a default, the
869-
cluster responds to PVC creation as if the admission plugin were turned off. If more than one
870-
default StorageClass is specified, the newest default is used when the
871-
PVC is dynamically provisioned.
872-
* If the admission plugin is turned off, there is no notion of a default
873-
StorageClass. All PVCs that have `storageClassName` set to `""` can be
874-
bound only to PVs that have `storageClassName` also set to `""`.
875-
However, PVCs with missing `storageClassName` can be updated later once
876-
default StorageClass becomes available. If the PVC gets updated it will no
877-
longer bind to PVs that have `storageClassName` also set to `""`.
873+
* If the admission plugin is turned on, the administrator may specify a default StorageClass.
874+
All PVCs that have no `storageClassName` can be bound only to PVs of that default.
875+
Specifying a default StorageClass is done by setting the annotation
876+
`storageclass.kubernetes.io/is-default-class` equal to `true` in a StorageClass object.
877+
If the administrator does not specify a default, the cluster responds to PVC creation
878+
as if the admission plugin were turned off.
879+
If more than one default StorageClass is specified, the newest default is used when
880+
the PVC is dynamically provisioned.
881+
* If the admission plugin is turned off, there is no notion of a default StorageClass.
882+
All PVCs that have `storageClassName` set to `""` can be bound only to PVs
883+
that have `storageClassName` also set to `""`.
884+
However, PVCs with missing `storageClassName` can be updated later once default StorageClass becomes available.
885+
If the PVC gets updated it will no longer bind to PVs that have `storageClassName` also set to `""`.
878886

879887
See [retroactive default StorageClass assignment](#retroactive-default-storageclass-assignment) for more details.
880888

0 commit comments

Comments
 (0)