1. Home
  2. OpenStack
  3. How to use GPFS with Bright Openstack 7.3 and higher.

How to use GPFS with Bright Openstack 7.3 and higher.

How can Bright OpenStack be connected with GPFS?

This article explains how GPFS can be set up as a storage backend for Bright OpenStack (Cinder, Nova, Glance)

This article does not discuss how to migrate your data to GPFS. Support should be contacted for that for that, and the database will need to be edited to change the paths of the volumes and the images.

These steps can be applied to all of the components or to one of them only.
The best thing to do is to use GPFS as a unified storage for all of the cluster. There will be CoW benefits which will save time and storage space.

The following KB article describes how to create a GPFS cluster in Bright: https://kb.brightcomputing.com/knowledge-base/how-do-i-integrate-gpfs-with-bright/

Configuring Cinder :

These commands can be followed to configure Cinder:

[root@ib-dev ~]# cmsh
[ib-dev]% configurationoverlay
[ib-dev->configurationoverlay]% use openstackcontrollers
[ib-dev->configurationoverlay[OpenStackControllers]]% roles
[ib-dev->configurationoverlay[OpenStackControllers]->roles]% use openstack::volume
[ib-dev->configurationoverlay[OpenStackControllers]->roles[OpenStack::Volume]]% volumebackends
[ib-dev->configurationoverlay[OpenStackControllers]->roles[OpenStack::Volume]->volumebackends]% add ?

Name:

         add - Create a new openstackvolumebackend of the given type with specified name

Usage:

         add <type> <name>

Arguments:

         type

              3par, ceph, dellstoragecenter, gpfs, nfs, netapp, solidfire

[ib-dev->configurationoverlay[OpenStackControllers]->roles[OpenStack::Volume]->volumebackends]%

As the help text suggests, there are multiple storage backends supported for Cinder in Bright Openstack. It is gpfs that should be chosen here:

[ib-dev->configurationoverlay[OpenStackControllers]->roles[OpenStack::Volume]->volumebackends]% add gpfs gpfs

[ib-dev->configurationoverlay*[OpenStackControllers*]->roles*[OpenStack::Volume*]->volumebackends*[gpfs*]]% show

Parameter                        Value
-------------------------------- ------------------------------------------------
Name                             gpfs
Revision
Type                             OpenStackVolumeBackendGPFS
Volume driver
Images directory
Images share mode                Copy On Write
Max clone depth                  0
Mount point base
Sparse volumes                   yes
Storage pool                     system

[ib-dev->configurationoverlay*[OpenStackControllers*]->roles*[OpenStack::Volume*]->volumebackends*[gpfs*]]%

There are many options that can be set. The most important are :

  • Images Directory -> this is the path of glance images. It should only be set if GPFS is used for Glance as well.
  • Mount point base -> This is the mountpoint on GPFS intended to be used for Cinder
  • Storage pool   -> This is the storage pool name assigned for the GPFS NSD that will be used for Cinder.


Example :

[ib-dev->configurationoverlay*[OpenStackControllers*]->roles*[OpenStack::Volume*]->volumebackends*[gpfs*]]% show

Parameter                        Value
-------------------------------- ------------------------------------------------
Name                             gpfs
Revision
Type                             OpenStackVolumeBackendGPFS
Volume driver
Images directory
Images share mode                Copy On Write
Max clone depth                  0
Mount point base
Sparse volumes                   yes
Storage pool                     system

[ib-dev->configurationoverlay*[OpenStackControllers*]->roles*[OpenStack::Volume*]->volumebackends*[gpfs*]]% set imagesdirectory /gpfs1/glance

[ib-dev->configurationoverlay*[OpenStackControllers*]->roles*[OpenStack::Volume*]->volumebackends*[gpfs*]]% set mountpointbase /gpfs/cinder

Before committing, the other backend must be removed. Otherwise, if it is intended that multiple backends are to be used, then this KB article can be followed: https://kb.brightcomputing.com/knowledge-base/how-can-i-add-multiple-storage-backends-to-bright-openstack/

[ib-dev->configurationoverlay[OpenStackControllers]->roles[OpenStack::Volume]->volumebackends[gpfs]]% ..

