mirror of
https://github.com/ceph/ceph-csi.git
synced 2024-12-18 02:50:30 +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 |
|
| `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** |
|
| `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 |
|
| `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
|
**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)
|
running pods. Refer to [Creating CSI configuration](../examples/README.md#creating-csi-configuration)
|
||||||
|
@ -29,9 +29,10 @@ parameters:
|
|||||||
# eg: pool: rbdpool
|
# eg: pool: rbdpool
|
||||||
pool: <rbd-pool-name>
|
pool: <rbd-pool-name>
|
||||||
|
|
||||||
# Set thickProvision to true if you want RBD images to be fully allocated on
|
# Deprecated: Set thickProvision to true if you want RBD images to be fully
|
||||||
# creation (thin provisioning is the default).
|
# allocated on creation (thin provisioning is the default).
|
||||||
thickProvision: "false"
|
# thickProvision: "false"
|
||||||
|
|
||||||
# (required) RBD image features, CSI creates image with image-format 2
|
# (required) RBD image features, CSI creates image with image-format 2
|
||||||
# CSI RBD currently supports `layering`, `journaling`, `exclusive-lock`
|
# CSI RBD currently supports `layering`, `journaling`, `exclusive-lock`
|
||||||
# features. If `journaling` is enabled, must enable `exclusive-lock` too.
|
# features. If `journaling` is enabled, must enable `exclusive-lock` too.
|
||||||
|
@ -1502,6 +1502,10 @@ func (cs *ControllerServer) ControllerExpandVolume(
|
|||||||
}, nil
|
}, 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
|
// isThickProvisionRequest returns true in case the request contains the
|
||||||
// `thickProvision` option set to `true`.
|
// `thickProvision` option set to `true`.
|
||||||
func isThickProvisionRequest(parameters map[string]string) bool {
|
func isThickProvisionRequest(parameters map[string]string) bool {
|
||||||
@ -1517,5 +1521,11 @@ func isThickProvisionRequest(parameters map[string]string) bool {
|
|||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if logThickProvisioningDeprecation {
|
||||||
|
log.WarningLogMsg("thick-provisioning is deprecated and will " +
|
||||||
|
"be removed in a future release")
|
||||||
|
logThickProvisioningDeprecation = false
|
||||||
|
}
|
||||||
|
|
||||||
return thickBool
|
return thickBool
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user