GPFS Driver
GPFS driver uses IBM General Parallel File System (GPFS), a high-performance,
clustered file system, developed by IBM, as the storage backend for serving
file shares to the manila clients.
Supported shared filesystems
 
Supported Operations
- Create NFS Share
 
- Delete NFS Share
 
- Create Share Snapshot
 
- Delete Share Snapshot
 
- Create Share from a Share Snapshot
 
- Allow NFS Share access
- Currently only ‘rw’ access level is supported
 
 
- Deny NFS Share access
 
 
Requirements
- Install GPFS with server license, version >= 2.0, on the storage backend.
 
- Install Kernel NFS or Ganesha NFS server on the storage backend servers.
 
- If using Ganesha NFS, currently NFS Ganesha v1.5 and v2.0 are supported.
 
- Create a GPFS cluster and create a filesystem on the cluster, that will be
used to create the manila shares.
 
- Enable quotas for the GPFS file system (mmchfs -Q yes).
 
- Establish network connection between the manila host and the storage backend.
 
 
Manila driver configuration setting
The following parameters in the manila configuration file need to be set:
share_driver = manila.share.drivers.ibm.gpfs.GPFSShareDriver
 
gpfs_share_export_ip = <IP to be added to GPFS export string>
 
If the backend GPFS server is not running on the manila host machine, the
following options are required to SSH to the remote GPFS backend server:
gpfs_ssh_login = <GPFS server SSH login name>
and one of the following settings is required to execute commands over SSH:
 
gpfs_ssh_private_key = <path to GPFS server SSH private key for login>
 
gpfs_ssh_password = <GPFS server SSH login password>
 
 
The following configuration parameters are optional:
- gpfs_mount_point_base = <base folder where exported shares are located>
 
- gpfs_nfs_server_type = <KNFS|GNFS>
 
- gpfs_nfs_server_list = <list of the fully qualified NFS server names>
 
- gpfs_ssh_port = <ssh port number>
 
- knfs_export_options = <options to use when creating a share using kernel
 
- NFS server>
 
 
Restart of manila-share service is needed for the configuration changes to take
effect.
 
Known Restrictions
- The driver does not support a segmented-network multi-tenancy model but
instead works over a flat network where the tenants share a network.
 
- While using remote GPFS node, with Ganesha NFS, ‘gpfs_ssh_private_key’ for
remote login to the GPFS node must be specified and there must be a
passwordless authentication already setup between the manila share service
and the remote GPFS node.
 
The manila.share.drivers.ibm.gpfs Module
GPFS Driver for shares.
- Config Requirements:
 
- GPFS file system must have quotas enabled (mmchfs -Q yes).
 
- Notes:
 
- GPFS independent fileset is used for each share.
 
TODO(nileshb): add support for share server creation/deletion/handling.
- Limitation:
 
- While using remote GPFS node, with Ganesha NFS, ‘gpfs_ssh_private_key’
for remote login to the GPFS node must be specified and there must be
a passwordless authentication already setup between the Manila share
service and the remote GPFS node.
 
- 
class 
CESHelper(execute, config_object) 
Bases: manila.share.drivers.ibm.gpfs.NASHelperBase
Wrapper for NFS by Spectrum Scale CES
- 
allow_access(local_path, share, access) 
Allow access to the host.
- 
deny_access(local_path, share, access, force=False) 
Deny access to the host.
- 
get_access_option(access) 
Get access option string based on access level.
- 
remove_export(local_path, share) 
Remove export.
- 
resync_access(local_path, share, access_rules) 
Re-sync all access rules for given share.
- 
class 
GPFSShareDriver(*args, **kwargs) 
Bases: manila.share.driver.ExecuteMixin, manila.share.driver.GaneshaMixin, manila.share.driver.ShareDriver
GPFS Share Driver.
Executes commands relating to Shares.
Supports creation of shares on a GPFS cluster.
API version history:
1.0 - Initial version.
1.1 - Added extend_share functionality
2.0 - Added CES support for NFS Ganesha
- 
check_for_setup_error() 
Returns an error if prerequisites aren’t met.
- 
create_share(ctx, share, share_server=None) 
Create GPFS directory that will be represented as share.
- 
create_share_from_snapshot(ctx, share, snapshot, share_server=None) 
Is called to create share from a snapshot.
- 
create_snapshot(context, snapshot, share_server=None) 
Creates a snapshot.
- 
delete_share(ctx, share, share_server=None) 
Remove and cleanup share storage.
- 
delete_snapshot(context, snapshot, share_server=None) 
Deletes a snapshot.
- 
do_setup(context) 
Any initialization the share driver does while starting.
- 
ensure_share(ctx, share, share_server=None) 
Ensure that storage are mounted and exported.
- 
extend_share(share, new_size, share_server=None) 
Extends the quota on the share fileset.
- 
get_network_allocations_number() 
- 
manage_existing(share, driver_options) 
- 
update_access(context, share, access_rules, add_rules, delete_rules, share_server=None) 
Update access rules for given share.
- 
class 
KNFSHelper(execute, config_object) 
Bases: manila.share.drivers.ibm.gpfs.NASHelperBase
Wrapper for Kernel NFS Commands.
- 
allow_access(local_path, share, access, error_on_exists=True) 
Allow access to one or more vm instances.
- 
deny_access(local_path, share, access) 
Remove access for one or more vm instances.
- 
get_access_option(access) 
Get access option string based on access level.
- 
remove_export(local_path, share) 
Remove export.
- 
resync_access(local_path, share, access_rules) 
Re-sync all access rules for given share.
- 
class 
NASHelperBase(execute, config_object) 
Bases: object
Interface to work with share.
- 
allow_access(local_path, share, access) 
Allow access to the host.
- 
create_export(local_path) 
Construct location of new export.
- 
deny_access(local_path, share, access) 
Deny access to the host.
- 
get_access_option(access) 
Get access option string based on access level.
- 
get_export_options(share, access, helper) 
Get the export options.
- 
remove_export(local_path, share) 
Remove export.
- 
resync_access(local_path, share, access_rules) 
Re-sync all access rules for given share.