Skip to main content
NetApp Knowledge Base

Openstack: How does Manila handle share servers when DHSS is enabled?

Views:
566
Visibility:
Public
Votes:
2
Category:
openstack
Specialty:
virt
Last Updated:

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

 

 

NetApp provides no representations or warranties regarding the accuracy or reliability or serviceability of any information or recommendations provided in this publication or with respect to any results that may be obtained by the use of the information or observance of any recommendations provided herein. The information in this document is distributed AS IS and the use of this information or the implementation of any recommendations or techniques herein is a customer's responsibility and depends on the customer's ability to evaluate and integrate them into the customer's operational environment. This document and the information contained herein may be used solely in connection with the NetApp products discussed in this document.