Abiquo 5.0

Skip to end of metadata
Go to start of metadata

Introduction

This optional feature will enable our customers to overcome a limitation of using NetApp storage with ESXi. 

Background

A NetApp storage device has a single, fixed IQN. An ESXi host can access a maximum of 256 LUNs (volumes). This limit extends to an ESXi cluster because hosts in the same cluster need to access the same volumes, for example, to perform vMotion of virtual machines. NetApp only allows a host to access the volumes of the NetApp igroup that the host is in.

By default, the Abiquo NetApp plugin works with only one igroup (by default AbiGroup). This feature enables you to use multiple igroups to restrict the number of volumes that are accessible to each ESXi host by organising the volumes into multiple igroups. By allowing ESXi hosts to only see the volumes they need to use, you can increase the total number of volumes available on the platform.

Abiquo recommends that you start using this feature with new hosts. For existing hosts, you will need to power off the virtual machines to perform an upgrade on both the hypervisor and Abiquo database to move existing LUNs out of the default igroup.

Specify Igroups in Abiquo Configuration Properties 

Before you add a host to Abiquo, add a line containing the machine's iSCSI name to an initiatorGroupName property line in the abiquo.properties file for the datacenter. This will identify the machine and the igroup it will belong to. See  NetApp Storage Configuration for information about how to find or set the ESXi iSCSI name.

For example, if the host has initiatorIQN =  iqn.1998-01.com.vmware:thunder05-1d72395a, add the part after the colon:

abiquo.storagemanager.netapp.initiatorGroupName.thunder05-1d72395a  = igroupCluster1 

Add one line in the abiquo.properties file for each ESX host.

If there is no property defined for a host, Abiquo will use the default igroup (usually abiGroup), so Abiquo can keep adding KVM volumes into the default igroup. 

In the following example, the 6 hosts are added to two igroups:

abiquo.storagemanager.netapp.initiatorGroupName.esxHost1-aaaaaaaa = igroupCluster1
abiquo.storagemanager.netapp.initiatorGroupName.esxHost2-bbbbbbbb = igroupCluster1
abiquo.storagemanager.netapp.initiatorGroupName.esxHost3-cccccccc = igroupCluster1

abiquo.storagemanager.netapp.initiatorGroupName.esxHost4-dddddddd = igroupCluster2
abiquo.storagemanager.netapp.initiatorGroupName.esxHost5-eeeeeeee = igroupCluster2
abiquo.storagemanager.netapp.initiatorGroupName.esxHost6-ffffffff = igroupCluster2

Limitation

After a LUN is mapped to an igroup (making it visible to hosts), it is never removed, so, for example:

  • A volume vol1 is used on a VM running on hostA (igroupA)
  • Detach vol1 and attach to a VM running on hostB (igroupB)

Even though igroupA no longer needs vol1, it is still visible and counting in the 256-LUN limit.

Workaround

The workaround is to manually detach unused LUNs from the igroups. Abiquo will provide a script to do this that can be run periodically.

Abiquo Changes

We will change two flows in the plugin:

  1. Previously, when we created the LUN, the plugin mapped the LUN to abiGroup. Now the LUN is not mapped to the igroup until it will be attached to a VM. The LUN cannot be used yet.
  2. When Abiquo needs a LUN to mount the volume, Abiquo asks the SSM for privileges to see the LUN. On the storage device:
    1. Check that the igroup has been created on the storage device. If not, create it
    2. Check that the host is in the igroup. If not, add it
    3. Map the LUN to the right igroup and return the LUN ID to populate the initiator mapping database table
      • Note that a LUN that is already mapped to another igroup will not be removed from that igroup - see Limitation above

Impact on Abiquo upgrades

The hypervisor -> igroup relation has not been added to the GUI, API or a hypervisor table in the database. This relation will be added in a future release including an igroup database column in the hypervisor database table. At this time, the abiquo.properties solution will be deprecated and it will be necessary to add the igroup information currently stored in abiquo.properties to the API and Database. Abiquo will support this upgrade.