Hello
The All-Flash Array for the
Next Generation Data Center
• Storage and OpenStack
– What do you mean when you say ‘storage’
– Object vs. block
• What is Cinder?
• Considerations when thinking about a Cinder backend
• Configuring your storage for DBaaS
• OpenStack Trove and DBaaS
• The Future: Starring Trove and SolidFire
Agenda
 Deploy new applications and services faster
 Provide more agile and scalable infrastructure
 Increase application performance and predictability
 Enable automation and end-user self-service
 Raise operational efficiency and reduce cost
The IT
Innovation
Imperative
OpenStack is driving the transformation of Enterprise IT
globally
So…What do you mean when you say ‘storage’ ?
Storage. Storage. Storage. Storage. Hodor.
● Ephemeral
• Non-persistent
• Lifecycle coincides with a Nova instance
● Object
• Manages data as.. well, an Object
• Think unstructured data (Mp4)
• Typically referred to “cheap and deep”
• Usually runs on spinny drives
• In OpenStack: Swift
● Files System
• We all love NFS and CIFS…right!?
● Block
• Foundation for the other types
• Think raw disk
• Typically higher performance
• Cinder
Block vs. Object Storage
Block Storage Object Storage
What does
it do?
● Storage for running VM disk volumes on
a host
● Ideal for performance sensitive apps
● Enables Amazon EBS-like service
● Ideal for cost effective, scale-out storage
● Fully distributed, API-accessible
● Well suited for backup, archiving, data
retention
● Enables Dropbox-like service
Use Cases
● Production Applications
● Traditional IT Systems
● Database Driven Apps
● Messaging / Collaboration
● Dev / Test Systems
● VM Templates
● ISO Images
● Disk Volume Snapshots
● Backup / Archive
● Image / Video Repository
Workloads
● High Change Content
● Smaller, Random R/W
● Higher / “Bursty” IO
● Typically More Static Content
● Larger, Sequential R/W
● Lower IOPS
Let’s talk Cinder!
Cinder 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.
Huh?
Very Simple.
Cinder is an API that allows you to
dynamically create/attach/detach disks
to your Nova instance.
Deep thoughts.
How it works…
● Plugin architecture, use whatever storage backend you want
● Consistent API, agnostic to the infrastructure
● Expose differentiating features via custom volume-types and
extra-specs
Reference Implementation Included
 Includes code to provide a base implementation using LVM (just add disks)
 Great for POC and getting started
 Sometimes good enough
 Might be lacking for your performance, H/A and Scaling needs (it all depends)
 Can Scale by adding Nodes
 Cinder-Volume Node utilizes it’s local disks (allocate by creating an LVM VG)
 Cinder Volumes are LVM Logical Volumes, with an iSCSI target created for eac
 Typical max size recommendations per VG/Cinder-Volume backend ~ 5 TB
 No Redundancy (yet)
When LVM is not Enough…
Datera
fujitsu_eternus
Fusionio
hitachi-hbsd
hauwei
Nimble
Prophetstor
pure
Zfssa
netapp
coraid
emc-vmax
emc-xtremio
eqlx
glusterfc
hds
ibm-gpfs
ibm-xiv
Lvm
Nfs
nexenta
Ceph RBD
HP-3Par
HP-LeftHand
scality
sheepdog
smbfs
solidfire
vmware-vmdk
window-hyperv
zadara
Choosing a Vendor = the Hardest Part
 Ask yourself:
 Does it scale? How?
 Is it tested? Will it really work in OpenStack?
 How is it supported?
 How is performance and how does it handle noisy neighbors?
 Is the vendor active in the community?
 How easy is it to stand up?
Now…a word from our Sponsor
All-flash storage platform
for the next generation data center.
Scale-Out
Infrastructure Agility
Guaranteed
Quality of Service
Complete
System Automation
In-Line Data
Reduction
Self Healing
High Availability
 SolidFire Cinder driver enables all OpenStack
block storage features
 Ability to set and maintain true QoS levels
on a per-volume basis
 Create, snap, clone and manage SolidFire
