mirror of
https://github.com/ceph/ceph-csi.git
synced 2024-11-17 20:00:23 +00:00
rbd: note that thick-provisioning is deprecated
Thick-provisioning was introduced to make accounting of assigned space for volumes easier. When thick-provisioned volumes are the only consumer of the Ceph cluster, this works fine. However, it is unlikely that this is the case. Instead, accounting of the requested (thin-provisioned) size of volumes is much more practical as different types of volumes can be tracked. OpenShift already provides cluster-wide quotas, which can combine accounting of requested volumes by grouping different StorageClasses. In addition to the difficult practise of allowing only thick-provisioned RBD backed volumes, the performance makes thick-provisioning troublesome. As volumes need to be completely allocated, data needs to be written to the volume. This can take a long time, depending on the size of the volume. Provisioning, cloning and snapshotting becomes very much noticeable, and because of the additional time consumption, more prone to failures. Signed-off-by: Niels de Vos <ndevos@redhat.com>
This commit is contained in:
parent
0838845c6a
commit
b132696e54
@ -64,7 +64,7 @@ make image-cephcsi
|
||||
| `mounter` | no | if set to `rbd-nbd`, use `rbd-nbd` on nodes that have `rbd-nbd` and `nbd` kernel modules to map rbd images |
|
||||
| `encrypted` | no | disabled by default, use `"true"` to enable LUKS encryption on PVC and `"false"` to disable it. **Do not change for existing storageclasses** |
|
||||
| `encryptionKMSID` | no | required if encryption is enabled and a kms is used to store passphrases |
|
||||
| `thickProvision` | no | if set to `"true"`, newly created RBD images will be completely allocated by writing zeros to it |
|
||||
| `thickProvision` | no | if set to `"true"`, newly created RBD images will be completely allocated by writing zeros to it (**DEPRECATED**: recommended alternative solution is to use accounting/quotas for created volumes) |
|
||||
|
||||
**NOTE:** An accompanying CSI configuration file, needs to be provided to the
|
||||
running pods. Refer to [Creating CSI configuration](../examples/README.md#creating-csi-configuration)
|
||||
|
@ -29,9 +29,10 @@ parameters:
|
||||
# eg: pool: rbdpool
|
||||
pool: <rbd-pool-name>
|
||||
|
||||
# Set thickProvision to true if you want RBD images to be fully allocated on
|
||||
# creation (thin provisioning is the default).
|
||||
thickProvision: "false"
|
||||
# Deprecated: Set thickProvision to true if you want RBD images to be fully
|
||||
# allocated on creation (thin provisioning is the default).
|
||||
# thickProvision: "false"
|
||||
|
||||
# (required) RBD image features, CSI creates image with image-format 2
|
||||
# CSI RBD currently supports `layering`, `journaling`, `exclusive-lock`
|
||||
# features. If `journaling` is enabled, must enable `exclusive-lock` too.
|
||||
|
@ -1502,6 +1502,10 @@ func (cs *ControllerServer) ControllerExpandVolume(
|
||||
}, nil
|
||||
}
|
||||
|
||||
// logThickProvisioningDeprecation makes sure the deprecation warning about
|
||||
// thick-provisining is logged only once.
|
||||
var logThickProvisioningDeprecation = true
|
||||
|
||||
// isThickProvisionRequest returns true in case the request contains the
|
||||
// `thickProvision` option set to `true`.
|
||||
func isThickProvisionRequest(parameters map[string]string) bool {
|
||||
@ -1517,5 +1521,11 @@ func isThickProvisionRequest(parameters map[string]string) bool {
|
||||
return false
|
||||
}
|
||||
|
||||
if logThickProvisioningDeprecation {
|
||||
log.WarningLogMsg("thick-provisioning is deprecated and will " +
|
||||
"be removed in a future release")
|
||||
logThickProvisioningDeprecation = false
|
||||
}
|
||||
|
||||
return thickBool
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user