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.