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 GNFSHelper(execute, config_object)
- Bases: manila.share.drivers.ibm.gpfs.NASHelperBase - Wrapper for Ganesha NFS Commands. - 
- 
allow_access(local_path, share, access_type, access)
- Allow access to the host. 
 - 
- 
deny_access(local_path, share, access_type, access, force=False)
- Deny access to the host. 
 - 
- 
remove_export(local_path, share)
- Remove export. 
 
- 
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 
 - 
- 
allow_access(ctx, share, access, share_server=None)
- Allow access to the share. 
 - 
- 
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. 
 - 
- 
deny_access(ctx, share, access, share_server=None)
- Deny access to the share. 
 - 
- 
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()
 
- 
class KNFSHelper(execute, config_object)
- Bases: manila.share.drivers.ibm.gpfs.NASHelperBase - Wrapper for Kernel NFS Commands. - 
- 
allow_access(local_path, share, access_type, access)
- Allow access to one or more vm instances. 
 - 
- 
deny_access(local_path, share, access_type, access, force=False)
- Remove access for one or more vm instances. 
 - 
- 
remove_export(local_path, share)
- Remove export. 
 
- 
class NASHelperBase(execute, config_object)
- Bases: object - Interface to work with share. - 
- 
allow_access(local_path, share, access_type, access)
- Allow access to the host. 
 - 
- 
create_export(local_path)
- Construct location of new export. 
 - 
- 
deny_access(local_path, share, access_type, access, force=False)
- Deny access to the host. 
 - 
- 
remove_export(local_path, share)
- Remove export.