Use the EMC VNX direct driver to create, attach, detach, and
        delete volumes, create and delete snapshots, and so on. This driver
        is based on the Cinder-defined ISCSIDriver driver.
    
To complete volume operations, the driver uses the NaviSec command-line interface (CLI) to communicate with back-end EMC VNX storage.
- Flare version 5.32 or later. 
- You must activate VNX Snapshot and Thin Provisioning license for the array. Ensure that all the iSCSI ports from the VNX are accessible through OpenStack hosts. 
- Navisphere CLI v7.32 or later. 
EMC storage VNX Series are supported.
- Create volume 
- Delete volume 
- Attach volume 
- Detach volume 
- Create snapshot 
- Delete snapshot 
- Create volume from snapshot 
- Create cloned volume 
- Copy image to volume 
- Copy volume to image 
- Extend volume 
Complete these high-level tasks to set up the VNX direct driver:
- Install NaviSecCLI. You must install the NaviSecCLI tool on the controller node and all the Cinder nodes in an OpenStack deployment. See the section called “Install NaviSecCLI”. 
- Register with VNX. See the section called “Register with VNX” 
On Ubuntu x64, download the NaviSecCLI deb package from EMC's OpenStack Github web site.
For all the other variants of Linux, download the NaviSecCLI rpm package from EMC's support web site for VNX2 series or VNX1 series. Login is required.
To export a VNX volume to a compute node or a volume node, you must register the node with VNX.
Procedure 1.1. To register the node
- On the compute node or volume node - 1.1.1.1, do the following (assume- 10.10.61.35is the iSCSI target):- # /etc/init.d/open-iscsi start # iscsiadm -m discovery -t st -p 10.10.61.35 # cd /etc/iscsi # more initiatorname.iscsi # iscsiadm -m node 
- Log in to VNX from the node using the target corresponding to the SPA port: - # iscsiadm -m node -T iqn.1992-04.com.emc:cx.apm01234567890.a0 -p 10.10.61.35 -l - Where - iqn.1992-04.com.emc:cx.apm01234567890.a0is the initiator name of the node. Login to Unisphere, go to- VNX00000->Hosts->Initiators, Refresh and wait until initiator- iqn.1992-04.com.emc:cx.apm01234567890.a0with SP Port- A-8v0appears.
- Click , select CLARiiON/VNX, and enter the host name - myhost1and IP address- myhost1. Click . Now host- 1.1.1.1also appears under Hosts->Host List.
- Log out of VNX on the node: - # iscsiadm -m node -u 
- Log in to VNX from the node using the target corresponding to the SPB port: - # iscsiadm -m node -T iqn.1992-04.com.emc:cx.apm01234567890.b8 -p 10.10.10.11 -l 
- In Unisphere register the initiator with the SPB port. 
- Log out: - # iscsiadm -m node -u 
Make the following changes in
                    /etc/cinder/cinder.conf.
For the VNX iSCSI driver, add the following entries, where
                10.10.61.35 is the IP address
                of the VNX iSCSI target, 10.10.72.41
                is the IP address of the VNX array (SPA or SPB),
                default_timeout is the default
                time out for CLI operations in minutes, and
                max_luns_per_storage_group is
                the default max number of LUNs in a storage group:
iscsi_ip_address = 10.10.61.35 san_ip = 10.10.72.41 san_login = global_username san_password = password naviseccli_path = /opt/Navisphere/bin/naviseccli storage_vnx_pool_name = poolname default_timeout = 10 max_luns_per_storage_group=256 volume_driver=cinder.volume.drivers.emc.emc_cli_iscsi.EMCCLIISCSIDriver
| ![[Note]](../common/images/admon/note.png) | Note | 
|---|---|
| To find out  | 
Restart the cinder-volume service.
Volume type support allows user to choose thick/thin provisioning capabilities.
Here is an example of how to setup volume type. First create volume types. Then define extra specs for each volume type.
Procedure 1.2. To set up volume types
- Setup volume types: - $ cinder type-create "TypeA" $ cinder type-create "TypeB" 
- Setup volume type extra specs: - $ cinder type-key "TypeA" set storagetype:provisioning=thick $ cinder type-key "TypeB" set storagetype:provisioning=thin 
The previous example creates two volume types:
                 TypeA and TypeB.
                 For TypeA, storagetype:provisioning
                  is set to thick. Similarly
                 for TypeB, storagetype:provisioning
                  is set to thin. If 
                 storagetype:provisioning is not specified, it will be
                 default to thick.