volumes directly
 Run OpenStack instances on a SolidFire volume
 Eliminates arduous management layers between
OpenStack and the storage system
 SolidFire driver fully integrated into OpenStack -
no additional features / licenses required
Customer SuccessDeep OpenStack Integration Validated Interoperability
The Block Storage Choice for OpenStack
SolidFire and Cinder
 SolidFire led the creation of Cinder (break out from Nova)
 Full SolidFire driver integration with every new OpenStack release
 Set and maintain true QoS levels on a per-volume basis
 Web-based API exposing all cluster functionality
 SolidFire integration with OpenStack Cinder can be configured in less than a
minute
 Seamless scaling after initial configuration
 Full multi-tenant isolation
Configuring SolidFire in <60 Seconds
Edit the cinder.conf file
• volume_driver=cinder.volume.solidfire.SolidFire
• san_ip=172.17.1.182
• san_login=openstack-admin
• san_password=superduperpassword
Eliminating Noisy Neighbor
The Noisy Neighbor Effect
 Individual tenant impacts other applications
 Unsuitable for performance sensitive apps
SolidFire QoS in Practice
 Create fine-grained tiers of performance
 Application performance is isolated
 Performance SLAs enforced
Noisy Neighbor Performance 0
Performance 1
Performance 2
Performance 3
Decreased
Performance
Creating Volume-Types and Extra-Specs
griff@stack-1: cinder type create super
+--------------------------------------+-------+
| ID | Name |
+--------------------------------------+-------+
| c506230f-eb08-4d4e-82e2-7a88eb779bda | super |
+--------------------------------------+-------+
griff@stack-1: cinder type create super-dooper
+--------------------------------------+--------------+
| ID | Name |
+--------------------------------------+--------------+
| 918cf343-1f3d-4508-bb69-cd0e668ae297 | super-dooper |
+--------------------------------------+--------------+
griff@stack-1: cinder type-key super set volume_backend_name=LVM_iSCSI
griff@stack-1: cinder type-key super-dooper set volume_backend_name=SolidFire 
qos:minIOPS=400 qos:maxIOPS=1000 qos:burstIOPS=2000
Configuring Storage for DBaaS
• Database as a Service
– Provisioning simplification
– Automation and SDS
– Guarantee service levels
– Protect against problem users
– Advanced functionality: data set deployment
Configuring Storage for DBaaS
• IOPS and Bandwidth (QoS)
– Min IOPS guarantees
– Max IOPS ceilings
– Burst IOPS credits
– Alternatively gate/allow by bandwidth
Configuring Storage for DBaaS
• MySQL Workload Characteristics
– 16K avg block size
– Flushing can be bursty
– Depends on various tunings (innodb_io_capacity)
– Set Max IOPS and Burst accordingly
• Other DB Workload Characteristics
– 4K to 64k avg block size (or larger)
– Flushing can be very bursty
– Sometimes controllable
– Set Max IOPS and Burst to match DBMS profile
Boom. Time for Tesora.
OpenStack Trove: Database as a Service
• Simplifies use of databases in the enterprise
• Not another database
• Currently supports
• MySQL
• Percona
• MariaDB
• PostgreSQL
• MongoDB
• CouchDB
• Couchbase
• Redis
• Vertica
• DB2 – Express
The OpenStack Open Source Database as a Service
Mission: To provide scalable and reliable Cloud
Database as a Service provisioning functionality for
both relational and non-relational database engines,
and to continue to improve its fully-featured and
extensible open source framework.
https://wiki.openstack.org/wiki/Trove
The load that databases place on infrastructure
• Compute
• Storage
• Random Access
• Periodicity
• Write pattern
What this means to me (as an administrator)
What should I monitor?
• Compute:
• Utilization, context switches, steals
• Storage
• Disk Utilization
• I/O Queue Length
• Average I/O wait
Trove Architecture
Storage Performance
• Why it matters
• Things databases do to improve storage performance
• What’s the ideal storage for a database?
Contact
• Amrith Kumar
• Founder & CTO, Tesora
• @amrithkumar
• IRC: amrith @freenode
• Tesora
• www.tesora.com
• @tesoracorp
• Sign up for Short Stack, our informative weekly newsletter about OpenStack
What’s next for DBaaS/Storage?
• Tighter integration between Cinder and Trove
• Up-level Cinder API call in Trove
• Surface more granular storage options
• Enable per-database storage customization
Thank You

