HPE Alletra MP B10000 Share Driver¶
The HPE Alletra MP B10000 Manila driver provides NFS file services to OpenStack using the HPE Alletra MP B10000 file service capabilities.
Supported shared filesystems¶
The driver supports NFS shares.
Operations supported¶
Create/delete a share.
Allow/deny share access.
Extend a share.
Manage/unmanage a share.
Create/delete a snapshot.
Revert to snapshot.
Mountable snapshot.
Manage/unmanage a snapshot.
Requirements¶
On the HPE Alletra MP B10000 array:
HPE Alletra MP B10000 Operating System software version 10.5.0 or higher
Fileservice must be enabled after configuring file ports.
Note
HPE Alletra MP B10000 Operating System software version 10.6.0 or later is required for snapshot operations.
Pre-configuration on HPE Alletra MP B10000¶
Before configuring the manila driver, the HPE Alletra MP B10000 array must be properly set up:
Required File ports must be configured. If File ports are not already configured, follow these steps:
To change the port persona to File, run the
showportcommand and check if slot 4 ports 1 & 2 are NVMe or iSCSI ports.If the ports are iSCSI, run the following commands to delete and configure them as file ports:
$ controliscsiport delete 0:4:1 $ controliscsiport delete 0:4:2 $ controliscsiport delete 1:4:1 $ controliscsiport delete 1:4:2
If the ports are NVMe, run the following commands to delete and configure them as file ports:
$ controlport nvme delete 0:4:1 $ controlport nvme delete 0:4:2 $ controlport nvme delete 1:4:1 $ controlport nvme delete 1:4:2
Once the ports are configured as file persona ports for slot 4, ports 1 and 2, reboot the cluster:
$ shutdownsys reboot
After the cluster comes up, assign IP addresses to all the ports (0:4:1, 0:4:2, 1:4:1, 1:4:2).
File service must be supported and enabled on the array
$ showfileservice $ setfileservice enable
Verify the WSAPI service is enabled and running
$ showwsapiThe array must have appropriate network configuration for client access
Driver configuration¶
The Manila configuration file (typically /etc/manila/manila.conf)
defines and configures the Manila drivers and backends. After updating the
configuration file, the Manila share service must be restarted for changes
to take effect.
All configuration options for this driver are documented in the Configuration Reference.
Enable share protocolsTo enable NFS share protocol, ensure that NFS is included in the
enabled_share_protocolssetting in theDEFAULTsection of themanila.conffile.[DEFAULT] enabled_share_protocols = NFS
Enable share backendsIn the
[DEFAULT]section of the Manila configuration file, use theenabled_share_backendsoption to specify the name of one or more backend configuration sections to be enabled. To enable multiple backends, use a comma-separated list.[DEFAULT] enabled_share_backends = hpealletra1
Note
The name of the backend’s configuration section is used (which may be different from the
share_backend_namevalue).For the backend, a configuration section defines the driver and backend options. These include common Manila options, as well as driver-specific options.
Driver Specific ConfigurationsThe following driver-specific options must be configured:
hpealletra_wsapi_url: The WSAPI V3 URL to the Alletra MP B10000. Must be in the formathttps://<alletra_ip>:8080/api/v3.hpealletra_username: Backend username with appropriate permissions. The user must have the ‘super’ or ‘edit’ role for file service management.hpealletra_password: Password for the user specified inhpealletra_username.hpealletra_debug: Boolean value. If set toTrue, WSAPI V3 API request and response logs will be displayed. Default isFalse.
Note
The driver uses HTTPS for secure communication with the array. Ensure that the Manila host can establish HTTPS connections to the array’s WSAPI endpoint.
Example ConfigurationThe following parameters show a sample subset of the
manila.conffile which configures a backend for HPE Alletra MP B10000:[DEFAULT] enabled_share_backends = hpealletra1 enabled_share_protocols = NFS [hpealletra1] share_driver = manila.share.drivers.hpe.alletra_mp_b10000.hpe_alletra_driver.HPEAlletraMPB10000ShareDriver share_backend_name = hpealletra1 driver_handles_share_servers = False hpealletra_wsapi_url = https://192.168.1.100:8080/api/v3 hpealletra_username = <username> hpealletra_password = <password> hpealletra_debug = False
Restart manila-share serviceAfter updating the configuration file, restart the Manila share service for changes to take effect:
Network Requirements¶
Network connectivity between the Manila host and storage array (WSAPI Endpoints)
is required for share management. The Manila share service must be able to
reach the WSAPI endpoint configured in hpealletra_wsapi_url.
Network connectivity between clients and the array’s file ports is required for mounting and using the shares.
The HPE Alletra MP B10000 driver does not support share networks
(supporting only driver_handles_share_servers=False option). Network
connectivity for share access must be configured outside of Manila.
Share types¶
When creating a share, the share type will be used to determine where and how the share will be created.
Manila requires that the share type includes the driver_handles_share_servers
extra-spec. This ensures that the share is created on a backend that supports
the requested driver_handles_share_servers (share networks) capability. For the
HPE Alletra MP B10000 driver, this option must be set to False.
Another common Manila extra-spec used to determine where a share is created
is share_backend_name. When this extra-spec is defined in the share type,
the share will be created on a backend with a matching share_backend_name.
To create a share type for the HPE Alletra MP B10000 backend:
$ openstack share type create alletra_nfs False
$ openstack share type set alletra_nfs --extra-specs share_backend_name=hpealletra1
Share type additional specs¶
The following driver-specific additional specs are supported by Alletra MP B10000.
hpe_alletra_b10000:reduceWhen the value is set to
true(orfalse), shares of this reduce type are created on the backend. The reduce setting is applied at share creation time and cannot be changed for existing shares.The
reduceparameter is used to control thecompressionanddedupcapabilities of the share.If reduce = true, compression = true & dedup = true.If reduce = false, compression = false & dedup = false.The reduce value can be controlled by including the reduce key as part of the share type. If the reduce key is not provided, its value defaults to
true.Alternatively, you can use the
compressionanddedupeparameters directly instead ofreduce, but you cannot specify bothreduceandcompression/dedupein the same share type.Example using reduce:
$ openstack share type set alletra_nfs --extra-specs hpe_alletra_b10000:reduce=true
Example using compression and dedupe as alternative:
$ openstack share type set alletra_nfs --extra-specs compression=true dedupe=true
hpe_alletra_b10000:squash_optionThe value can be set to
root_squash,all_squash, orno_root_squash. Any access rules which are added to the alletra backend will be created with this squash option. If the share type is modified to change the squash option, the next share access rule update will use the new squash option value.The squash option of all access rules is controlled through this key. If it is not provided, the squash option defaults to
root_squash.Example:
$ openstack share type set alletra_nfs --extra-specs hpe_alletra_b10000:squash_option=root_squash
The following common additional specs are also supported by Alletra MP B10000:
compressionControls whether compression is enabled on the share.
When specifying
compression, you must also specifydedupewith the same value (bothtrueor bothfalse). You cannot usecompressiontogether withhpe_alletra_b10000:reduce.Example:
$ openstack share type set alletra_nfs --extra-specs compression=true dedupe=true
dedupeControls whether data deduplication is enabled on the share.
When specifying
dedupe, you must also specifycompressionwith the same value (bothtrueor bothfalse). You cannot usededupetogether withhpe_alletra_b10000:reduce.Example:
$ openstack share type set alletra_nfs --extra-specs dedupe=true compression=true
thin_provisioningControls whether thin provisioning is enabled on the share.
This extra spec must be set to
trueor not specified at all. Setting it tofalseis not supported by this driver.Example:
$ openstack share type set alletra_nfs --extra-specs thin_provisioning=true
snapshot_supportControls whether snapshots are enabled for shares of this type. Set to
Trueto allow snapshot creation. Requires device version 10.6.0 or later.Example:
$ openstack share type set alletra_nfs --extra-specs snapshot_support=True
revert_to_snapshot_supportControls whether shares of this type can be reverted to a snapshot. Requires
snapshot_support=True. Requires device version 10.6.0 or later.Example:
$ openstack share type set alletra_nfs --extra-specs revert_to_snapshot_support=True
mount_snapshot_supportControls whether snapshots of this share type can be directly mounted by clients. Requires
snapshot_support=Trueandsnapshot_inherit_share_access_support=True. Requires device version 10.6.0 or later.Example:
$ openstack share type set alletra_nfs --extra-specs mount_snapshot_support=True snapshot_inherit_share_access_support=True
snapshot_inherit_share_access_supportMust be set to
Truewhenmount_snapshot_supportisTrue. On Alletra MP B10000, snapshot access rules are always inherited from the parent share and cannot be managed independently. Requires device version 10.6.0 or later.Example:
$ openstack share type set alletra_nfs --extra-specs snapshot_inherit_share_access_support=True
Note
Modifying share type extra specs after shares have been created is not recommended, as it will cause inconsistency between the share type definition and the actual backend share properties. Backend share characteristics like reduce, compression, and dedupe cannot be changed after creation.
Supported Features¶
Creating and deleting shares¶
Refer to share operations for CLI commands and more information.
Note
If a share contains data, the delete operation will fail. The error will be
reported in the Manila logs and the share will be in error_deleting state.
Ensure the share is empty before attempting to delete it.
Share access¶
A share must have access rules configured before it can be accessed by clients. IP-based access rules are required for NFS shares.
Note
When no Manila access rules are configured, the driver will block all IP addresses by setting a default access rule of 0.0.0.0 with read-only and root_squash permissions on the backend Alletra B10000 array. You must explicitly create access rules to allow client access.
For CLI commands and more information on managing access rules, see manage access to share.
Share extend¶
Share extend operation is supported by the driver.
For CLI commands and more information on extending shares, see share resize.
Note
The share size shown in Manila includes filesystem metadata and other overhead. Client-usable space will be less than the displayed share size.
Note
Share shrink is not currently supported by this driver.
Ensure shares¶
The driver supports ensure_shares operation, which validates that shares exist on the backend and updates their status in Manila. Shares found on the backend are updated with the latest export locations. Shares not found on the backend are marked with error state.
The ensure_shares operation for the driver is executed only in case of service restarts after configuration changes in /etc/manila/manila.conf.
If the backend fileshare export path changes due to file port IP change or other reasons, the administrator must manually trigger the ensure shares command in OpenStack to update the latest export paths.
Refer to recalculating the shares export location for details on manually triggering the ensure shares operation.
Manage and unmanage¶
The driver supports the ability to bring an existing share on the HPE Alletra array into Manila management. When managing a share, the driver validates that the share exists on the backend before bringing it into manila management.
Certain metadata requirements must be satisfied in order to manage an existing share:
If backend share
reducevalue does not match with thehpe_alletra_b10000:reducevalue from the share type, manage share operation will fail. We must associate the correct share type with the share. Default reduce value in case share type does not have this key is true. Similarly, if the share type usescompressionanddedupeparameters instead ofreduce, those values must also match the backend share’s compression and deduplication settings.The backend share must have either an empty access rules list or only the default 0.0.0.0 access rule with read-only and root_squash. If other access rules exist in the backend sharesettings (access rules) list, the manage share operation will fail. Administrator must clear all such access rules from the backend share before performing manage share operation again.
$ setsharesetting -remove <ipaddr_list> <sharesetting_name>
The filesystem size of the backend fileshare must be a multiple of 1024MiB (1GiB). If it is not the manage operation will fail. Manila logs will contain details on how much MiB to expand the backend filesystem by to bring it to a multiple of 1024MiB. After that manage operation can be tried again.
To expand size by 500 MiB:
$ setfilesystem -size 500 <filesystem_name>
When unmanage share operation is performed, the driver removes the share from Manila management but leaves the share intact on the backend array.
Refer to manage and unmanage share for CLI commands and more information.
Creating and deleting snapshots¶
Refer to share snapshots.
The driver supports the ability to create/delete snapshots through the snapshot_support share type.
Note
Each share supports a maximum of 32 snapshots on the HPE Alletra MP B10000 array.
Mountable snapshots¶
The driver supports exporting snapshots so they can be mounted and accessed by clients, just like regular shares.
When the mount_snapshot_support share type extra spec is set to True
(which creates an exported snapshot), the
snapshot_inherit_share_access_support
extra spec must also be set to True for the HPE Alletra MP B10000 driver.
Note
A maximum of 32 snapshots can be online (mounted) per node of the backend array. (for example, 64 for a 2-node cluster).
Revert to snapshot¶
The driver supports reverting a share to its most recent snapshot
through the revert_to_snapshot_support share type.
Note
During the revert operation, the file share and the snapshot are temporarily unexported on the backend array. They are exported again once the revert completes.
Refer to revert to snapshot.
Manage and unmanage snapshot¶
The driver supports bringing existing snapshots on the HPE Alletra array into Manila management using the manage operation.
The provider_location required by manage snapshot is the
backend snapshot filesystem name on the Alletra array.
Prerequisites for manage snapshot:
Snapshot state must match share type: If
mount_snapshot_supportisTrue, the backend snapshot filesystem must be in online state. Otherwise, it must be in offline state.To change the snapshot filesystem state on the Alletra array:
$ setfilesystem -online <filesystem_name> $ setfilesystem -offline <filesystem_name>
Filesystem size alignment: The backend snapshot filesystem size must be a multiple of 1 GiB. If it is not, the manage snapshot operation will fail.
When the unmanage snapshot operation is performed, the driver removes the snapshot from Manila management but leaves it intact on the backend array.
Refer to manage and unmanage share snapshots for CLI commands and more information.
Restrictions and limitations¶
Only NFS protocol is supported. CIFS/SMB is not supported.
Share networks are not supported (driver_handles_share_servers must be False).
Share shrink is not currently supported.
Creating a share from a snapshot is not supported.
Share migration is not supported.
Share replication is not supported.
Share groups and consistency groups are not supported.
Security services (LDAP, Active Directory, Kerberos) are not supported.
Only IP-based access rules are supported for NFS shares.
The manila.share.drivers.hpe.alletra_mp_b10000.hpe_alletra_driver Module¶
- class HPEAlletraFeatureSupportHandler(device_version)
Bases:
object- R5_MIN_DEVICE_VERSION = '10.5.0'
- R6_MIN_DEVICE_VERSION = '10.6.0'
- check_min_r5_device_version()
- check_min_r6_device_version()
- validate_min_driver_version()
Validate that device version meets minimum requirements.
- class HPEAlletraMPB10000ShareDriver(*args, **kwargs)
Bases:
ShareDriverDriver for the HPE Alletra MP B10000 File
Version history:
1.0.0 - Initial version 1.1.0 - Support snapshot functionalities
- ALLETRA_REST_API_TIMEOUT = 120
- VERSION = '1.1.0'
- create_share(context, share, share_server=None)
Create a new manila managed share on backend.
- create_snapshot(context, snapshot, share_server=None)
Creates a snapshot of a share
- delete_share(context, share, share_server=None)
Remove a share from manila and backend
- delete_snapshot(context, snapshot, share_server=None)
Is called to remove snapshot.
- Parameters:
context – Current context
snapshot – Snapshot model. Share model could be retrieved through snapshot[‘share’].
share_server – Share server model or None.
- do_setup(context)
Driver initialization
- ensure_shares(context, shares)
Ensure shares exist on backend and return their current state.
Only returns updates for shares that need status changes. Shares that are already available on the backend are not included in the response, preserving their current state.
- extend_share(share, new_size, share_server=None)
Expand share size
- get_backend_info(context)
Return backend configuration info for ensure_shares validation.
- get_network_allocations_number()
Returns number of network allocations for creating VIFs.
Drivers that use Nova for share servers should return zero (0) here same as Generic driver does. Because Nova will handle network resources allocation. Drivers that handle networking itself should calculate it according to their own requirements. It can have 1+ network interfaces.
- manage_existing(share, driver_options)
Bring an existing backend share into manila management
- manage_existing_snapshot(snapshot, driver_options)
Brings an existing snapshot under Manila management.
If provided snapshot is not valid, then raise a ManageInvalidShareSnapshot exception, specifying a reason for the failure.
This method is invoked when the snapshot that is being managed belongs to a share that has its share type with
driver_handles_share_serversextra-spec set to False.- Parameters:
snapshot – ShareSnapshotInstance model with ShareSnapshot data.
- Example::
{ ‘id’: <instance id>, ‘snapshot_id’: < snapshot id>, ‘provider_location’: <location>, … }
- Parameters:
driver_options – Optional driver-specific options provided by admin.
Example:
{ 'key': 'value', ... }
- Returns:
model_update dictionary with required key ‘size’, which should contain size of the share snapshot, and key ‘export_locations’ containing a list of export locations, if snapshots can be mounted.
- revert_to_snapshot(context, snapshot, share_access_rules, snapshot_access_rules, share_server=None)
Reverts a share (in place) to the specified snapshot.
Does not delete the share snapshot. The share and snapshot must both be ‘available’ for the restore to be attempted. The snapshot must be the most recent one taken by Manila; the API layer performs this check so the driver doesn’t have to.
The share must be reverted in place to the contents of the snapshot. Application admins should quiesce or otherwise prepare the application for the shared file system contents to change suddenly.
- Parameters:
context – Current context
snapshot – The snapshot to be restored
share_access_rules – List of all access rules for the affected share
snapshot_access_rules – List of all access rules for the affected snapshot
share_server – Optional – Share server model or None
- snapshot_update_access(context, snapshot, access_rules, add_rules=None, delete_rules=None, share_server=None)
Update access rules for a mountable snapshot.
Alletra snapshots always inherit the parent share’s access rules, so the driver reports snapshot_inherit_share_access_support and the backend offers no way to set independent snapshot rules. Nothing is applied here.
- unmanage(share)
Remove from manila management without deleting backend share
- unmanage_snapshot(snapshot)
Remove snapshot from manila management without deleting backend
- update_access(context, share, access_rules, add_rules, delete_rules, update_rules, share_server=None)
Modify share access rules
- class HPEAlletraMPB10000ShareDriverHelper(rest_client, **kwargs)
Bases:
objectDriver helper for the HPE Alletra MP B10000 File
- class HPEAlletraPrivateStorageHandler(private_storage)
Bases:
object- PS_BE_FILESYSTEM_NAME = 'alletra_be_filesystem_name'
- PS_BE_SHARESETTING_NAME = 'alletra_be_sharesetting_name'
- PS_BE_SHARE_ID = 'alletra_be_share_id'
- PS_BE_SHARE_NAME = 'alletra_be_share_name'
- PS_BE_SNAP_FILESYSTEM_ID = 'alletra_be_snap_filesystem_id'
- PS_BE_SNAP_FILESYSTEM_NAME = 'alletra_be_snap_filesystem_name'
- PS_BE_SNAP_SHARESETTING_NAME = 'alletra_be_snap_sharesetting_name'
- PS_BE_SNAP_SHARE_ID = 'alletra_be_snap_share_id'
- PS_BE_SNAP_SHARE_NAME = 'alletra_be_snap_share_name'
- delete_share_by_id(fe_share_id)
- delete_snapshot_by_id(fe_snapshot_id)
- get_share_by_id(fe_share_id)
- get_snapshot_by_id(fe_snapshot_id)
- update_share_by_id(fe_share_id, be_share_id, be_share_name, be_filesystem_name, be_sharesetting_name)
Update private storage with backend share details.
- update_snapshot_by_id(fe_snapshot_id, be_share_id, be_filesystem_id, be_share_name, be_filesystem_name, be_sharesetting_name)
Update private storage with backend snapshot details.