Hitachi NAS (HNAS) driver

Hitachi NAS (HNAS) driver

The HNAS driver provides NFS Shared File Systems to OpenStack.


  • Hitachi NAS Platform Models 3080, 3090, 4040, 4060, 4080, and 4100.
  • HNAS/SMU software version is 12.2 or higher.
  • HNAS configuration and management utilities to create a storage pool (span) and an EVS.
    • GUI (SMU).
    • SSC CLI.

Supported shared filesystems and operations

The driver supports NFS shares.

The following operations are supported:

  • Create a share.
  • Delete a share.
  • Allow share access.
  • Deny share access.
  • Create a snapshot.
  • Delete a snapshot.
  • Create a share from a snapshot.
  • Extend a share.
  • Manage a share.
  • Unmanage a share.
  • Shrink a share.

Driver options

This table contains the configuration options specific to the share driver.

Description of HDS NAS Share Driver configuration options
Configuration option = Default value Description
hds_hnas_cluster_admin_ip0 = None (String) The IP of the clusters admin node. Only set in HNAS multinode clusters.
hds_hnas_evs_id = None (Integer) Specify which EVS this backend is assigned to.
hds_hnas_evs_ip = None (String) Specify IP for mounting shares.
hds_hnas_file_system_name = None (String) Specify file-system name for creating shares.
hds_hnas_ip = None (String) HNAS management interface IP for communication between Manila controller and HNAS.
hds_hnas_password = None (String) HNAS user password. Required only if private key is not provided.
hds_hnas_ssh_private_key = None (String) RSA/DSA private key value used to connect into HNAS. Required only if password is not provided.
hds_hnas_stalled_job_timeout = 30 (Integer) The time (in seconds) to wait for stalled HNAS jobs before aborting.
hds_hnas_user = None (String) HNAS username Base64 String in order to perform tasks such as create file-systems and network interfaces.
share_backend_name = None (StrOpt) The backend name for a given driver implementation.
share_driver = (StrOpt) Driver to use for share creation.
hds_hnas_driver_helper = (StrOpt) Python class to be used for driver helper.

Pre-configuration on OpenStack deployment

  1. Install the OpenStack environment with manila. See the OpenStack installation guide.

  2. Configure the OpenStack networking so it can reach HNAS Management interface and HNAS EVS Data interface.


    In the driver mode used by HNAS Driver (DHSS = False), the driver does not handle network configuration, it is up to the administrator to configure it.

    • Configure the network of the manila-share node network to reach HNAS management interface through the admin network.


      The manila-share node only requires the HNAS EVS data interface if you plan to use share migration.

    • Configure the network of the Compute and Networking nodes to reach HNAS EVS data interface through the data network.

    • Example of networking architecture:

      Example networking scenario
    • Edit the /etc/neutron/plugins/ml2/ml2_conf.ini file and update the following settings in their respective tags. In case you use linuxbridge, update bridge mappings at linuxbridge section:


    It is mandatory that HNAS management interface is reachable from the Shared File System node through the admin network, while the selected EVS data interface is reachable from OpenStack Cloud, such as through Neutron flat networking.

    type_drivers = flat,vlan,vxlan,gre
    mechanism_drivers = openvswitch
    flat_networks = physnet1,physnet2
    network_vlan_ranges = physnet1:1000:1500,physnet2:2000:2500
    bridge_mappings = physnet1:br-ex,physnet2:br-eth1

    You may have to repeat the last line above in another file on the Compute node, if it exists it is located in: /etc/neutron/plugins/openvswitch/ovs_neutron_plugin.ini.

    • In case openvswitch for neutron agent, run in network node:

      # ifconfig eth1 0
      # ovs-vsctl add-br br-eth1
      # ovs-vsctl add-port br-eth1 eth1
      # ifconfig eth1 up
    • Restart all neutron processes.

  3. Create the data HNAS network in OpenStack:

    • List the available tenants:

      $ openstack project list
    • Create a network to the given tenant (demo), providing the tenant ID, a name for the network, the name of the physical network over which the virtual network is implemented, and the type of the physical mechanism by which the virtual network is implemented:

      $ neutron net-create --tenant-id <DEMO_ID> hnas_network \
      --provider:physical_network=physnet2 --provider:network_type=flat
    • Optional - List available networks:

      $ neutron net-list
    • Create a subnet to the same tenant (demo), the gateway IP of this subnet, a name for the subnet, the network ID created before, and the CIDR of subnet:

      $ neutron subnet-create --tenant-id <DEMO_ID> --gateway <GATEWAY> \
      --name hnas_subnet <NETWORK_ID> <SUBNET_CIDR>
    • OPTIONAL - List available subnets:

      $ neutron subnet-list
    • Add the subnet interface to a router, providing the router ID and subnet ID created before:

      $ neutron router-interface-add <ROUTER_ID> <SUBNET_ID>