Leveraging OpenStack Cinder for Peak Application Performance

  • 1.
  • 2.
    The All-Flash Arrayfor the Next Generation Data Center
  • 3.
    • Storage andOpenStack – What do you mean when you say ‘storage’ – Object vs. block • What is Cinder? • Considerations when thinking about a Cinder backend • Configuring your storage for DBaaS • OpenStack Trove and DBaaS • The Future: Starring Trove and SolidFire Agenda
  • 4.
     Deploy newapplications and services faster  Provide more agile and scalable infrastructure  Increase application performance and predictability  Enable automation and end-user self-service  Raise operational efficiency and reduce cost The IT Innovation Imperative OpenStack is driving the transformation of Enterprise IT globally
  • 5.
    So…What do youmean when you say ‘storage’ ?
  • 6.
    Storage. Storage. Storage.Storage. Hodor. ● Ephemeral • Non-persistent • Lifecycle coincides with a Nova instance ● Object • Manages data as.. well, an Object • Think unstructured data (Mp4) • Typically referred to “cheap and deep” • Usually runs on spinny drives • In OpenStack: Swift ● Files System • We all love NFS and CIFS…right!? ● Block • Foundation for the other types • Think raw disk • Typically higher performance • Cinder
  • 7.
    Block vs. ObjectStorage Block Storage Object Storage What does it do? ● Storage for running VM disk volumes on a host ● Ideal for performance sensitive apps ● Enables Amazon EBS-like service ● Ideal for cost effective, scale-out storage ● Fully distributed, API-accessible ● Well suited for backup, archiving, data retention ● Enables Dropbox-like service Use Cases ● Production Applications ● Traditional IT Systems ● Database Driven Apps ● Messaging / Collaboration ● Dev / Test Systems ● VM Templates ● ISO Images ● Disk Volume Snapshots ● Backup / Archive ● Image / Video Repository Workloads ● High Change Content ● Smaller, Random R/W ● Higher / “Bursty” IO ● Typically More Static Content ● Larger, Sequential R/W ● Lower IOPS
  • 8.
  • 9.
    Cinder Mission Statement Toimplement 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.
  • 10.
    Huh? Very Simple. Cinder isan API that allows you to dynamically create/attach/detach disks to your Nova instance.
  • 11.
  • 12.
    How it works… ●Plugin architecture, use whatever storage backend you want ● Consistent API, agnostic to the infrastructure ● Expose differentiating features via custom volume-types and extra-specs
  • 13.
    Reference Implementation Included Includes code to provide a base implementation using LVM (just add disks)  Great for POC and getting started  Sometimes good enough  Might be lacking for your performance, H/A and Scaling needs (it all depends)  Can Scale by adding Nodes  Cinder-Volume Node utilizes it’s local disks (allocate by creating an LVM VG)  Cinder Volumes are LVM Logical Volumes, with an iSCSI target created for eac  Typical max size recommendations per VG/Cinder-Volume backend ~ 5 TB  No Redundancy (yet)
  • 14.
    When LVM isnot Enough… Datera fujitsu_eternus Fusionio hitachi-hbsd hauwei Nimble Prophetstor pure Zfssa netapp coraid emc-vmax emc-xtremio eqlx glusterfc hds ibm-gpfs ibm-xiv Lvm Nfs nexenta Ceph RBD HP-3Par HP-LeftHand scality sheepdog smbfs solidfire vmware-vmdk window-hyperv zadara
  • 15.
    Choosing a Vendor= the Hardest Part  Ask yourself:  Does it scale? How?  Is it tested? Will it really work in OpenStack?  How is it supported?  How is performance and how does it handle noisy neighbors?  Is the vendor active in the community?  How easy is it to stand up?
  • 16.
    Now…a word fromour Sponsor
  • 17.
    All-flash storage platform forthe next generation data center. Scale-Out Infrastructure Agility Guaranteed Quality of Service Complete System Automation In-Line Data Reduction Self Healing High Availability
  • 18.
     SolidFire Cinderdriver enables all OpenStack block storage features  Ability to set and maintain true QoS levels on a per-volume basis  Create, snap, clone and manage SolidFire volumes directly  Run OpenStack instances on a SolidFire volume  Eliminates arduous management layers between OpenStack and the storage system  SolidFire driver fully integrated into OpenStack - no additional features / licenses required Customer SuccessDeep OpenStack Integration Validated Interoperability The Block Storage Choice for OpenStack
  • 19.
    SolidFire and Cinder SolidFire led the creation of Cinder (break out from Nova)  Full SolidFire driver integration with every new OpenStack release  Set and maintain true QoS levels on a per-volume basis  Web-based API exposing all cluster functionality  SolidFire integration with OpenStack Cinder can be configured in less than a minute  Seamless scaling after initial configuration  Full multi-tenant isolation
  • 20.
    Configuring SolidFire in<60 Seconds Edit the cinder.conf file • volume_driver=cinder.volume.solidfire.SolidFire • san_ip=172.17.1.182 • san_login=openstack-admin • san_password=superduperpassword
  • 21.
    Eliminating Noisy Neighbor TheNoisy Neighbor Effect  Individual tenant impacts other applications  Unsuitable for performance sensitive apps SolidFire QoS in Practice  Create fine-grained tiers of performance  Application performance is isolated  Performance SLAs enforced Noisy Neighbor Performance 0 Performance 1 Performance 2 Performance 3 Decreased Performance
  • 22.
    Creating Volume-Types andExtra-Specs griff@stack-1: cinder type create super +--------------------------------------+-------+ | ID | Name | +--------------------------------------+-------+ | c506230f-eb08-4d4e-82e2-7a88eb779bda | super | +--------------------------------------+-------+ griff@stack-1: cinder type create super-dooper +--------------------------------------+--------------+ | ID | Name | +--------------------------------------+--------------+ | 918cf343-1f3d-4508-bb69-cd0e668ae297 | super-dooper | +--------------------------------------+--------------+ griff@stack-1: cinder type-key super set volume_backend_name=LVM_iSCSI griff@stack-1: cinder type-key super-dooper set volume_backend_name=SolidFire qos:minIOPS=400 qos:maxIOPS=1000 qos:burstIOPS=2000
  • 23.
    Configuring Storage forDBaaS • Database as a Service – Provisioning simplification – Automation and SDS – Guarantee service levels – Protect against problem users – Advanced functionality: data set deployment
  • 24.
    Configuring Storage forDBaaS • IOPS and Bandwidth (QoS) – Min IOPS guarantees – Max IOPS ceilings – Burst IOPS credits – Alternatively gate/allow by bandwidth
  • 25.
    Configuring Storage forDBaaS • MySQL Workload Characteristics – 16K avg block size – Flushing can be bursty – Depends on various tunings (innodb_io_capacity) – Set Max IOPS and Burst accordingly • Other DB Workload Characteristics – 4K to 64k avg block size (or larger) – Flushing can be very bursty – Sometimes controllable – Set Max IOPS and Burst to match DBMS profile
  • 26.
  • 27.
    OpenStack Trove: Databaseas a Service • Simplifies use of databases in the enterprise • Not another database • Currently supports • MySQL • Percona • MariaDB • PostgreSQL • MongoDB • CouchDB • Couchbase • Redis • Vertica • DB2 – Express The OpenStack Open Source Database as a Service Mission: To provide scalable and reliable Cloud Database as a Service provisioning functionality for both relational and non-relational database engines, and to continue to improve its fully-featured and extensible open source framework. https://wiki.openstack.org/wiki/Trove
  • 28.
    The load thatdatabases place on infrastructure • Compute • Storage • Random Access • Periodicity • Write pattern What this means to me (as an administrator) What should I monitor? • Compute: • Utilization, context switches, steals • Storage • Disk Utilization • I/O Queue Length • Average I/O wait
  • 29.
  • 30.
    Storage Performance • Whyit matters • Things databases do to improve storage performance • What’s the ideal storage for a database?
  • 31.
    Contact • Amrith Kumar •Founder & CTO, Tesora • @amrithkumar • IRC: amrith @freenode • Tesora • www.tesora.com • @tesoracorp • Sign up for Short Stack, our informative weekly newsletter about OpenStack
  • 32.
    What’s next forDBaaS/Storage? • Tighter integration between Cinder and Trove • Up-level Cinder API call in Trove • Surface more granular storage options • Enable per-database storage customization
  • 34.

