-
Notifications
You must be signed in to change notification settings - Fork 36
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Adding QoS examples for Cinder Volumes and in particular NetApp ONTAP (…
…#622) * Adding QoS examples for Cinder Volumes and in particular NetApp ONTAP The following documentation had warning notes updated: openstack-cinder-lvmisci.md openstack-cinder-netapp-container.md openstack-cinder-netapp-worker.md openstack-cinder-volume-provisioning-specs.md openstack-cinder-volume-qos-policies.md openstack-cinder-volume-type-specs.md * newline fix * extra line fix * volume type specs edit * Add link to current NetApp ONTAP doc with QoS explanations
- Loading branch information
Showing
8 changed files
with
157 additions
and
50 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,12 @@ | ||
# Set Volume Type Provisioning Specifications | ||
|
||
*Before* creating a volume within any volume type, the provisioning specifications must be set. | ||
|
||
## Minimum and Maximum volume size | ||
|
||
These specifications are set in the volume type. The following commands constrain the `lvmdriver-1` volume type to a size between 10 GB and 2 TB. | ||
|
||
``` shell | ||
root@openstack-node-0:~# kubectl --namespace openstack exec -ti openstack-admin-client -- openstack volume type set --property provisioning:min_vol_size=10 6af6ade2-53ca-4260-8b79-1ba2f208c91d | ||
root@openstack-node-0:~# kubectl --namespace openstack exec -ti openstack-admin-client -- openstack volume type set --property provisioning:max_vol_size=2048 6af6ade2-53ca-4260-8b79-1ba2f208c91d | ||
``` |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,109 @@ | ||
# Volume QoS Policies | ||
|
||
## LVM | ||
|
||
|
||
### Example QoS policy for LVM driver volume type | ||
|
||
In order to apply a QoS policy to the `lvmdriver-1` volume type, you must first create the QoS policy. | ||
|
||
``` shell | ||
root@openstack-node-0:~# kubectl --namespace openstack exec -ti openstack-admin-client -- openstack volume qos create --consumer "both" --property "read_iops_sec_per_gb=1" --property "write_iops_sec_per_gb=1" lvmdriver-1-iops | ||
+------------+-----------------------------------------------------+ | ||
| Field | Value | | ||
+------------+-----------------------------------------------------+ | ||
| consumer | both | | ||
| id | b35fdf9c-d5bd-40f9-ae3a-8605c246ef2e | | ||
| name | lvmdriver-1-iops | | ||
| properties | read_iops_sec_per_gb='1', write_iops_sec_per_gb='1' | | ||
+------------+-----------------------------------------------------+ | ||
``` | ||
|
||
Once you have created the QoS policy, apply it to the `lvmdriver-1` volume type. | ||
The command will utilize the `QOS_ID` and `VOLUME_TYPE_ID`. | ||
|
||
``` shell | ||
root@openstack-node-0:~# kubectl --namespace openstack exec -ti openstack-admin-client -- openstack volume qos associate b35fdf9c-d5bd-40f9-ae3a-8605c246ef2e 6af6ade2-53ca-4260-8b79-1ba2f208c91d | ||
``` | ||
|
||
## NetAPP ONTAP | ||
|
||
The most recent releases of the ONTAP driver (OpenStack Train and higher) allow QoS policies to be set per volume at the Cinder volume type rather than trying to utilize a QoS policy created on a target NetApp device. For a more detailed explanation, consult [NetApp Cinder QoS Concepts](https://netapp-openstack-dev.github.io/openstack-docs/train/cinder/key_concepts/section_cinder-key-concepts.html#qos-spec) | ||
|
||
### Example QoS policy for NetApp ONTAP volume type | ||
|
||
In order to apply a QoS policy to the `netapp-1` volume type, you must first create the QoS policy. | ||
|
||
``` shell | ||
root@openstack-node-0:~# kubectl --namespace openstack exec -ti openstack-admin-client -- openstack volume qos create --consumer "back-end" --property "peakIOPSperGiB=8" --property "expectedIOPSperGiB=7" netapp-qos | ||
+------------+--------------------------------------------+ | ||
| Field | Value | | ||
+------------+--------------------------------------------+ | ||
| consumer | back-end | | ||
| id | 9435160f-0e4a-4486-88b0-d6beb022732a | | ||
| name | netapp-qos | | ||
| properties | expectedIOPSperGiB='7', peakIOPSperGiB='8' | | ||
+------------+--------------------------------------------+ | ||
``` | ||
|
||
`expectedIOPSperGiB=7` was chosen because the target IOPSperGiB or expectedIOPSperGiB will be observed to be `5 IOPSperGiB` or `5,000 IOPS` when running FIO tests. Likewise, the `peakIOPSperGiB=8` was chosen because it is a value of `1` over the `expectedIOPSperGiB=7` and will effectively cap a burst in IOPs to an actual observerd value of `6 IOPSperGiB` or `6,000 IOPS`. | ||
|
||
``` shell | ||
root@openstack-node-0:~# kubectl --namespace openstack exec -ti openstack-admin-client -- openstack volume type show 1bdb5364-ed04-4bbe-8e41-9c5fae148c3d | ||
+--------------------+----------------------------------------+ | ||
| Field | Value | | ||
+--------------------+----------------------------------------+ | ||
| access_project_ids | | | ||
| description | None | | ||
| id | 1bdb5364-ed04-4bbe-8e41-9c5fae148c3d | | ||
| is_public | False | | ||
| name | netapp-1 | | ||
| properties | volume_backend_name='netapp-1-backend' | | ||
| qos_specs_id | None | | ||
+--------------------+----------------------------------------+ | ||
``` | ||
|
||
Once you have created the QoS policy, apply it to the `netapp-1` volume type. | ||
The command will utilize the `QOS_ID` and `VOLUME_TYPE_ID`. | ||
|
||
``` shell | ||
root@openstack-node-0:~# kubectl --namespace openstack exec -ti openstack-admin-client -- openstack volume qos associate 9435160f-0e4a-4486-88b0-d6beb022732a 1bdb5364-ed04-4bbe-8e41-9c5fae148c3d | ||
root@openstack-node-0:~# kubectl --namespace openstack exec -ti openstack-admin-client -- openstack volume type show 1bdb5364-ed04-4bbe-8e41-9c5fae148c3d | ||
+--------------------+----------------------------------------+ | ||
| Field | Value | | ||
+--------------------+----------------------------------------+ | ||
| access_project_ids | | | ||
| description | None | | ||
| id | 1bdb5364-ed04-4bbe-8e41-9c5fae148c3d | | ||
| is_public | False | | ||
| name | netapp-1 | | ||
| properties | volume_backend_name='netapp-1-backend' | | ||
| qos_specs_id | 9435160f-0e4a-4486-88b0-d6beb022732a | | ||
+--------------------+----------------------------------------+ | ||
``` | ||
|
||
## Disassociate a QoS policy from a volume type | ||
|
||
In order to delete a QoS policy, you must first disassociate it from any volume types that it has been associated with. | ||
|
||
``` shell | ||
root@openstack-node-0:~# kubectl --namespace openstack exec -ti openstack-admin-client -- openstack volume qos disassociate --volume-type 1bdb5364-ed04-4bbe-8e41-9c5fae148c3d 9435160f-0e4a-4486-88b0-d6beb022732a | ||
root@openstack-node-0:~# kubectl --namespace openstack exec -ti openstack-admin-client -- openstack volume type show 1bdb5364-ed04-4bbe-8e41-9c5fae148c3d | ||
+--------------------+----------------------------------------+ | ||
| Field | Value | | ||
+--------------------+----------------------------------------+ | ||
| access_project_ids | | | ||
| description | None | | ||
| id | 1bdb5364-ed04-4bbe-8e41-9c5fae148c3d | | ||
| is_public | False | | ||
| name | netapp-1 | | ||
| properties | volume_backend_name='netapp-1-backend' | | ||
| qos_specs_id | None | | ||
+--------------------+----------------------------------------+ | ||
``` | ||
|
||
## Delete a QoS policy | ||
|
||
``` shell | ||
root@openstack-node-0:~# kubectl --namespace openstack exec -ti openstack-admin-client -- openstack volume qos delete 9435160f-0e4a-4486-88b0-d6beb022732a | ||
``` |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,16 @@ | ||
# Set Volume Type Specifications | ||
|
||
## Example: NetApp ONTAP driver volume specifications (deduplication and compression) | ||
|
||
To set and unset additional properties on a NetApp volume type, use the syntax examples. | ||
|
||
``` shell | ||
|
||
root@openstack-node-0:~# kubectl --namespace openstack exec -ti openstack-admin-client -- openstack volume type set --property netapp_dedup='true' <VOLUME_TYPE_ID> | ||
|
||
root@openstack-node-0:~# kubectl --namespace openstack exec -ti openstack-admin-client -- openstack volume type set --property netapp_compression='true' <VOLUME_TYPE_ID> | ||
|
||
root@openstack-node-0:~# kubectl --namespace openstack exec -ti openstack-admin-client -- openstack volume type unset --property netapp_dedup <VOLUME_TYPE_ID> | ||
|
||
root@openstack-node-0:~# kubectl --namespace openstack exec -ti openstack-admin-client -- openstack volume type unset --property netapp_compression <VOLUME_TYPE_ID> | ||
``` |
Oops, something went wrong.