Openstack: How does Manila handle share servers when DHSS is enabled?
Applies to
- Openstack Manila
Answer
Introduction
Manila has an option called Driver Handles Share Server or DHSS. This DHSS option is configured as an option in your storage backend in manila.conf.
- When DHSS is set to false, manila simply creates shares on the storage backend specified in manila.conf
- When DHSS is set to true, shares are not created on the storage backend specified in manila.conf. Instead:
- manila has the ability to create multiple share servers (for the purposes of network and data isolation)
- A SVM or Storage Virtual Machine is created in ONTAP for every share server created
- manila bases the decision of whether to create a new share server based on the nova host that provides the filesystem service as well as share network specified
Note: This article is not meant to be a complete guide to Manila and DHSS. Rather this article is meant to supplement the official documentation and clarify the expected behavior with share servers and share networks when DHSS is enabled.
Share network
When creating a new manila share with DHSS=True, you would typically pass in two arguments:
- share network: This allows you to specify details regarding the network the share will use such as a neutron network, neutron subnet, CIDR, etc.
- share type: This allows you to specify a share type where you have an extra spec that has
driver_handles_share_servers : True
For example:
manila create --name test --share-network tenant02-share-network1 --share-type dhss-true-type NFS 10
If you create shares using multiple share networks that have different neutron subnets, manila will associate a new share server with the share network. In the following example, I have two share servers. Note that each share server is associated with a different share network:
# manila share-server-list
+--------------------------------------+---------------------------------------------------------------+--------+-------------------------+----------------------------------+----------------------------+--------------------------------------+
| Id | Host | Status | Share Network | Project Id | Updated_at | Share Network Subnet Id |
+--------------------------------------+---------------------------------------------------------------+--------+-------------------------+----------------------------------+----------------------------+--------------------------------------+
| 85aab625-7b3b-4204-a133-37ce816aac6f | openstack-manila.virt.local@cluster_nfs_svm01_dhss | active | tenant02-share-network1 | cb2aedf4773242b7aac5971b3b9f5e8a | 2022-12-06T13:28:34.115092 | 5a3e228b-6b82-4821-ad0d-9d3ead063520 |
| c48e9aea-2a46-4225-8ee9-90960d91a3c8 | openstack-manila.virt.local@cluster_nfs_svm01_dhss | active | tenant01-share-network1 | b1c64f188a3d46f6ad4a1acaf0c7aebe | 2022-10-24T12:37:52.379533 | 9dddc03f-b96b-4cd4-a8e8-fb0c6148a816 |
+--------------------------------------+---------------------------------------------------------------+--------+-------------------------+----------------------------------+----------------------------+--------------------------------------+
Each share network is associated with a different neutron subnet. For example, for the "tenant01-share-network1" my neutron subnet has a CIDR of 192.168.100.0/24:
~(tenant01_user)]# manila share-network-show 85258be7-5583-4245-8898-9d64f5e5ce6d
+---------------------------------+--------------------------------------------------------------------------+
| Property | Value |
+---------------------------------+--------------------------------------------------------------------------+
| id | 85258be7-5583-4245-8898-9d64f5e5ce6d |
| name | tenant01-share-network1 |
| project_id | b1c64f188a3d46f6ad4a1acaf0c7aebe |
| created_at | 2022-10-24T12:33:52.562911 |
| updated_at | None |
| description | None |
| share_network_subnets | [{'id': '9dddc03f-b96b-4cd4-a8e8-fb0c6148a816', 'availability_zone': None,
'created_at': '2022-10-24T12:33:52.576179', 'updated_at': '2022-10-24T12:37:36.620706', 'segmentation_id': 2194,
'neutron_net_id': '83a072f2-af8a-426c-9a9f-52b0a84c4d52', 'neutron_subnet_id': '67281709-5133-465b-a419-2c568d403e56',
'ip_version': 4, 'cidr': '192.168.100.0/24', 'network_type': 'vlan', 'mtu': 1500, 'gateway': '192.168.100.1'}]|
| status | active |
| security_service_update_support | True |
+---------------------------------+--------------------------------------------------------------------------+
My "tenant02-share-network1" share network is associated with a different neutron subnet with a different CIDR (192.168.99.0/24):
~(tenant02_user)]# manila share-network-show 3ca193a4-241d-452f-a6b4-0ac0553c8c80
+---------------------------------+--------------------------------------------------------------------------+
| Property | Value |
+---------------------------------+--------------------------------------------------------------------------+
| id | 3ca193a4-241d-452f-a6b4-0ac0553c8c80 |
| name | tenant02-share-network1 |
| project_id | cb2aedf4773242b7aac5971b3b9f5e8a |
| created_at | 2022-12-06T12:58:52.997574 |
| updated_at | None |
| description | None |
| share_network_subnets | [{'id': '5a3e228b-6b82-4821-ad0d-9d3ead063520', 'availability_zone': None,
'created_at': '2022-12-06T12:58:53.018335', 'updated_at': '2022-12-06T13:28:15.118391', 'segmentation_id': 2457,
'neutron_net_id': 'bcfc11e0-323a-415a-aa1f-1e541bc50447', 'neutron_subnet_id': '65ebea96-55d5-4e5b-8588-979e6981b8e0',
'ip_version': 4, 'cidr': '192.168.99.0/24', 'network_type': 'vlan', 'mtu': 1500, 'gateway': '192.168.99.1'}]|
| status | active |
| security_service_update_support | True |
+---------------------------------+--------------------------------------------------------------------------+
The NetApp manila driver, when presented with a share network tied to a neutron subnet, makes the following decision:
- Is there an existing share server tied to that Neutron subnet?
- If yes, use the existing share server (and thus the existing SVM for that share server) to create the share
- If no, create a new share server (and thus a SVM) for the share
In ONTAP, the following are the two SVM's tied to my two share servers. Note that the manila share server id is reflected in the SVM name and the IP addresses used for the LIFs match the CIDR used by the Neutron subnet:
::> net int show
(network interface show)
Logical Status Network Current Current Is
Vserver Interface Admin/Oper Address/Mask Node Port Home
----------- ---------- ---------- ------------------ ------------- ------- ----
os_85aab625-7b3b-4204-a133-37ce816aac6f
os_b71adee8-d668-4aac-afcb-37f363a100ff
up/up 192.168.99.197/24 cluster-01 e0a-2457
true
os_c48e9aea-2a46-4225-8ee9-90960d91a3c8
os_e7df4fe7-4f5a-45ed-88a0-5b9b5cae0cd4
up/up 192.168.100.113/24 cluster-01 e0a-2194
true
Host
Manila also bases share server creation on the host used when DHSS is enabled. In the following example, I have two hosts: "manila01" and "manila02". Note that the share network used is the same...however two share servers have been created:
# manila share-server-list
+--------------------------------------+---------------------------------------------------------------+--------+-------------------------+----------------------------------+----------------------------+--------------------------------------+
| Id | Host | Status | Share Network | Project Id | Updated_at | Share Network Subnet Id |
+--------------------------------------+---------------------------------------------------------------+--------+-------------------------+----------------------------------+----------------------------+--------------------------------------+
| 85bbb625-1234-4321-a133-37ce816aac4a | manila01.virt.local@cluster_nfs_svm01_dhss | active | tenant03-share-network1 | cb2aedf4773242b7aa12345b3b9f5e8a | 2022-12-06T13:28:34.115092 | 5a43218b-1234-abcd-ad4d-9d3e43213520 |
| c4569abb-1234-4321-8ee9-98960daaa3c8 | manila02.virt.local@cluster_nfs_svm01_dhss | active | tenant03-share-network1 | b1c64f188a3d46f6ad12345af0c7aebe | 2022-10-24T12:37:52.379533 | 9d43213f-4321-dcba-a8c8-fb0c5678a816 |
+--------------------------------------+---------------------------------------------------------------+--------+-------------------------+----------------------------------+----------------------------+--------------------------------------+
The reason that two share servers were created, despite a common share network, is that there are two hosts present. The manila driver (both generic and NetApp) will create a share server for each host present. If I add a new host "manila03", and create a new share using the same share network ("tenant03-share-network1"), the manila driver will create a third share server.
Additional Information