Pre-configuration on HNAS

  1. Create a file system on HNAS. See the Hitachi HNAS reference.


    Make sure that the filesystem is not created as a replication target. Refer official HNAS administration guide.

  2. Prepare the HNAS EVS network.

    • Create a route in HNAS to the tenant network:

      $ console-context --evs <EVS_ID_IN_USE> route-net-add --gateway <FLAT_NETWORK_GATEWAY> \


      Make sure multi-tenancy is enabled and routes are configured per EVS.

      $ console-context --evs 3 route-net-add --gateway \

Back end configuration

  1. Configure HNAS driver.

    • Configure HNAS driver according to your environment. This example shows a minimal HNAS driver configuration:

      enabled_share_backends = hnas1
      enabled_share_protocols = NFS
      share_backend_name = HNAS1
      share_driver =
      driver_handles_share_servers = False
      hds_hnas_ip =
      hds_hnas_user = supervisor
      hds_hnas_password = supervisor
      hds_hnas_evs_id = 1
      hds_hnas_evs_ip =
      hds_hnas_file_system_name = FS-Manila
  2. Optional - HNAS multi-backend configuration.

    • Update the enabled_share_backends flag with the names of the back ends separated by commas.

    • Add a section for every back end according to the example bellow:

      enabled_share_backends = hnas1,hnas2
      enabled_share_protocols = NFS
      share_backend_name = HNAS1
      share_driver =
      driver_handles_share_servers = False
      hds_hnas_ip =
      hds_hnas_user = supervisor
      hds_hnas_password = supervisor
      hds_hnas_evs_id = 1
      hds_hnas_evs_ip =
      hds_hnas_file_system_name = FS-Manila1
      share_backend_name = HNAS2
      share_driver =
      driver_handles_share_servers = False
      hds_hnas_ip =
      hds_hnas_user = supervisor
      hds_hnas_password = supervisor
      hds_hnas_evs_id = 1
      hds_hnas_evs_ip =
      hds_hnas_file_system_name = FS-Manila2
  3. Disable DHSS for HNAS share type configuration:


    Shared File Systems requires that the share type includes the driver_handles_share_servers extra-spec. This ensures that the share will be created on a backend that supports the requested driver_handles_share_servers capability.

    $ manila type-create hitachi False
  4. (Optional multiple back end) Create an extra-spec for specifying which HNAS back end will be created by the share:

    • Create additional share types.

      $ manila type-create hitachi2 False
    • Add an extra-spec for each share-type in order to match a specific back end. Therefore, it is possible to specify which back end the Shared File System service will use when creating a share.

      $ manila type-key hitachi set share_backend_name=hnas1
      $ manila type-key hitachi2 set share_backend_name=hnas2
  5. Restart all Shared File Systems services (manila-share, manila-scheduler and manila-api).

Manage and unmanage shares

Shared File Systems has the ability to manage and unmanage shares. If there is a share in the storage and it is not in OpenStack, you can manage that share and use it as a Shared File Systems share. HNAS drivers use virtual-volumes (V-VOL) to create shares. Only V-VOL shares can be used by the driver. If the NFS export is an ordinary FS export, it is not possible to use it in Shared File Systems. The unmanage operation only unlinks the share from Shared File Systems. All data is preserved.

Additional notes

  • HNAS has some restrictions about the number of EVSs, filesystems, virtual-volumes, and simultaneous SSC connections. Check the manual specification for your system.
  • Shares and snapshots are thin provisioned. It is reported to Shared File System only the real used space in HNAS. Also, a snapshot does not initially take any space in HNAS, it only stores the difference between the share and the snapshot, so it grows when share data is changed.
  • Administrators should manage the tenant’s quota (manila quota-update) to control the back-end usage.
Creative Commons Attribution 3.0 License

Except where otherwise noted, this document is licensed under Creative Commons Attribution 3.0 License. See all OpenStack Legal Documents.