NexentaStor 5.x NFS and iSCSI drivers

NexentaStor is an Open Source-driven Software-Defined Storage (OpenSDS) platform delivering unified file (NFS and SMB) and block (FC and iSCSI) storage services. NexentaStor runs on industry standard hardware, scales from tens of terabytes to petabyte configurations, and includes all data management functionality by default.

For user documentation, see the Nexenta Documentation Center.

Supported operations

  • Create, delete, attach, and detach volumes.

  • Create, list, and delete volume snapshots.

  • Create a volume from a snapshot.

  • Copy an image to a volume.

  • Copy a volume to an image.

  • Clone a volume.

  • Extend a volume.

  • Migrate a volume.

  • Change volume type.

  • Get volume statistics.

  • Revert a volume to a snapshot.

  • Manage and unmanage volumes and snapshots.

  • List manageable volumes and snapshots.

  • Create, modify, delete, and list consistency groups.

  • Create, modify, delete, and list snapshots of consistency groups.

  • Create consistency group from consistency group or consistency group snapshot.

  • Support consistency groups capability to generic volume groups.

  • Attach a volume to multiple servers simultaneously (multiattach).

iSCSI driver

The NexentaStor appliance must be installed and configured according to the relevant Nexenta documentation. A pool and an enclosing namespace must be created for all iSCSI volumes to be accessed through the volume driver. This should be done as specified in the release-specific NexentaStor documentation.

The NexentaStor Appliance iSCSI driver is selected using the normal procedures for one or multiple back-end volume drivers.

You must configure these items for each NexentaStor appliance that the iSCSI volume driver controls:

  1. Make the following changes on the volume node /etc/cinder/cinder.conf file.

    # Enable Nexenta iSCSI driver
    volume_driver=cinder.volume.drivers.nexenta.ns5.iscsi.NexentaISCSIDriver
    
    # IP address of NexentaStor host (string value)
    nexenta_host=HOST-IP
    
    # Port for Rest API (integer value)
    nexenta_rest_port=8443
    
    # Username for NexentaStor Rest (string value)
    nexenta_user=USERNAME
    
    # Password for NexentaStor Rest (string value)
    nexenta_password=PASSWORD
    
    # Pool on NexentaStor appliance (string value)
    nexenta_volume=volume_name
    
    # Name of a parent Volume group where cinder created zvols will reside (string value)
    nexenta_volume_group = iscsi
    

    Note

    nexenta_volume represents a zpool, which is called pool on NS 5.x appliance. It must be pre-created before enabling the driver.

    Volume group does not need to be pre-created, the driver will create it if does not exist.

  2. Save the changes to the /etc/cinder/cinder.conf file and restart the cinder-volume service.

NFS driver

The Nexenta NFS driver allows you to use NexentaStor appliance to store Compute volumes via NFS. Every Compute volume is represented by a single NFS file within a shared directory.

While the NFS protocols standardize file access for users, they do not standardize administrative actions such as taking snapshots or replicating file systems. The OpenStack Volume Drivers bring a common interface to these operations. The Nexenta NFS driver implements these standard actions using the ZFS management plane that already is deployed on NexentaStor appliances.

The NexentaStor appliance must be installed and configured according to the relevant Nexenta documentation. A single-parent file system must be created for all virtual disk directories supported for OpenStack. Create and export the directory on each NexentaStor appliance.

You must configure these items for each NexentaStor appliance that the NFS volume driver controls:

  1. Make the following changes on the volume node /etc/cinder/cinder.conf file.

    # Enable Nexenta NFS driver
    volume_driver=cinder.volume.drivers.nexenta.ns5.nfs.NexentaNfsDriver
    
    # IP address or Hostname of NexentaStor host (string value)
    nas_host=HOST-IP
    
    # Port for Rest API (integer value)
    nexenta_rest_port=8443
    
    # Path to parent filesystem (string value)
    nas_share_path=POOL/FILESYSTEM
    
    # Recommended NFS options
    nas_mount_options=vers=3,minorversion=0,timeo=100,nolock
    
  2. Create filesystem on appliance and share via NFS. For example:

    "securityContexts": [
       {"readWriteList": [{"allow": true, "etype": "fqnip", "entity": "1.1.1.1"}],
        "root": [{"allow": true, "etype": "fqnip", "entity": "1.1.1.1"}],
        "securityModes": ["sys"]}]
    
  3. Create ACL for the filesystem. For example:

    {"type": "allow",
    "principal": "everyone@",
    "permissions": ["list_directory","read_data","add_file","write_data",
    "add_subdirectory","append_data","read_xattr","write_xattr","execute",
    "delete_child","read_attributes","write_attributes","delete","read_acl",
    "write_acl","write_owner","synchronize"],
    "flags": ["file_inherit","dir_inherit"]}
    

Driver options

Nexenta Driver supports these options:

Description of NexentaStor 5 driver configuration options

Configuration option = Default value

Description

[DEFAULT]

nexenta_dataset_compression = on

(String) Compression value for new ZFS folders.

nexenta_dataset_dedup = off

(String) Deduplication value for new ZFS folders.

nexenta_dataset_description =

(String) Human-readable description for the folder.

nexenta_host =

(String) IP address of Nexenta SA

nexenta_iscsi_target_portal_port = 3260

(Integer) Nexenta target portal port

nexenta_mount_point_base = $state_path/mnt

(String) Base directory that contains NFS share mount points

nexenta_ns5_blocksize = 32

(Integer) Block size for datasets

nexenta_rest_port = 0

(Integer) HTTP(S) port to connect to Nexenta REST API server. If it is equal zero, 8443 for HTTPS and 8080 for HTTP is used

nexenta_rest_protocol = auto

(String) Use http or https for REST connection (default auto)

nexenta_sparse = False

(Boolean) Enables or disables the creation of sparse datasets

nexenta_sparsed_volumes = True

(Boolean) Enables or disables the creation of volumes as sparsed files that take no space. If disabled (False), volume is created as a regular file, which takes a long time.

nexenta_use_https = True

(Boolean) Use secure HTTP for REST connection (default True)

nexenta_user = admin

(String) User name to connect to Nexenta SA

nexenta_volume = cinder

(String) SA Pool that holds all volumes

nexenta_volume_group = iscsi

(String) Volume group for ns5