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.