Generic volume group support is available in OpenStack Block Storage (cinder)since the Newton release. The support is added for creating group types andgroup specs, creating groups of volumes, and creating snapshots of groups.The group operations can be performed using the Block Storage command line.
A group type is a type for a group just like a volume type for a volume.A group type can also have associated group specs similar to extra specsfor a volume type.
In cinder, there is a group construct called consistency group. Consistencygroups only support consistent group snapshots and only a small number ofdrivers can support it. The following is a list of drivers that supportconsistency groups and the release when the support was added:
Juno: EMC VNX
Kilo: EMC VMAX, IBM (GPFS, Storwize, SVC, and XIV), ProphetStor, Pure
Liberty: Dell Storage Center, EMC XtremIO, HPE 3Par and LeftHand
Mitaka: EMC ScaleIO, NetApp Data ONTAP, SolidFire
Newton: CoprHD, FalconStor, Huawei
Consistency group cannot be extended easily to serve other purposes. A tenantmay want to put volumes used in the same application together in a group sothat it is easier to manage them together, and this group of volumes may ormay not support consistent group snapshot. Generic volume group is introducedto solve this problem.
There is a plan to migrate existing consistency group operations to usegeneric volume group operations in future releases. More information can befound in Cinder specs.
Note
Only Block Storage V3 API supports groups. You canspecify --os-volume-api-version 3.x
when using the cindercommand line for group operations where 3.x contains a microversion valuefor that command. The generic volume group feature was completed in severalpatches. As a result, the minimum required microversion is different forgroup types, groups, and group snapshots APIs.
The following group type operations are supported:
Create a group type.
Delete a group type.
Set group spec for a group type.
Unset group spec for a group type.
List group types.
Show a group type details.
Update a group.
List group types and group specs.
The following group and group snapshot operations are supported:
Create a group, given group type and volume types.
Note
A group must have one group type. A group can support more than onevolume type. The scheduler is responsible for finding a back end thatcan support the given group type and volume types.
A group can only contain volumes hosted by the same back end.
A group is empty upon its creation. Volumes need to be created and addedto it later.
Show a group.
List groups.
Delete a group.
Modify a group.
Create a volume and add it to a group.
Create a snapshot for a group.
Show a group snapshot.
List group snapshots.
Delete a group snapshot.
Create a group from a group snapshot.
Create a group from a source group.
The following operations are not allowed if a volume is in a group:
Volume migration.
Volume retype.
Volume deletion.
Note
A group has to be deleted as a whole with all the volumes.
The following operations are not allowed if a volume snapshot is in agroup snapshot:
Volume snapshot deletion.
Note
A group snapshot has to be deleted as a whole with all the volumesnapshots.
The details of group type operations are shown in the following. The minimummicroversion to support group type and group specs is 3.11:
Create a group type:
cinder --os-volume-api-version 3.11 group-type-create[--description DESCRIPTION][--is-public IS_PUBLIC]NAME
Note
The parameter NAME
is required. The--is-public IS_PUBLIC
determines whether the group type isaccessible to the public. It is True
by default. By default, thepolicy on privileges for creating a group type is admin-only.
Show a group type:
cinder --os-volume-api-version 3.11 group-type-showGROUP_TYPE
Note
The parameter GROUP_TYPE
is the name or UUID of a group type.
List group types:
cinder --os-volume-api-version 3.11 group-type-list
Note
Only admin can see private group types.
Update a group type:
cinder --os-volume-api-version 3.11 group-type-update[--name NAME][--description DESCRIPTION][--is-public IS_PUBLIC]GROUP_TYPE_ID
Note
The parameter GROUP_TYPE_ID
is the UUID of a group type. By default,the policy on privileges for updating a group type is admin-only.
Delete group type or types:
cinder --os-volume-api-version 3.11 group-type-deleteGROUP_TYPE [GROUP_TYPE ...]
Note
The parameter GROUP_TYPE
is name or UUID of the group type orgroup types to be deleted. By default, the policy on privileges fordeleting a group type is admin-only.
Set or unset group spec for a group type:
cinder --os-volume-api-version 3.11 group-type-keyGROUP_TYPE ACTION KEY=VALUE [KEY=VALUE ...]
Note
The parameter GROUP_TYPE
is the name or UUID of a group type. Validvalues for the parameter ACTION
are set
or unset
.KEY=VALUE
is the group specs key and value pair to set or unset.For unset, specify only the key. By default, the policy on privilegesfor setting or unsetting group specs key is admin-only.
List group types and group specs:
cinder --os-volume-api-version 3.11 group-specs-list
Note
By default, the policy on privileges for seeing group specs is admin-only.
The details of group operations are shown in the following. The minimummicroversion to support groups operations is 3.13.
Create a group:
cinder --os-volume-api-version 3.13 group-create[--name NAME][--description DESCRIPTION][--availability-zone AVAILABILITY_ZONE]GROUP_TYPE VOLUME_TYPES
Note
The parameters GROUP_TYPE
and VOLUME_TYPES
are required.GROUP_TYPE
is the name or UUID of a group type. VOLUME_TYPES
can be a list of names or UUIDs of volume types separated by commaswithout spaces in between. For example,volumetype1,volumetype2,volumetype3.
.
Show a group:
cinder --os-volume-api-version 3.13 group-showGROUP
Note
The parameter GROUP
is the name or UUID of a group.
List groups:
cinder --os-volume-api-version 3.13 group-list[--all-tenants [<0|1>]]
Note
--all-tenants
specifies whether to list groups for all tenants.Only admin can use this option.
Create a volume and add it to a group:
cinder --os-volume-api-version 3.13 create--volume-type VOLUME_TYPE--group-id GROUP_ID SIZE
Note
When creating a volume and adding it to a group, the parametersVOLUME_TYPE
and GROUP_ID
must be provided. This is because a groupcan support more than one volume type.
Delete a group:
cinder --os-volume-api-version 3.13 group-delete[--delete-volumes]GROUP [GROUP ...]
Note
--delete-volumes
allows or disallows groups to be deletedif they are not empty. If the group is empty, it can be deleted without--delete-volumes
. If the group is not empty, the flag isrequired for it to be deleted. When the flag is specified, the groupand all volumes in the group will be deleted.
Modify a group:
cinder --os-volume-api-version 3.13 group-update[--name NAME][--description DESCRIPTION][--add-volumes UUID1,UUID2,......][--remove-volumes UUID3,UUID4,......]GROUP
Note
The parameter UUID1,UUID2,......
is the UUID of one or more volumesto be added to the group, separated by commas. Similarly the parameterUUID3,UUID4,......
is the UUID of one or more volumes to be removedfrom the group, separated by commas.
The details of group snapshots operations are shown in the following. Theminimum microversion to support group snapshots operations is 3.14.
Create a snapshot for a group:
cinder --os-volume-api-version 3.14 group-snapshot-create[--name NAME][--description DESCRIPTION]GROUP
Note
The parameter GROUP
is the name or UUID of a group.
Show a group snapshot:
cinder --os-volume-api-version 3.14 group-snapshot-showGROUP_SNAPSHOT
Note
The parameter GROUP_SNAPSHOT
is the name or UUID of a group snapshot.
List group snapshots:
cinder --os-volume-api-version 3.14 group-snapshot-list[--all-tenants [<0|1>]][--status STATUS][--group-id GROUP_ID]
Note
--all-tenants
specifies whether to list group snapshots forall tenants. Only admin can use this option. --status STATUS
filters results by a status. --group-id GROUP_ID
filtersresults by a group id.
Delete group snapshot:
cinder --os-volume-api-version 3.14 group-snapshot-deleteGROUP_SNAPSHOT [GROUP_SNAPSHOT ...]
Note
The parameter GROUP_SNAPSHOT
specifies the name or UUID of one or moregroup snapshots to be deleted.
Create a group from a group snapshot or a source group:
$ cinder --os-volume-api-version 3.14 group-create-from-src[--group-snapshot GROUP_SNAPSHOT][--source-group SOURCE_GROUP][--name NAME][--description DESCRIPTION]
Note
The parameter GROUP_SNAPSHOT
is a name or UUID of a group snapshot.The parameter SOURCE_GROUP
is a name or UUID of a source group.Either GROUP_SNAPSHOT
or SOURCE_GROUP
must be specified, but notboth.