[ib-dev->configurationoverlay[OpenStackControllers]->roles[OpenStack::Volume]->volumebackends]% remove nfs

[ib-dev->configurationoverlay*[OpenStackControllers*]->roles*[OpenStack::Volume*]->volumebackends*]% commit

Cinder should now be configured to use GPFS.

Configuring Glance

The following procedure can be followed for Glance:

[root@ib-dev ~]# cmsh
use[ib-dev]% configurationoverlay
[ib-dev->configurationoverlay]% use openstackcontrollers
[ib-dev->configurationoverlay[OpenStackControllers]]% roles
[ib-dev->configurationoverlay[OpenStackControllers]->roles]% use openstack::imageapi
[ib-dev->configurationoverlay[OpenStackControllers]->roles[OpenStack::ImageApi]]% imagebackends
[ib-dev->configurationoverlay[OpenStackControllers]->roles[OpenStack::ImageApi]->imagebackends]% add ?

Name:

         add – Create a new openstackimagebackend of the given type with specified name

Usage:

         add <type> <name>

Arguments:

         type

              ceph, filesystem

[ib-dev->configurationoverlay[OpenStackControllers]->roles[OpenStack::ImageApi]->imagebackends]%

What needs to be added is a filesystem. There are no special properties for Glance on GPFS:

[ib-dev->configurationoverlay[OpenStackControllers]->roles[OpenStack::ImageApi]->imagebackends]% add filesystem gpfs

[ib-dev->configurationoverlay*[OpenStackControllers*]->roles*[OpenStack::ImageApi*]->imagebackends*[gpfs*]]% show

Parameter                         Value
--------------------------------- ------------------------------------------------
Default Store
Filesystem mounts                 <0 in submode>
Name                              gpfs
Revision
Show Image Direct URL             yes
Type                              OpenStackImageBackendFS
Filesystem backend storage path   /cm/shared/apps/openstack/glance-images

[ib-dev->configurationoverlay*[OpenStackControllers*]->roles*[OpenStack::ImageApi*]->imagebackends*[gpfs*]]%

Thefilesystembackendstoragepath needs to be set to the mount point of the GPFS that is to be used for Glance :

[ib-dev->configurationoverlay*[OpenStackControllers*]->roles*[OpenStack::ImageApi*]->imagebackends*[gpfs*]]% set filesystembackendstoragepath /gpfs1/glance

[ib-dev->configurationoverlay*[OpenStackControllers*]->roles*[OpenStack::ImageApi*]->imagebackends*[gpfs*]]% show

The other backend should be removed, and the changes committed.

Configuring Nova

The configuration for Nova can be carried out as follows:

[ib-dev->configurationoverlay[OpenStackHypervisors]->roles[OpenStack::Compute]->imagebackends[gpfs]]%remove cow_over_nfs_cmshared

[ib-dev->configurationoverlay[OpenStackHypervisors]->roles[OpenStack::Compute]->imagebackends[gpfs]]%add cow gpf

[ib-dev->configurationoverlay[OpenStackHypervisors]->roles[OpenStack::Compute]->imagebackends[gpfs]]%commit

[ib-dev->configurationoverlay[OpenStackHypervisors]->roles[OpenStack::Compute]->imagebackends[gpfs]]%..

[ib-dev->configurationoverlay[OpenStackHypervisors]->roles[OpenStack::Compute]->imagebackends[gpfs]]%..

[ib-dev->configurationoverlay[OpenStackHypervisors]->roles[OpenStack::Compute]->imagebackends[gpfs]]%set novastatepath /gpfs1/nova

novastatepath has been set in the preceding to /gpfs1/nova as this is the mount point dedicated to Nova.

The Cinder and Glance components on the controllers node should now be restarted. One way to do this is to use foreach on the controllers. For example:

#cmsh
%device
%foreach -n controller1..controller3 ( services ; restart openstack-cinder-* ; restart openstack-glance-*)

openstack-nova-compute should now be restarted on all of the hypervisors:

#cmsh
%device
%foreach -n hyper1..hyper20 ( services ; restart openstack-nova-compute )

The procedure should now be complete. Starting instances and uploading images on the GPFS backend should now be possible.

Updated on December 9, 2020

Related Articles

Leave a Comment