Editor's Notes

  • #3 Do not talk about these 5 elements SolidFire was born out of large scale cloud computing at Rackspace Solving a specific problem Informed our target customer Informed our featured set… Dave Wright history, born from the cloud Storage array not built by storage people, but built by cloud people. New storage architectures driving changes in storage demands – reacting to the demands driven my changes in compute
  • #24 When you’re configuring your storage layer to serve as the foundation for Database as a Service, there are several fundamental goals that need to be achieved: Provisioning simplification. The data storage volumes for the end-user databases should be easy to configure and deploy. Fundamentally this means an API call to a storage service, such as Cinder. The underlying storage system should be completely compatible with Cinder and make use of all the rich functionality of that service. Automation and Software Defined Storage – the ability to completely integrate demands that the storage layer be API driven, and fit the Software Defined Storage model, in order to enable lights out operations. You need to be able to guarantee services levels, not just at the compute and memory layers of the platform stack, but at the storage layer as well. This requires a metric-based Quality of Service mechanism that is a core architectural component of the shared storage system. To that end, you have to be able to protect against problem users, so as to solve the ‘noisy neighbor’ problem that is the bane of most shared storage scenarios. In addition to the basics, advanced functionality such as automated data-set deployment is a next-level type of feature that can greatly speed development iteration times, as well as accelerate production deployment scenarios. This can be programmed in to a DBaaS architecture, if the foundation storage layer has modern quick snap and clone capabilities accessible via API.
  • #25 Let’s get a little deeper with IOPS and Bandwidth in the context of Database as a Service, and the Quality of Service capabilities that really make those things definable and configurable. Quality of Service can’t be a priority based or best-effort scenario if SLAs are involved. To enable measurable SLAs, metric-based QoS is required: Minimum IOPS guarantees define the floor of the service level. This is the protected number of IOs per second that any given database can count on. Production databases will necessarily require a higher minimum IOPS level than, say, development or QA instances. Maximum IOPS ceilings define the third rail for database applications.. Exceed that max limit, and you get pushback. This protects the entire DBaaS system against noisy neighbors, problem users, cartesean products and other scenarios that would normally cause IOPS starvation for the other users of the shared storage layer In addition to Mins and Maxes, Burst IOPS levels should be configurable to allow for short variations in workload, if the IOPS are available in the system. Alternatively, the various QoS designations can be done by looking at the MB/s of the database application, if the block transfer sizes are variable and don’t lend themselves well to a pure IOPS definition.
  • #26 Some considerations that need to be taken in to account when configuring storage volumes for DBaaS depend on the workload characteristics of the DBMS. MySQL, or instance, generally has a 16K average block size. The periodic flushing of dirty pages to disk can be bursty, and the frequency and duration can be affected by various tunings, such as innodb_io_capacity, or max_dirty_pages_percent. The max IOPS and burst configurations should be set accordingly to account for tested MySQL IO profiles. Other database workloads will have different and various chacteristics. Some will have an average 4K block size, others 64K (or larger). Flushing behavior can be VERY bursty, and sometimes that variation can be controllable, such as with MongoDB (much less so with say, SQL Server). The settings for max IOPS and burst need to be carefully matched to each DBMS profile.