Jump to: navigation, search

Difference between revisions of "Cinder"

(Initial list of topics to discuss at the Havana summit:)
(PTG and Summit Meeting Summaries)
 
(107 intermediate revisions by 24 users not shown)
Line 1: Line 1:
 +
'''Note:''' The wiki.openstack.org pages are for development team collaboration and documentation. If you are looking for official project documentation, please go to https://docs.openstack.org/cinder/latest/.
  
= [[OpenStack]] Block Storage ("Cinder") =
+
'''Official Title:''' OpenStack Block Storage Cinder<br />
  
{| border="1" cellpadding="2" cellspacing="0"
+
'''PTL:''' Rajat Dhasmana <rajatdhasmana@gmail.com><br />
| Source code 
+
 
|-
+
'''Mission Statement:''' <blockquote>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.</blockquote>
| Bug tracker 
+
 
|-
+
'''[https://wiki.openstack.org/wiki/Cinder#Active Jump to the Active Etherpads List]'''
|  Blueprints   
+
 
|-
+
== Description ==
|  Developer doc
+
Cinder is a Block Storage service for OpenStack.  It's designed to present storage resources to end users that can be consumed by the OpenStack Compute Project (Nova). This is done through the use of either a reference implementation (LVM) or plugin drivers for other storage. The short description of Cinder is that it virtualizes the management of block storage devices and provides end users with a self service API to request and consume those resources without requiring any knowledge of where their storage is actually deployed or on what type of device.
|}
+
 
 +
== Documentation ==
 +
For a quick overview of the Cinder project's organization, deliverables, and processes, take a look at our [https://docs.openstack.org/cinder/latest/contributor/contributing.html Getting Started] page.
 +
 
 +
See https://docs.openstack.org/cinder for the official cinder documentation.
 +
 
 +
== Core Team ==
 +
