1 Cinder Project Update Xing Yang Jay Bryant
1
Cinder Project Update Xing Yang, Jay Bryant, Sean Mc. Ginnis October 27, 2016 Barcelona
Cinder Overview • Mission statement: To implement services and libraries to provide on demand, self-service access to Block Storage resources. Provide Software Defined Block Storage via abstraction and automation on top of various traditional backend block storage devices. 3
What Happened in Newton
Agenda • • • 5 New backend drivers Backend drivers Drivers management • Async messages • Scheduler changes • Replication update • Generic volume groups Manageable volumes and snapshots Driver Configuration Options • Encrypted volumes and key manager • Other API changes • Quota related changes • Active-active HA progress • Multi-attach progress Rolling upgrades progress os-brick python-cinderclient python-brick-cinderclient-ext
New backend drivers • Copr. HD – Copr. HD (FC, i. SCSI, and Scale. IO) drivers • Falcon. Stor • Huawei – Fusion. Storage • Kaminario – K 2 (i. SCSI and FC) drivers 6 • Nexenta – NBD driver • Synology – Synology i. SCSI driver • Violin – Driver for 7000 i. SCSI storage • Zadara • ZTE
Backend drivers 7 ●Block Device Driver (local) ●Blockbridge (i. SCSI) ●Cloud. Byte (i. SCSI) ●Coho (NFS) ●Copr. HD (FC, i. SCSI, scaleio) ●Datera (i. SCSI) ●Dell Equallogic (i. SCSI) ●Dell Storage Center (i. SCSI/FC) ●Disco (disco) ●Dot. Hill (i. SCSI/FC) ●DRBD (DRBD/i. SCSI) ●EMC VMAX (i. SCSI/FC) ●EMC VNX (i. SCSI/FC) ●EMC Scale. IO (scaleio) ●EMC Xtrem. IO (i. SCSI/FC) ●Falcon. Stor (i. SCSI/FC) ●Fujitsu ETERNUS (i. SCSI/FC) ●Gluster. FS (Gluster. FS) ●HGST (NFS) ●HPE 3 PAR (i. SCSI/FC) ●HPE Left. Hand (i. SCSI) ●Nimble Storage (i. SCSI) ●HPE MSA (i. SCSI/FC) ●HPE XP (FC) ●Hitachi HBSD (i. SCSI/FC) ●Hitachi HNAS (i. SCSI/NFS) ●Huawei (i. SCSI/FC) ●IBM Flashsystem (i. SCSI/FC) ●IBM GPFS (GPFS/NFS) ●IBM Storage (i. SCSI/FC) ●IBM Storwize SVC (i. SCSI/FC) ●Infortrend (i. SCSI/FC) ●Kaminario (i. SCSI) ●Lenovo (i. SCSI/FC) ●LVM (i. SCSI) – Reference* ●Net. App ONTAP (i. SCSI/NFS/FC) ●Net. App E Series (i. SCSI/FC) ●Nexenta (i. SCSI/NFS) ●Nexenta Edge (i. SCSI/NBD) ●NFS – Reference ●Nimble Storage (i. SCSI) ●Oracle Zfssa (i. SCSI/NFS) ●Pure Storage (i. SCSI/FC) ●Prophet. Stor (i. SCSI/FC) ●Quobyte (quobyte) ●RBD (Ceph) - Reference ●Scality SOFS (scality) ●Sheepdog (sheepdog) ●SMBFS (SMB) ●Solid. Fire (i. SCSI) ●Synology (i. SCSI) ●Tegile (i. SCSI/FC) ●Tintri (NFS) ●Violin (FC) ●VMware (VMDK) ●Virtuozzo Storage (NFS) ●Windows (SMB) ●X-IO (i. SCSI/FC) ●Zadara (i. SCSI) ●ZTE (i. SCSI)
Drivers Management • Added ability to do driver interface check • Unsupported drivers – Drivers that do not meet CI requirement will get “unsupported” flag enabled – User have to enable it to run “unsupported” drivers – Unsupported drivers will be removed in the next release if CI problem is not resolved 8
User Messages APIs • User messages APIs that allows users to see error messages for asynchronous operations • Ability to list, show, and delete messages cinder --os-volume-api-version 3. 3 message-list cinder --os-volume-api-version 3. 3 message-show <message id> cinder --os-volume-api-version 3. 3 message-delete <message id> • Status: basic implementation done; more work needed to generate and view messages 9
Scheduler Changes • Added stochastic weight handler for weighted random scheduling. Config option scheduler_weight_handler defaults to cinder. scheduler. weights. Ordered. Host. Weight. Ha ndler for choosing top weight; Change to cinder. scheduler. weights. Stochastic. Host. Weight Handler for random scheduling. • Check extra specs for “provisioning: type” in capacity filter and weigher if a pool supports both thin and thick provisioning. {“provisioning: type”: “thick”} for thick provisioning {“provisioning: type”: “thin”} for thin provisioning 10
Replication Update • Replication API v 2. 1 (Cheesecake) introduced in Mitaka: fail over the whole backend when disaster strikes (Admin API). • Drivers with replication v 2. 1 support - Mitaka: Dell Storage Center, EMC VNX, HPE (3 PAR and Left. Hand), Huawei, IBM (Storwize and XIV/DS 8 K), Pure - Newton: Kaminario, Net. App (c. Dot), Solid. Fire 11
Generic Volume Groups • A grouping construct that allows volumes used in the same application to be managed together. – https: //blueprints. launchpad. net/cinder/+spec/ge neric-volume-group • More generic and easily extendable than the existing consistency group construct. • May or may not support consistent group snapshot. • Can be extended to support other features such as group replication. 12
Generic Volume Groups - group types • Group types and group specs are introduced to describe the characteristics of a group, similar to how volume types and extra specs are applied to a volume. – cinder --os-volume-api-version 3. 11 group-type-create my_test_group – cinder --os-volume-api-version 3. 11 group-type-list – cinder --os-volume-api-version 3. 11 group-type-show my_test_group – cinder --os-volume-api-version 3. 11 group-type-key my_test_group set test_key=test_val – cinder --os-volume-api-version 3. 11 group-specs-list – cinder --os-volume-api-version 3. 11 group-type-key my_test_group unset test_key – cinder --os-volume-api-version 3. 11 group-type-update <group type uuid> --name "new_group" -description "my group type" – cinder --os-volume-api-version 3. 11 group-type-delete new_group 13
Generic Volume Groups - groups • Create, delete, update, show, and list groups – cinder --os-volume-api-version 3. 13 group-create --name my_group <group type uuid> <volume type uuid> – cinder --os-volume-api-version 3. 13 group-list – cinder --os-volume-api-version 3. 13 create --group-id <group uuid> --volume-type <volume type uuid> <size> – cinder --os-volume-api-version 3. 13 group-update <group uuid> --name new_name description new_description --add-volumes <uuid of volume to add> --remove-volumes <uuid of volume to remove> – cinder --os-volume-api-version 3. 13 group-show <group uuid> – cinder --os-volume-api-version 3. 13 group-delete --delete-volumes <group uuid> 14
Generic Volume Groups - group snapshots • Create, delete, show, and list group snapshots. – cinder --os-volume-api-version 3. 14 group-snapshot-create --name <name> <group uuid> – cinder --os-volume-api-version 3. 14 group-snapshot-list – cinder --os-volume-api-version 3. 14 group-snapshot-show <group snapshot uuid> – cinder --os-volume-api-version 3. 14 group-snapshot-delete <group snapshot uuid> • Create group from source group or group snapshot. – cinder --os-volume-api-version 3. 14 group-create-from-src --name my_group --groupsnapshot <group snapshot uuid> – cinder --os-volume-api-version 3. 14 group-create-from-src --name my_group --sourcegroup <source group uuid> 15
Generic Volume Groups – next • Migrate CGs to generic volume groups • Replication group (Tiramisu) – https: //blueprints. launchpad. net/cinder/+spec/replication-cg 16
Manageable Volumes and Snapshots • List all manageable volumes. cinder --os-volume-api-version 3. 8 manageable-list [--detailed <detailed>] [--marker <marker>] [--limit <limit>] [--offset <offset>] [--sort <key>[: <direction>]] <host> ● List all manageable snapshots. cinder --os-volume-api-version 3. 8 snapshot-manageable-list [-detailed <detailed>] [--marker <marker>] [--limit <limit>] [--offset <offset>] [--sort <key>[: <direction>]] <host> 17
Driver Configuration Options • Deprecated ability to define backend storage in the DEFAULT section of cinder. conf. All backend drivers should now be defined in their own sections. Warning: Configuration for cinder-volume does not specify "enabled_backends", using DEFAULT as backend. Support for DEFAULT section to configure drivers will be removed in the next release. Sample cinder. conf [DEFAULT] enabled_backends = lvmdriver-1 [lvmdriver-1] lvm_type = default iscsi_helper = tgtadm volume_group = stack-volumes-lvmdriver-1 volume_driver = cinder. volume. drivers. lvm. LVMVolume. Driver volume_backend_name = lvmdriver-1 18
Encrypted Volumes and Key Manager • Ability to retype encrypted volumes. • Castellan key manager interface library replaced default key manager interface. 19
Other API Changes • Added API to update backup name and description. • Added using etags in API calls to avoid the lost update problem during deleting volume metadata. Deleting multiple volume metadata keys with a single request to improve performance. https: //github. com/openstack/cinder-specs/blob/master/specs/newton/delete-multiplemetadata-keys. rst • Added support for querying volumes filtered by glance metadata key/value. • XML API had been removed. 20
Quota Related Changes • Admin roles are now able to modify quotas for all projects. 21
Active-Active HA Progress • • Added cluster entity and API to prepare for active/active HA configuration. Added a new mechanism to distribute jobs to c-vol nodes with the addition of the "cluster" configuration option. Added workers table required for the cleanup of failed services for active-active HA configuration. Removed API races (CG, migration, retype, extend, and volume_upload_image) Used Tooz locks from coordination module in volume manager. Start/Stop coordinator with volume service. How to test A/A HA: http: //gorka. eguileor. com/manualvalidation-of-cinder-aa-patches/ 22
Multi-attach Progress • New simplified attach/detach APIs (Cinder patch in review). • Cinder node serving multiple consumers such as Nova (Cinder spec in review) • Fix live migration related multiattach issues (Nova patch WIP) • Remove check attach from Nova (Code in review) 23
Rolling Upgrades Progress • Moved Quality. Of. Service. Specs to use Versioned. Object • Switched request_spec in create volume calls to use Versioned. Object • Updated initialize_connection and manage_existing APIs to use Versioned. Objects • Created volume and scheduler RPC API version 3. 0, while retaining compatibility in rpcapi and manager for 2. x, allowing for continuous deployment scenarios. • In summary, rolling upgrade required changes are complete. More testing needed. 24
OS-Brick • • • Added GPFS connector Added Windows FC connector Added Windows SMBFS connector Added Windows i. SCSI connector Added VMware vmdk connector for backup and restore of vmdk volumes • Switched to using privsep for privileged operations 25
Python-Cinder. Client • Service listing now shows cluster field when using API v 3. 7 or higher • Addition of cluster commands (cluster-list, clustershow) for HA A/A support. • Added ability to get user messages for async jobs (message-list, message-show, message-delete) • The keystone related command “cinder endpoints” has been deprecated. • Commands for group types, groups, and group snapshots. 26
Python-Brick-Cinder. Client-Ext • Added local volume attach/detach 27
What’s Coming in Ocata?
Plan for Ocata • Improve testing coverage: unit, functional, in-tree tempest, tempest • Continuation of rolling upgrades • Continuation of active-active HA • Continue to work on multiattach with Nova team 29
Reference Links • Release notes - http: //docs. openstack. org/releasenotes/cinder/newton. html • Launchpad - https: //launchpad. net/cinder • Cinder wiki - https: //wiki. openstack. org/wiki/Cinder • Cinder You. Tube 30 https: //www. youtube. com/channel/UCJ 8 Koy 4 gs. ISMy 0 q. W 3 CWZma. Q
Q&A
- Slides: 31