GlusterFS driver

GlusterFS driver uses GlusterFS, an open source distributed file system, as the storage backend for serving file shares to Manila clients.

Supported shared filesystems

  • NFS (access by IP)

Supported Operations

  • Create NFS Share
  • Delete NFS Share
  • Allow NFS Share access
    • only ‘rw’ access
  • Deny NFS Share access

Requirements

  • Install glusterfs-server package, version >= 3.5.x, on the storage backend.
  • Install NFS-Ganesha, version >=2.1, if using NFS-Ganesha as the NFS server for the GlusterFS backend.
  • Install glusterfs and glusterfs-fuse package, version >=3.5.x, on the Manila host.
  • Establish network connection between the Manila host and the storage backend.

Manila driver configuration setting

The following parameters in the Manila’s configuration file need to be set:

  • share_driver = manila.share.drivers.glusterfs.GlusterfsShareDriver

  • If the backend GlusterFS server runs on the Manila host machine,

    • glusterfs_target = <glustervolserver>:/<glustervolid>

    And if the backend GlusterFS server runs remotely,

    • glusterfs_target = <username>@<glustervolserver>:/<glustervolid>

The following configuration parameters are optional:

  • glusterfs_nfs_server_type = <NFS server type used by the GlusterFS

    backend, Gluster or Ganesha. Gluster is the default type>

  • glusterfs_mount_point_base = <base path of GlusterFS volume mounted on

    Manila host>

  • glusterfs_path_to_private_key = <path to Manila host’s private key file>

  • glusterfs_server_password = <password of remote GlusterFS server machine>

Known Restrictions

  • The driver does not support network segmented multi-tenancy model, but instead works over a flat network, where the tenants share a network.
  • If NFS Ganesha is the NFS server used by the GlusterFS backend, then the shares can be accessed by NFSv3 and v4 protocols. However, if Gluster NFS is used by the GlusterFS backend, then the shares can only be accessed by NFSv3 protocol.
  • All Manila shares, which map to subdirectories within a GlusterFS volume, are currently created within a single GlusterFS volume of a GlusterFS storage pool.
  • The driver does not provide read-only access level for shares.

The manila.share.drivers.glusterfs Module

Flat network GlusterFS Driver.

Manila shares are subdirectories within a GlusterFS volume. The backend, a GlusterFS cluster, uses one of the two NFS servers, Gluster-NFS or NFS-Ganesha, based on a configuration option, to mediate access to the shares. NFS-Ganesha server supports NFSv3 and v4 protocols, while Gluster-NFS server supports only NFSv3 protocol.

TODO(rraja): support SMB protocol.

class GaneshaNFSHelper(execute, config_object, **kwargs)

Bases: manila.share.drivers.ganesha.GaneshaNASHelper

get_export(share)
init_helper()
shared_data = {}
class GlusterNFSHelper(execute, config_object, **kwargs)

Bases: manila.share.drivers.ganesha.NASHelperBase

Manage shares with Gluster-NFS server.

allow_access(base, share, access)

Allow access to a share.

deny_access(base, share, access)

Deny access to a share.

get_export(share)
class GlusterNFSVolHelper(execute, config_object, **kwargs)

Bases: manila.share.drivers.glusterfs.GlusterNFSHelper

Manage shares with Gluster-NFS server, volume mapped variant.

allow_access(base, share, access)

Allow access to a share.

deny_access(base, share, access)

Deny access to a share.

class GlusterfsShareDriver(*args, **kwargs)

Bases: manila.share.driver.ExecuteMixin, manila.share.driver.GaneshaMixin, manila.share.drivers.glusterfs.layout.GlusterfsShareDriverBase

Execute commands relating to Shares.

GLUSTERFS_VERSION_MIN = (3, 5)
check_for_setup_error()
do_setup(context)
get_network_allocations_number()
supported_layouts = ('layout_directory.GlusterfsDirectoryMappedLayout', 'layout_volume.GlusterfsVolumeMappedLayout')
supported_protocols = ('NFS',)