A volume set is a collection of storage volumes, which are used by a stateful workload. A volume set provides a unique volume for each replica in the linked workload. Each volume set can be used by at most one stateful workload.
Control Plane does not allow individual volumes in a set to be shared by multiple workload replicas, nor does Control Plane replicate data between volumes in a volume set. If you require data sharing or replication, this must be accomplished at the application level (e.g. by using WAL streaming between two Postgresql instances)
expandVolume
command.deleteVolume
command, or when the volume set itself is deleted.Each volume set has a single, immutable file system.
Currently supported file systems are:
Each volume set has a single, immutable, performance class.
The performance class determines:
Volume performance varies widely by cloud service provider.
Name: general-purpose-ssd
Minimum Capacity: 10Gb
Maximum Capacity: 16384Gb
Service Provider | Max Throughput | Max IOPS |
---|---|---|
AWS | 750 MB/s | 3000 |
GCP | 1200 MB/s | 800002 |
Azure | 750 MB/s | 6000 |
Name: premium-low-latency-ssd
Minimum Capacity: 10Gb
Maximum Capacity: 16384Gb
Service Provider | Max Throughput | Max IOPS 1 |
---|---|---|
AWS | 1000 MB/s | 5/GB |
GCP | 1200 MB/s | 1000002 |
Azure | 900 MB/s | 20000 |
Volume sets support imperative operations on individual volumes and snapshots. To issue a command, send a POST
to the volume set's -command
endpoint.
e.g. POST https://api.cpln.io/org/my-org/gvc/my-gvc/volumeset/my-volume-set/-command
. These commands can also be created using the Control Plane console at https://console.cpln.io
Volumes can be expanded on-demand by issuing a expandVolume
command. If the volume set is in-use by a workload, the corresponding workload replica will be restarted.
Spec:
For example:
expandVolume Commandcopy{"type": "expandVolume","spec": {"location": "aws-sa-east-1","volumeIndex": 0,"newStorageCapacity": 11}}
To delete a volume, issue a deleteVolume
command.
This command deletes the specified volume's storage device. Note: the metadata for the volume at the specified index will not be removed from the volume set. Only your data will be deleted.
If the volume set is in-use by a workload, a new storage device may be immediately created. e.g. if the volume set is in-use by a workload with one replica, and you delete the volume at index 0, Control Plane will:
For example:
deleteVolume Commandcopy{"type": "deleteVolume","spec": {"location": "aws-sa-east-1","volumeIndex": 0}}
Each volume in a set has its own list of snapshots. You manipulate snapshots by issuing commands to the volume set.
Take a snapshot for a given volume (specified by location and volume index). snapshotName
must be unique for the target volume.
Spec:
For example:
createVolumeSnapshot Commandcopy{"type": "createVolumeSnapshot","spec": {"location": "aws-sa-east-1","volumeIndex": 0,"snapshotName": "snap-0","snapshotExpirationDate": "2025-01-01T00:00:00Z","tags": {"my-tag-key": "my-tag-value"}}}
Delete the specified snapshot. Spec:
For example:
deleteVolumeSnapshot Commandcopy{"type": "deleteVolumeSnapshot","spec": {"location": "aws-sa-east-1","volumeIndex": 0,"snapshotName": "snap-0"}}
Restore the specified volume to one of its snapshots. If this volume set is in-use by a workload, the corresponding workload replica will restart.
For example:
restoreVolume Commandcopy{"type": "restoreVolume","spec": {"location": "aws-sa-east-1","volumeIndex": 0,"snapshotName": "snap-0"}}
Volume sets are supported in BYOK locations as long as the following prerequisites are met:
The cluster must have a CSI-compatible storage driver installed.
You must create storage classes which use the CSI-compatible provisioner, with the following names:
general-purpose-ssd-ext4
general-purpose-ssd-xfs
premium-low-latency-ssd-ext4
premium-low-latency-ssd-xfs
general-purpose-ssd-ext4-command
general-purpose-ssd-xfs-command
premium-low-latency-ssd-ext4-command
premium-low-latency-ssd-xfs-command
The permissions below are used to define policies together with one or more of the four principal types:
Permission | Description | Implies |
---|---|---|
create | Create new volumesets | |
delete | Delete existing identities | |
edit | Modify existing identities | view |
exec | Execute commands | exec.restoreVolume, exec.createVolumeSnapshot, exec.expandVolume, exec.deleteVolume, exec.deleteVolumeSnapshot |
exec.createVolumeSnapshot | Create a snapshot of a volume | |
exec.deleteVolume | Delete a volume | |
exec.deleteVolumeSnapshot | Delete a volume snapshot | |
exec.expandVolume | Increase the storage capacity of a volume | |
exec.restoreVolume | Restore a volume to a snapshot | |
manage | Full access | create, delete, edit, exec, exec.createVolumeSnapshot, exec.deleteVolume, exec.deleteVolumeSnapshot, exec.expandVolume, exec.restoreVolume, manage, view |
view | Read-only access |
Displays the permissions granted to principals for the volume set.
To view the CLI documentation for Volume Sets, click here.
To view the schema documentation for Volume Sets, click here.
These values are per instance, not per volume. Performance may vary.
In general, IOPS capacity varies linearly with storage capacity. The values shown in this column are the maximum possible values, and are only achievable with large volume sizes.