310 likes | 322 Views
Implement services and libraries to provide on-demand, self-service access to Block Storage resources. Software Defined Block Storage via abstraction and automation on top of traditional backend block storage devices.
E N D
Cinder Project UpdateXing Yang, Jay Bryant, Sean McGinnisOctober 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.
Agenda 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 • Nexenta • NBD driver • Synology • Synology iSCSI driver • Violin • Driver for 7000 iSCSI storage • Zadara • ZTE • CoprHD • CoprHD (FC, iSCSI, and ScaleIO) drivers • FalconStor • Huawei • FusionStorage • Kaminario • K2 (iSCSI and FC) drivers
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
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
Scheduler Changes • Added stochastic weight handler for weighted random scheduling. • Config option scheduler_weight_handler defaults to cinder.scheduler.weights.OrderedHostWeightHandler for choosing top weight; Change to cinder.scheduler.weights.StochasticHostWeightHandler 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
Replication Update • Replication API v2.1 (Cheesecake) introduced in Mitaka: fail over the whole backend when disaster strikes (Admin API). • Drivers with replication v2.1 support • Mitaka: DellStorage Center, EMC VNX, HPE (3PAR and LeftHand), Huawei, IBM (Storwize and XIV/DS8K), Pure • Newton: Kaminario, NetApp (cDot), SolidFire
Generic Volume Groups • A grouping construct that allows volumes used in the same application to be managed together. • https://blueprints.launchpad.net/cinder/+spec/generic-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.
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
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>
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 --group-snapshot <group snapshot uuid> • cinder --os-volume-api-version 3.14 group-create-from-src --name my_group --source-group <source group uuid>
Generic Volume Groups – next • Migrate CGs to generic volume groups • Replication group (Tiramisu) • https://blueprints.launchpad.net/cinder/+spec/replication-cg
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>
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.LVMVolumeDriver volume_backend_name = lvmdriver-1
Encrypted Volumes and Key Manager • Ability to retype encrypted volumes. • Castellan key manager interface library replaced default key manager interface.
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-multiple-metadata-keys.rst • Added support for querying volumes filtered by glance metadata key/value. • XML API had been removed.
Quota Related Changes • Admin roles are now able to modify quotas for all projects.
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/manual-validation-of-cinder-aa-patches/
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)
Rolling Upgrades Progress • Moved QualityOfServiceSpecs to use VersionedObject • Switched request_spec in create volume calls to use VersionedObject • Updated initialize_connection and manage_existing APIs to use VersionedObjects • 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.
OS-Brick • Added GPFS connector • Added Windows FC connector • Added Windows SMBFS connector • Added Windows iSCSI connector • Added VMware vmdk connector for backup and restore of vmdk volumes • Switched to using privsep for privileged operations
Python-CinderClient • Service listing now shows cluster field when using API v3.7 or higher • Addition of cluster commands (cluster-list, cluster-show) 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.
Python-Brick-CinderClient-Ext • Added local volume attach/detach
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
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 YouTube • https://www.youtube.com/channel/UCJ8Koy4gsISMy0qW3CWZmaQ