See [https://review.openstack.org/#/admin/groups/83,members current members].
 +
 
 +
== Project Meetings ==
 +
See [[CinderMeetings|Meetings/Cinder]].
 +
 
 +
== Getting in Touch ==
 +
We use the [http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-discuss openstack-discuss@lists.openstack.org] mailing list for discussions using subjects with the prefix "[cinder]".
 +
* Mailing list archive: http://lists.openstack.org/pipermail/openstack-discuss/
 +
* For discussions prior to Mon Nov 19 00:04:26 UTC 2018, see the old "dev list" archive: http://lists.openstack.org/pipermail/openstack-dev/
  
== Related projects ==
 
* Python Cinder client
 
* Block Storage API documentation
 
  
== What is Cinder ? ==
+
We also hang out on IRC in '''<code><nowiki>#openstack-cinder</nowiki></code>''' ... you can find out where (that is, which IRC network we use) and get IRC tips in the [https://docs.openstack.org/contributors/common/irc.html OpenStack contributor guide].
 +
* IRC logs are available in: [http://eavesdrop.openstack.org/irclogs/%23openstack-cinder/ http://eavesdrop.openstack.org/irclogs/#openstack-cinder/]
  
The goal of the Cinder project is to separate the existing nova-volume block service into its own project.
+
== Related projects ==
 +
* [https://github.com/openstack/python-cinderclient Python Cinder client]
 +
* [https://wiki.openstack.org/wiki/CinderBrick Brick]
  
== Reasoning: ==
+
== Core Volume Drivers ==
# Nova is currently a very large project; managing all of the dependencies in linkages of services within Nova can make the  ability to advance new features and functionality very difficult.
+
For a list of the core drivers in each OpenStack release and the volume operations they support, see https://docs.openstack.org/cinder/latest/reference/support-matrix.html
# As a result of the many components and dependencies in Nova, it's difficult for anybody to really have a complete view of Nova and to be a true expert. This makes the job of core team member on Nova very difficult, and inhibits good thorough reviews of bug and blueprint submissions.  
 
# Block storage is a critical component of [[OpenStack]], as such it warrants focused and dedicated attention.
 
# Having Block Storage as a dedicated core project in [[OpenStack]] enables the ability to greatly improve functionality and reliability of the block storage component of [[OpenStack]]
 
  
== Initial list of topics to discuss at the Havana summit: ==
+
== Contributing Code ==
* Reporting specific errors to the client, for example: https://bugs.launchpad.net/cinder/+bug/1116077
+
For any new features, significant code changes, new drivers, or major bug fixes, please add a release note along with your patch. See the [http://docs.openstack.org/developer/reno/usage.html#creating-new-release-notes Reno Documentation] for details on how to generate new release notes.
* Driver class hierarchy: https://blueprints.launchpad.net/cinder/+spec/reorganize-connection-specific-cinder-driver-code (avishay-il)
 
* Driver capabilities (Thingee / DuncanT)
 
* The role and future of snapshots (avishay-il / DuncanT)
 
  
== Minimum Driver Features ==
+
=== How To Contribute A Driver ===
A Cinder driver must implement the following features in order to be accepted by the Cinder team for a given milestone release.
+
See [https://wiki.openstack.org/wiki/Cinder/how-to-contribute-a-driver How to contribute a driver]
  
'''Grizzly Release:'''
+
NOTE: For people working on getting their CI to handle Python 3, see [https://wiki.openstack.org/wiki/Cinder/3rdParty-drivers-py3-update Cinder Third Party CI update to Python 3.7]
* Volume Create/Delete
 
* Volume Attach/Detach
 
* Snapshot Create/Delete
 
* Create Volume from Snapshot
 
* Get Volume Stats
 
  
The current list of volume stats that should be populated by the driver include:
+
=== How To Contribute A New Feature ===
* driver_version
+
See [https://wiki.openstack.org/wiki/Cinder/how-to-contribute-new-feature How to contribute a new feature]
* free_capacity_gb
 
* reserved_percentage
 
* storage_protocol
 
* total_capacity_gb
 
* vendor_name
 
* volume_backend_name
 
  
  '''NOTE:''' If the driver in unable to provide a value for free_capacity_gb or total_capacity_gb, keywords can be provided instead.  
+
== Sample cinder.conf ==
Please use 'unknown' if the array cannot report the value or 'infinite' if the array has no upper limit.
+
The cinder.conf.sample is no longer maintained and tested in the source tree. Currently you can obtain a copy by running the command 'tox -e genconfig' in a cloned version of the Cinder project and then look in etc/cinder/ for the cinder.conf.sample file.  
  
'''Havana Release:'''
+
The newly generated file will have all options in the Cinder project, driver options included.
* Above Release features '''plus'''
 
* Copy Image to Volume
 
* Copy Volume to Image
 
* Clone Volume
 
  
It is strongly encouraged that you implement all the features for a given release if possible. However, the Cinder team understands that the turnaround time might be too tight for some, due to corporate legal approval, new features landing at the very end of a sprint, etc… Each major release the list will be updated to include additions that will be required to be supported.
+
Additionally, the generated file is available in the Cinder documentation:
 +
https://docs.openstack.org/cinder/latest/configuration/block-storage/samples/cinder.conf.html
  
=== Keeping consistant with multi backend ===
+
== Resources ==
In order to maintain consistency with multi backend, do not directly use FLAGS.my_flag, instead use the self.configuration that is provided to the volume drivers. If this does not exist, look @ lvm.py and add it to your driver. using FLAGS.my_flag instead of self.configuration.my_flag will cause multi backend to not work properly. Multi backend relies on the configurations to be within a specific config group in the config file, and the self.configuration abstracts that away from the drivers.
+
===Etherpads===
 +
====Active====
 +
*[https://etherpad.opendev.org/p/cinder-xena-ci-tracking Tracking cinder check/gate failures during Xena development]
 +
*[https://etherpad.openstack.org/p/cinder-spec-review-tracking Spec Review Tracking]
 +
*[https://etherpad.openstack.org/p/cinder-outreachy-project-ideas Outreachy Project Ideas]
  
== Keeping informed and providing '''CONSTRUCTIVE INPUT''' ==
+
====Historic====
The Cinder team currently meets on a weekly basis in #openstack-meeting at 16:00 UTC on Wednesdays. I try to keep the meetings wiki agenda page http://wiki.openstack.org/CinderMeetings up to date and follow it. Also keep in mind that '''anybody''' is able to add/suggest agenda items via the meeting wiki page.
+
*[https://etherpad.openstack.org/p/cinder-default-iscsihelper-lio Default iscsihelper LIO]
 +
*[https://etherpad.openstack.org/p/cinder-nova-api-changes Cinder/Nova API Changes]
 +
*[https://etherpad.openstack.org/p/newton-cinder-midcycle Newton Midcycle]
 +
*[https://etherpad.openstack.org/p/newton-cinder-summit-ideas Newton Summit Ideas]
 +
*[https://etherpad.openstack.org/p/cinder-mataka-release-final-push Mitaka Final Push]
 +
*[https://etherpad.openstack.org/p/mitaka-cinder-spec-review-tracking Mitaka Spec Review Tracking]
 +
*[https://etherpad.openstack.org/p/mitaka-cinder-midcycle Mitaka Midcycle Meetup- Planning]
 +
*[https://etherpad.openstack.org/p/cinder-mitaka-summit-topics Mitaka Summit- Planning]
 +
*[https://etherpad.openstack.org/p/cinder-meetup-summer-2015 Liberty Midcycle Meetup- Notes]
 +
*[https://etherpad.openstack.org/p/cinder-liberty-midcycle-meetup Liberty Midcycle Meetup- Planning]
  
Of course, there's also IRC... a number of us monitor #openstack-cinder or you can always send a PM to jgriffith (that's me)http://wiki.openstack.org/CinderMeetings
+
=== Review Links ===
 +
* [https://review.opendev.org/dashboard/?foreach=%28project%3Aopenstack%2Fcinder+OR%0Aproject%3Aopenstack%2Fpython%2Dcinderclient+OR%0Aproject%3Aopenstack%2Fpython%2Dbrick%2Dcinderclient%2Dext+OR%0Aproject%3Aopenstack%2Fos%2Dbrick+OR%0Aproject%3Aopenstack%2Fcinderlib+OR%0Aproject%3Aopenstack%2Frbd%2Discsi%2Dclient+OR%0Aopenstack%2Fcinder%2Dtempest%2Dplugin%29+status%3Aopen&title=Cinder+Priorities+Dashboard&High+Priority+Changes=label%3AReview%2DPriority%3D2&Priority+Changes=label%3AReview%2DPriority%3D1&Blocked+Reviews=label%3AReview%2DPriority%3D%2D1 Cinder Priority Reviews Dashboard]
 +
* [https://review.opendev.org/dashboard/?title=Cinder+Review+Dashboard&foreach=(project:openstack/cinder+OR%0Aproject:openstack/python-cinderclient+OR%0Aproject:openstack/os-brick+OR%0Aproject:openstack/cinderlib+OR%0Aproject:openstack/python-brick-cinderclient-ext+OR%0Aproject:openstack/rbd-iscsi-client+OR%0Aproject:openstack/cinder-tempest-plugin)+status:open&Small+Patches=NOT+label:Code-Review%3C=-1,cinder-core+delta:%3C=10&5+Days+Without+Feedback=NOT+label:Code-Review%3C=-1+NOT+label:Code-Review%3E=1+NOT+is:reviewed+age:5d&Bug+Fixes+without+Negative+Feedback=NOT+label:Workflow%3E=1+NOT+label:Workflow%3C=-1+NOT+owner:self+limit:50+branch:master+intopic:%5Ebug.*+NOT+reviewedby:self&Blueprints+without+Negative+Feedback=NOT+label:Workflow%3E=1+NOT+label:Workflow%3C=-1+label:Verified%3E=1+NOT+owner:self+NOT+label:Code-Review%3C=-1+NOT+label:Code-Review%3E=2+limit:50+branch:master+intopic:%5Ebp.*+NOT+reviewedby:self&Needs+Final++2=label:Code-Review%3E=2+NOT+label:Code-Review%3C=-2+NOT+reviewedby:self&Patches+I+-2%27d=label:Code-Review%3C=-2,self&Stable+Branches=branch:%5Estable/.*+NOT+reviewedby:self Cinder Projects Review Inbox]
 +
* [https://bugs.launchpad.net/cinder/+bugs?field.searchtext=&orderby=-importance&search=Search&field.status%3Alist=INPROGRESS&assignee_option=any&field.assignee=&field.bug_reporter=&field.bug_commenter=&field.subscriber=&field.structural_subscriber=&field.tag=-drivers&field.tags_combinator=ANY&field.has_cve.used=&field.omit_dupes.used=&field.omit_dupes=on&field.affects_me.used=&field.has_patch.used=&field.has_branches.used=&field.has_no_branches.used=&field.has_blueprints.used=&field.has_no_blueprints.used= In progress bugs]
 +
* [https://bugs.launchpad.net/cinder/+bugs?field.searchtext=&orderby=-importance&search=Search&field.status%3Alist=NEW&assignee_option=any&field.assignee=&field.bug_reporter=&field.bug_commenter=&field.subscriber=&field.structural_subscriber=&field.tag=-drivers&field.tags_combinator=ANY&field.has_cve.used=&field.omit_dupes.used=&field.omit_dupes=on&field.affects_me.used=&field.has_patch.used=&field.has_branches.used=&field.has_no_branches.used=&field.has_blueprints.used=&field.has_no_blueprints.used= New bugs]
 +
* Stable Branches Reviews
 +
** [https://review.openstack.org/#/dashboard/?foreach=%28project%3Aopenstack%2Fcinder+OR%0Aproject%3Aopenstack%2Fpython%2Dcinderclient+OR%0Aproject%3Aopenstack%2Fos%2Dbrick+OR%0Aproject%3Aopenstack%2Fcinderlib+OR%0Aproject%3Aopenstack%2Fpython%2Dbrick%2Dcinderclient%2Dext%29+status%3Aopen%0A%28branch%3A%5Edriverfixes%2F.%2A+OR%0Abranch%3A%5Estable%2F.%2A%29&title=Cinder+Project%3A+All+Stable+and+Driverfix+Branches&Needs+Final+%2B2=label%3ACode%2DReview%3E%3D2+NOT+label%3ACode%2DReview%3C%3D%2D2&Without+Negative+Feedback=NOT+label%3AWorkflow%3E%3D1+NOT+label%3AWorkflow%3C%3D%2D1+label%3AVerified%3E%3D1+NOT+owner%3Aself+NOT+label%3ACode%2DReview%3C%3D%2D1+NOT+label%3ACode%2DReview%3E%3D2+limit%3A50&Probably+Not=NOT+label%3AWorkflow%3E%3D1+NOT+label%3AWorkflow%3C%3D%2D1+label%3ACode%2Dreview%3C%3D%2D1+NOT+owner%3Aself+limit%3A50&Own+Patches=owner%3Aself&Patches+I+%2D2%27d=label%3ACode%2DReview%3C%3D%2D2%2Cself all stable and driverfix branches]
 +
** [https://review.openstack.org/#/dashboard/?foreach=%28project%3Aopenstack%2Fcinder+OR%0Aproject%3Aopenstack%2Fpython%2Dcinderclient+OR%0Aproject%3Aopenstack%2Fos%2Dbrick+OR%0Aproject%3Aopenstack%2Fcinderlib+OR%0Aproject%3Aopenstack%2Fpython%2Dbrick%2Dcinderclient%2Dext%29%0Astatus%3Aopen%0Abranch%3Astable%2Fstein&title=Cinder+stable%2Fstein+Reviews&Needs+Final+%2B2=label%3ACode%2DReview%3E%3D2+NOT+label%3ACode%2DReview%3C%3D%2D2&Without+Negative+Feedback=NOT+label%3AWorkflow%3E%3D1+NOT+label%3AWorkflow%3C%3D%2D1+label%3AVerified%3E%3D1+NOT+owner%3Aself+NOT+label%3ACode%2DReview%3C%3D%2D1+NOT+label%3ACode%2DReview%3E%3D2+limit%3A50&Probably+Not=NOT+label%3AWorkflow%3E%3D1+NOT+label%3AWorkflow%3C%3D%2D1+label%3ACode%2Dreview%3C%3D%2D1+NOT+owner%3Aself+limit%3A50&Own+Patches=owner%3Aself&Patches+I+%2D2%27d=label%3ACode%2DReview%3C%3D%2D2%2Cself stable/stein only]
 +
** [https://review.openstack.org/#/dashboard/?foreach=%28project%3Aopenstack%2Fcinder+OR%0Aproject%3Aopenstack%2Fpython%2Dcinderclient+OR%0Aproject%3Aopenstack%2Fos%2Dbrick+OR%0Aproject%3Aopenstack%2Fcinderlib+OR%0Aproject%3Aopenstack%2Fpython%2Dbrick%2Dcinderclient%2Dext%29+status%3Aopen%0A%28branch%3A%5Edriverfixes%2F.%2A+OR%0Abranch%3Astable%2Focata+OR%0Abranch%3Astable%2Fpike%29&title=Cinder+Extended+Maintenance+Branches+Reviews&Needs+Final+%2B2=label%3ACode%2DReview%3E%3D2+NOT+label%3ACode%2DReview%3C%3D%2D2&Without+Negative+Feedback=NOT+label%3AWorkflow%3E%3D1+NOT+label%3AWorkflow%3C%3D%2D1+label%3AVerified%3E%3D1+NOT+owner%3Aself+NOT+label%3ACode%2DReview%3C%3D%2D1+NOT+label%3ACode%2DReview%3E%3D2+limit%3A50&Probably+Not=NOT+label%3AWorkflow%3E%3D1+NOT+label%3AWorkflow%3C%3D%2D1+label%3ACode%2Dreview%3C%3D%2D1+NOT+owner%3Aself+limit%3A50&Own+Patches=owner%3Aself&Patches+I+%2D2%27d=label%3ACode%2DReview%3C%3D%2D2%2Cself extended maintenance (including driverfixes) only]
  
== Concerns from the community: ==
+
=== PTG and Summit Meeting Summaries ===
=== Compatibility and Migration: ===
+
*[[CinderCaracalMidCycleSummary|2024.1 (Caracal) Midcycle Summary]]
There has been a significant amount of concern raised regarding "compatibility"; unfortunately this seems to mean different things to different people. For those that haven't looked at the Cinder code or tried a demo in devstack, here are some question/answers:
+
*[[CinderCaracalPTGSummary|2024.1 (Caracal) PTG Summary]]
 +
*[[CinderBobcatMidCycleSummary|2023.2 (Bobcat) Midcycle Summary]]
 +
*[[CinderBobcatPTGSummary|2023.2 (Bobcat) PTG Summary]]
 +
*[[CinderAntelopeMidCycleSummary|2023.1 (Antelope) Midcycle Summary]]
 +
*[[CinderAntelopePTGSummary|2023.1 (Antelope) PTG Summary]]
 +
*[[CinderZedMidCycleSummary| Zed Midcycle Summary]]
 +
*[[CinderZedPTGSummary|Zed PTG Summary]]
 +
*[[CinderYogaMidCycleSummary|Yoga Midcycle Summary]]
 +
*[[CinderYogaPTGSummary|Yoga PTG Summary]]
 +
*[[CinderXenaMidCycleSummary|Xena Mid-Cycle Summary]]
 +
*[[CinderXenaPTGSummary|Xena PTG Summary]]
 +
*[[CinderWallabyMidCycleSummary|Wallaby Mid-Cycle Summary]]
 +
*[[CinderWallabyPTGSummary|Wallaby PTG Summary]]
 +
*[[CinderVictoriaMidCycleSummary|Victoria Mid-Cycle Summary]]
 +
*[[CinderVictoriaPTGSummary|Victoria PTG Summary]]
 +
*[[CinderUssuriMidCycleSummary|Ussuri Mid-Cycle Summary]]
 +
*[[CinderUssuriPTGSummary|Ussuri PTG Summary]]
 +
*[[CinderTrainMidCycleSummary|Train Mid-Cycle Summary]]
 +
*[[CinderTrainSummitandPTGSummary|Train Summit and PTG Summary]]
 +
*[[CinderSteinMidCycleSummary|Stein Mid-Cycle Summary]]
 +
*[[CinderSteinPTGSummary|Stein PTG Summary]]
 +
*[[VancouverSummit2018Summary|Vancouver Summit 2018 Summary]]
 +
*[[CinderRockyPTGSummary|Rocky PTG Summary]]
 +
*[[CinderQueensPTGSummary|Queens PTG Summary]]
 +
*[[CinderPikePTGSummary|Pike PTG Summary]]
  
* Do the same nova client commands I use for volumes today still work the same? '''YES'''
+
=== Cinder YouTube Channel ===
* Do the same euca2ools that I use for volumes today still work the same? '''YES'''
+
* [https://www.youtube.com/channel/UCJ8Koy4gsISMy0qW3CWZmaQ/videos Midcycle/PTG Videos and Related Content]
* Does block storage still work the same as it does today in terms of LVM, iSCSI and the drivers that are curently in place? '''YES'''
 
* Are the associated database tables the same as they are in the current nova volume code?  '''For the most part YES, all volume related tables and columns are migrated, non-volume related tables however are not present'''
 
* Does it use the same nova database as we use today? '''No, it does require a new independent database'''
 
* Are you going to implement cinder with complete disregard for my current install and completely change everything out from under me?  '''ABSOLUTELY NOT'''
 
* Are you going to test migrating from nova-vol to Cinder? '''YES'''
 
* Are those migration tests going to be done just using fakes/unit tests?  '''NO, we would require running setups, most likely devstack'''
 
* Are you planning to provide migration scripts/tools to move from nova to cinder?  '''YES'''
 
  
=== Additional thoughts to keep in mind: ===
+
[[Category: Cinder]]
* The Cinder core team is fortunate enough to have a number of members who currently work for companies that are using [[OpenStack]] and nova-volumes in production environments.  There is a strong representation and the concerns of Providers is in fact a major consideration
 
* The goal is '''NOT''' to throw away nova-volume as it is today, but to separate it, focus on it and improve it.
 
* Migration is one of the top priorities for introduction of Cinder into Folsom (regardless of whether nova-volume is still in place or not).  This is something that is just considered a part of the requirements for the project.
 

Latest revision as of 09:50, 16 January 2024

Note: The wiki.openstack.org pages are for development team collaboration and documentation. If you are looking for official project documentation, please go to https://docs.openstack.org/cinder/latest/.

Official Title: OpenStack Block Storage Cinder

PTL: Rajat Dhasmana <rajatdhasmana@gmail.com>

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.

Jump to the Active Etherpads List

Description

Cinder is a Block Storage service for OpenStack. It's designed to present storage resources to end users that can be consumed by the OpenStack Compute Project (Nova). This is done through the use of either a reference implementation (LVM) or plugin drivers for other storage. The short description of Cinder is that it virtualizes the management of block storage devices and provides end users with a self service API to request and consume those resources without requiring any knowledge of where their storage is actually deployed or on what type of device.

Documentation

For a quick overview of the Cinder project's organization, deliverables, and processes, take a look at our Getting Started page.

See https://docs.openstack.org/cinder for the official cinder documentation.

Core Team

See current members.

Project Meetings

See Meetings/Cinder.

Getting in Touch

We use the openstack-discuss@lists.openstack.org mailing list for discussions using subjects with the prefix "[cinder]".


We also hang out on IRC in #openstack-cinder ... you can find out where (that is, which IRC network we use) and get IRC tips in the OpenStack contributor guide.

Related projects

Core Volume Drivers

For a list of the core drivers in each OpenStack release and the volume operations they support, see https://docs.openstack.org/cinder/latest/reference/support-matrix.html

Contributing Code

For any new features, significant code changes, new drivers, or major bug fixes, please add a release note along with your patch. See the Reno Documentation for details on how to generate new release notes.

How To Contribute A Driver

See How to contribute a driver

NOTE: For people working on getting their CI to handle Python 3, see Cinder Third Party CI update to Python 3.7

How To Contribute A New Feature

See How to contribute a new feature

Sample cinder.conf

The cinder.conf.sample is no longer maintained and tested in the source tree. Currently you can obtain a copy by running the command 'tox -e genconfig' in a cloned version of the Cinder project and then look in etc/cinder/ for the cinder.conf.sample file.

The newly generated file will have all options in the Cinder project, driver options included.

Additionally, the generated file is available in the Cinder documentation: https://docs.openstack.org/cinder/latest/configuration/block-storage/samples/cinder.conf.html

Resources

Etherpads

Active

Historic

Review Links

PTG and Summit Meeting Summaries

Cinder YouTube Channel