Vastdata Share Driver¶
VAST Share Driver integrates OpenStack with VAST Data’s Storage System. Shares in the Shared File System service are mapped to directories on VAST, and are accessed via NFS protocol using a Virtual IP Pool.
Supported shared filesystems¶
The driver supports NFS shares.
Operations supported¶
The driver supports NFS shares.
The following operations are supported:
Create a share.
Delete a share.
Allow share access.
Deny share access.
Extend a share.
Shrink a share.
Requirements¶
The Trash Folder Access functionality must be enabled on the VAST cluster.
Driver options¶
The following table contains the configuration options specific to the share driver.
Configuration option = Default value |
Description |
---|---|
[vast] |
|
|
(String) Hostname or IP address VAST storage system management VIP. |
|
(String) Port for VAST management API. |
|
(String) Name of Virtual IP pool. |
|
(String) Base path for shares. |
|
(String) Username for VAST management API. |
|
(String) Password for VAST management API. |
VAST Share Driver configuration example¶
The following example shows parameters in the manila.conf
file
that are used to configure VAST Share Driver.
They include two options under [DEFAULT]
and parameters under [vast]
.
Note that a real manila.conf
file would also include
other parameters that are not specific to VAST Share Driver.
[DEFAULT]
enabled_share_backends = vast
enabled_share_protocols = NFS
[vast]
share_driver = manila.share.drivers.vastdata.driver.VASTShareDriver
share_backend_name = vast
driver_handles_share_servers = False
snapshot_support = True
vast_mgmt_host = {vms_ip}
vast_mgmt_port = {vms_port}
vast_mgmt_user = {mgmt_user}
vast_mgmt_password = {mgmt_password}
vast_vippool_name = {vip_pool}
vast_root_export = {root_export}
Restart of the manila-share
service is needed for the configuration
changes to take effect.
Pre-configurations for share support¶
To create a file share, you need to:
Create the share type:
openstack share type create ${share_type_name} False \
--extra-specs share_backend_name=${share_backend_name}
Create an NFS share:
openstack share create NFS ${size} --name ${share_name} --share-type ${share_type_name}
Pre-Configurations for Snapshot support¶
The share type must have the following parameter specified:
snapshot_support = True
You can specify it when creating a new share type:
openstack share type create ${share_type_name} false \
--snapshot-support=true \
--extra-specs share_backend_name=${share_backend_name}
Or you can add it to an existing share type:
openstack share type set ${share_type_name} --extra-specs snapshot_support=True
To snapshot a share and create share from the snapshot¶
Create a share using a share type with snapshot_support=True. Then, create a snapshot of the share using the command:
openstack share snapshot create ${source_share_name} --name ${target_snapshot_name}
The manila.share.drivers.vastdata.driver
Module¶
VAST’s Share Driver
Configuration:
[DEFAULT] enabled_share_backends = vast
[vast] share_driver = manila.share.drivers.vastdata.driver.VASTShareDriver share_backend_name = vast snapshot_support = true driver_handles_share_servers = false vast_mgmt_host = v11 vast_vippool_name = vippool-1 vast_root_export = manila vast_mgmt_user = admin vast_mgmt_password = 123456
- class VASTShareDriver(*args, **kwargs)
Bases:
ShareDriver
Driver for the VastData Filesystem.
- VERSION = '1.0'
- create_share(context, share, share_server=None)
Is called to create share.
- create_snapshot(context, snapshot, share_server=None)
Is called to create snapshot.
- delete_share(context, share, share_server=None)
Called to delete a share
- delete_snapshot(context, snapshot, share_server=None)
Is called to remove share.
- do_setup(context)
Driver initialization
- ensure_shares(context, shares)
Invoked to ensure that shares are exported.
Driver can use this method to update the “status” and/or list of export locations of the shares if they change. To do that, a dictionary of shares should be returned. In addition, the driver can seek to “reapply_access_rules” (boolean) on a per-share basis. When this property exists and is set to True, the share manager service will invoke “update_access” with all the access rules from the service database. :shares: A list of all shares for updates. :returns: None or a dictionary of updates in the format.
Example:
{ '09960614-8574-4e03-89cf-7cf267b0bd08': { 'export_locations': [{...}, {...}], 'status': 'error', 'reapply_access_rules': False, }, '28f6eabb-4342-486a-a7f4-45688f0c0295': { 'export_locations': [{...}, {...}], 'status': 'available', 'reapply_access_rules': True, }, }
- extend_share(share, new_size, share_server=None)
uses resize_share to extend a share
- get_backend_info(context)
Get driver and array configuration parameters.
Driver can use this method to get the special configuration info and return for assessment. The share manager service uses this assessment to invoke “ensure_shares” during service startup.
- Returns:
A dictionary containing driver-specific info.
Example:
{ 'version': '2.23' 'port': '80', 'logicalportip': '1.1.1.1', ... }
- 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.
- shrink_share(share, new_size, share_server=None)
uses resize_share to shrink a share
- update_access(context, share, access_rules, add_rules, delete_rules, share_server=None)
Update access rules for share.
- policy_payload_from_rules(rules, policy, action)
Convert list of manila rules
into vast compatible payload for updating/creating policy.
- validate_access_rule(access_rule)