The HPC Cloud offers both block storage, in the form of disk volumes which can be directly attached to a server, and file storage, in the form of shared filesystems which can be NFS-mounted by the operating system. In addition, there is an object store providing containers (also called buckets) which allow data to be accessed from multiple clients though standard REST APIs. 1 The block and object storage services are based on Ceph, while file storage offers a choice between CephFS and IBM Storage Scale (GPFS). The latter is also mounted on Raven (by default) as well as Robin (on request) for efficient exchange of data between the various systems.
Storage volumes are logically independent block devices of arbitrary size. They can be attached to a running server and later detached or even reattached to a different server. 2 Typically, volume are used to store data which should persist beyond the lifetime of a single instance, although they are also useful as “scratch” space.
Create an empty volume via the button on Project / Volumes / Volumes. The maxiumum allowable size depends on your project’s quota. The default volume type Ceph stores data on an HDD-based pool. There is also type CephSSD, available on request, which targets an SSD-based pool, offering potentially higher performance and lower latency.
Select a server from Project / Compute / Instances, perform the action, and pick the newly created volume.
A new block device with a name like /dev/vdb should be detected by the operating system (listed here in the “attached to” column). Create and mount a new filesystem using the following example commands:
mkfs.xfs /dev/vdb mkdir /demovol echo "/dev/vdb /demovol xfs defaults 0 0" >> /etc/fstab mount /demovol
openstack volume create VOLUME --size SIZE [--type TYPE]
openstack server add volume SERVER VOLUME
It is possible to migrate an existing volume to a new type online, even while still attached to a the server. Simply click the “Change Volume Type” action, choose the target type, and set the migration policy to “On Demand”. The data will then be transparently copied to the new backend storage pool.
openstack volume set VOLUME --type TYPE --retype-policy on-demand
Projects can deploy a parallel filesystem within the HPC-cloud, upon request, via Nexus-Posix. Nexus-Posix is based on IBM Spectrum Scale, a high performance parallel filesystem, and can be mounted on both HPC Cloud VMs and the Raven HPC system. This cross mounting allows projects to easily access data from both cloud and HPC systems, allowing for hybrid, HPC+Cloud, solutions.
Highlights of Nexus-Posix include:
May be mounted on Raven HPC system and multiple HPC Cloud VMs
Data Security - Automatic backup included
Possible high performance data transfers and sharing via Globus (GO-Nexus)
Reservations can be increased as projects grow
Nexus-Posix reservations can be requested by projects starting at 5TB and ranging into 100s of TBs. For more information, please make a request via the MPCDF helpdesk.
The HPC Cloud includes an object store for saving and retrieving data through a publicly-accessible REST API. Both OpenStack Swift- and S3-style APIs are supported. Objects are stored in containers (or buckets) which in turn belong to the project (or tenant). Folders within buckets are supported but typically handled as a part of the object name.
Please be aware that the contents of public buckets are not only visible but can be modified by anyone on the internet.
Create a new bucket via the button on Project / Object Store / Containers. Note that buckets, both public and private, share a global namespace. If a bucket name is already taken by another project you will receive an error message.
Select the bucket and click the button to upload a file. The object name (confusingly labeled “File Name”) defaults to the filename, but may be an arbitrary string. You may create a folder for the object at the same time by prepending one or more names, separated by “/”.
If you created a public bucket, the contents of the file would then be available at, e.g.: https://objectstore.hpccloud.mpcdf.mpg.de/swift/v1/demobucket/demofolder/demoobject or https://objectstore.hpccloud.mpcdf.mpg.de/demobucket/demofolder/demoobject
openstack container create BUCKET
openstack object create BUCKET FILE --name FOLDER/OBJECT
Object store quotas are separate from those of other storage types, and are not displayed on the dashboard. For questions about your quota, please contact the helpdesk. Note that while the Ceph backend itself supports very large objects, uploads through the dashboard and Swift API are limited to 5GB. 3 Use the S3 API to avoid this limitation.
Note that the term container is unrelated to Docker containers. Where possible we use bucket to avoid confusion.
Attaching a volume to multiple servers simultaneously is not supported.
openstackcommand also uses the Swift API and is therefore subject to the same limitation. Note that the
--segment-sizefeature of the older
swiftcommand splits the file into a collection of smaller objects which cannot easily be downloaded by other clients.