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

  • NFS (access by IP)

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.