jclouds 1.5.3 was officially released over the weekend. Another solid release from the jclouds community. Among a number of new features was the support I added for OpenStack Cinder and Rackspace Cloud Block Storage.
Cinder is the OpenStack block storage service. On physical machines, examples of block storage devices are hard drives and USB sticks. Cinder allows you to create persistent virtual block storage devices as volumes that can be attached to servers and mounted with filesystems. This means you can store any data on the volumes and that data will persist even if your server is terminated.
From an OpenStack API perspective there's some historical context that will help you understand Cinder. Cinder was born out of the need to create an independent block storage service. However, originally, there was a block storage service in OpenStack called nova-volume that had its own API but was officially part of the Nova API. A new service for Cinder in OpenStack Folsom means a new Cinder API but this API was an exact copy of the nova-volume API in OpenStack Essex. This was done very deliberately to maintain backwards compatibility and ease the transition from nova-volume to Cinder. Both APIs now exist in Folsom but the Cinder API is the path forward where all new efforts will be focused.
Rackspace Cloud Block Storage
Cloud Block Storage (CBS) is Rackspace's deployment of Cinder. This means it's the Rackspace service that allows you to create volumes via the Cloud Control Panel, the CBS (Cinder) API, or jclouds! You can create standard volumes that work well for your everyday file system needs, and SSD volumes that deliver even higher performance for databases and other I/O-intensive applications. It also allows you to easily create a snapshot of your existing volumes that effectively act as a point-in-time backup.
To get started with jclouds and Cloud Block Storage check out the Getting Started: The Rackspace open cloud documentation, specifically the Working with Cloud Block Storage section. There are plenty of examples in the cloudblockstorage package of the Rackspace examples on how to use this essential new service. For instance, the CreateVolumeAndAttach.java is an end to end example of creating a volume, attaching it to a server, putting a filesystem on it, and mounting it for use to store persistent data.
Block storage is one of the fundamental building blocks (no pun intended) of computing. This has been an often requested feature for Rackspace and it's great to help other developers use it by providing support for Cloud Block Storage and Cinder in jclouds. I encourage you to upgrade to jclouds 1.5.3 and checkout these new features.