1. Open an SSH session to the XtremIO Management Station
Firstly we need to open an SSH connection to the XtremIO Management Station (XMS), in this case I used putty to connect directly onto the XMS Virtual Machine. The second login prompt after ‘xmsadmin’ is required to access the xmcli> session.
The XMCLI session prompt appears allowing you to run the required commands. Utilizing ‘?’ within the console will provide a list of available options.

2. Create the Initiator Group Parent Folder
In order to keep Clusters organizied it is good practice to create a root Folder for each cluster in a multi-cluster configuration. In this example we will use the cluster name “VDICluster” as the folder name. Note: all the user defined values require parenthesis “…”

add-folder caption=”VDICluster” folder-type=ig parent-folder-id=”/”

Once created the folder appears in the Initiator Groups pane:

3. Create Initiator Groups and add their associated Host Initiators
Create the IG and assign to the parent folder “VDICluster”:
add-initiator-group ig-name=”VB001_ESXI01″ parent-folder-id=”/VDICluster”

Add the ESXi HBA’s to the relevant IG:
add-initiator ig-id=”VB001_ESXI01″ initiator-name=”VB001_ESXI01-HBA0″ port-address=”20:00:00:25:xx:xx:xx:6F”
add-initiator ig-id=”VB001_ESXI01″ initiator-name=”VB001_ESXI01-HBA1″ port-address=”20:00:00:25:xx:xx:xx:6F”

add-initiator-group ig-name=”VB001_ESXI02″ parent-folder-id=”/VDICluster”
add-initiator ig-id=”VB001_ESXI02″ initiator-name=”VB001_ESXI02-HBA0″ port-address=”20:00:00:25:xx:xx:xx:7F”
add-initiator ig-id=”VB001_ESXI02″ initiator-name=”VB001_ESXI02-HBA1″ port-address=”20:00:00:25:xx:xx:xx:7F”


Initiator Group Validation:

4. Create Parent Folders for the Boot and DATA LUNs
add-folder caption=”VDICluster_BOOT” folder-type=vol parent-folder-id=”/”
add-folder caption=”VDICluster_DATA” folder-type=vol parent-folder-id=”/”

5. Create BOOT LUNs for both ESXi Hosts (20Gig Example)
add-volume alignment-offset=0 lb-size=512 vol-name=”ESXI01-BOOT” vol-size=”20g” parent-folder-id=”/VDICluster_BOOT”
add-volume alignment-offset=0 lb-size=512 vol-name=”ESXI02-BOOT” vol-size=”20g” parent-folder-id=”/VDICluster_BOOT”

6. Map the Individual Boot LUNs to the ESXi Hosts using HLU 0
This presents “ESXI01-BOOT” to the ESXi Host “VB001_ESXI01” as LUN 0:
map-lun vol-id=”ESXI01-BOOT” ig-id=”VB001_ESXI01″ lun=0

This presents “ESXI02-BOOT” to the ESXi Host “VB001_ESXI02” as LUN 0:
map-lun vol-id=”ESXI02-BOOT” ig-id=”VB001_ESXI02″ lun=0

7. Create two shared DATA LUNs (2TB Example)
This creates 2X 2TB LUNs named Datastore01&02 and enables VAAI-TP alerts:
add-volume alignment-offset=0 lb-size=512 vol-name=”Datastore01″ vol-size=”2048g” vaai-tp-alerts=enabled parent-folder-id=”/VDICluster_DATA”
add-volume alignment-offset=0 lb-size=512 vol-name=”Datastore02″ vol-size=”2048g” vaai-tp-alerts=enabled parent-folder-id=”/VDICluster_DATA”

8. Map the two DATA LUNs to both ESXi Cluster hosts using HLU1&2
map-lun vol-id=”Datastore01″ ig-id=”VB001_ESXI01″ lun=1
map-lun vol-id=”Datastore01″ ig-id=”VB001_ESXI02″ lun=1
map-lun vol-id=”Datastore02″ ig-id=”VB001_ESXI01″ lun=2
map-lun vol-id=”Datastore02″ ig-id=”VB001_ESXI02″ lun=2

Note: You will receive a prompt when adding the shared datastore’s to the second host: Are you sure you want to create additional LUN mapping for Volume Datastore01? (Yes/No): Yes This is something to be aware of when creating scripts to map a volume(s) to multiple hosts.

Validate the LUN Configuration:
show-volume vol-id=”Datastore01″
show-volume vol-id=”Datastore02″



  1. Thanks for the useful summary. I thought I’d share the following PowerCLI code which will generate the commands for steps 1-3 for all clusters in vCenter:

    $vmclusters = get-cluster
    foreach ($cluster in $vmclusters) {
    Write-Host “add-folder caption=””$($cluster.Name)”” folder-type=ig parent-folder-id=””/”””
    $VMHosts = $cluster | Get-VMHost
    foreach ($VMHost in $VMHosts) {
    Write-Host “add-initiator-group ig-name=””$($VMHost.Name)”” parent-folder-id=””/$($cluster.Name)”””
    $hbas = $VMHost | Get-VMHostHba -Type FibreChannel
    foreach ($hba in $hbas) {
    $pwwn = ((“{0:x}” -f $hba.PortWorldWideName) -split “(..)” | Where {$_}) -join “:”
    Write-Host “add-initiator ig-id=””$($vmhost.Name)”” initiator-name=””$($vmhost.Name)_$($hba.Device)”” port-address=””$pwwn”””

  2. Hello David,

    Thanks for the useful info, I see that we are using HLU and for the ALU field we are just mentioning a name unlike a lun id in VNX or VMAX in addition to the name field/attribute. Will the xtreme io be creating any lun id internally, if yes is there an option to check the ALU.
    Thanks in advance


Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s