I posted a few months back about the EMC Storage Integrator (ESI) when EMC put out the 3.0 version here:
On November 18th, the 3.0.1 version of ESI was released and I wanted to write a quick post about what’s new. Even though numbering-wise this is referred to as a minor release, it is a very important one for those using (or want to use) the VMAX-related PowerShell cmdlets that are provided with ESI.
The 3.0.1 release offers a few key enhancements for these cmdlets:
- Support for FAST VP
- Metavolume support
- External masking views
So let me go into a bit more detail on what these enhancements offer.
ESI 3.0.1 introduces a variety of FAST VP-related PowerShell cmdlets, these include:
- Add-EmcFastVpPolicy: Adds or associates the specified storage group to the specified FAST VP policy.
- Add-EmcLunsToVmaxStorageGroup: Adds one or more LUNs to the specified VMAX storage group. Clears the host disk signatures and assigns new ones.
- Get-EmcFastVpPolicy: Gets the FAST VP policies that are associated with the specified storage system or VMAX storage group.
- Get-EmcStorageTier: Gets the storage tiers in the specified storage system with the specified FAST VP policy.
- Get-EmcVmaxStorageGroup: Gets all storage groups for the specified VMAX storage system.
- New-EmcVmaxStorageGroup: Add LUNs to the specified VMAX storage group.
- Remove-EmcFastVpPolicy: Removes the specified FAST VP policy from the specified storage groups.
- Remove-EmcLunsFromVmaxStorageGroup: Removes LUNs from a VMAX storage group.
- Remove-EmcVmaxStorageGroup: Deletes the specified storage group that is associated with the specified FAST VP Policy.
You can see that these cmdlets currently revolve around adding or removing policies, devices and groups to and from associations with one another. Support for creating tiers and policies is not yet there. But this isn’t a big deal since I imagine what is provided will cover 95% of the FAST VP related operations that users commonly perform. I don’t personally know the roadmap, but I would expect this list to grow in future releases.
Prior to 3.0.1 configuring large volumes was tricky with ESI cmdlets due to the lack of metavolume support in the product. Either autometa needed to be enabled or you had to do what I did in my previous post and integrate some standard Solutions Enabler commands into PowerShell scripts which was not exactly pretty. And defeats the purpose of the ease of using these cmdlets (why not just script entirely in SE?). Well no longer is this an issue. ESI now supports provisioning metavolume explicitly through the “composite LUN” cmdlets.
- Add-EmcLunsToExistingCompositeLun: Adds unbound LUNs to existing metas or composite LUNs.
- Add-EmcHostDiskToCluster: Adds a disk to a cluster
- Get-EmcAvailableCandidatesForLunComposition: Gets all the LUNs which are qualified to be a member LUN of the specified meta, meta volume, or composite LUN. If the specified Meta LUN is a stripe type, this cmdlet gets the unbound LUNs of the size same as the stripe size of the meta. If the meta is a concatenated meta or composite LUN, the cmdlet gets all unbound LUNs that are qualified to be a member LUN of the specified meta.
- Get-EmcCompositeLun: Gets all composite LUNs from the specified storage system.
- Get-EmcCompositeLunHead: Gets the metas or composite LUN heads from the specified storage system or specified meta or composite LUN member.
- Get-EmcCompositeLunMember: Gets one or more meta or composite LUN members of the specified composite LUN head.
- Get-EmcCompositeLunMemberSibling: Gets the meta or composite LUN member siblings of the specified composite LUN member.
- Get-EmcUnboundLun: Gets all the unbound LUNs that are not bound to any storage pool from the specified storage system.
- New-EmcCompositeLun: Creates a new meta or composite LUN from the specified LUNs. To compose or form a meta or composite LUN, requires at least two LUNs and the first LUN becomes the metahead. In case of a concatenated meta or composite LUN, the configuration head can be bound or unbound. All remaining members must be unbound.
- Update-EmcCompositeLun: Updates the EMC meta or composite LUNs for the specified storage system or composite LUN head (metahead).
A quick example would be as follows. First create a few members:
C:PS>$lun1 = New-EmcLun -StorageSystem $storage -Name mm1 -Capacity 1GB C:PS>$lun2 = New-EmcLun -StorageSystem $storage -Name mm2 -Capacity 1GB
Then form those members into a new meta.
C:PS>$compositelun = New-EmcCompositeLun -Name new_stripe -LunsThatParticipateInComposition $lun1, $lun2 -CompositionConfiguration StripeOnly
Nicely, if you want to expand a striped metavolume ESI will automatically create a BCV to temporarily store the data on it. A nice advantage or Solutions Enabler or even Unisphere. However it does not delete it when completed–this must be done manually.
This one made me happy. Previously, ESI required itself to be the one to create the masking views. It enforced this by naming the initiator groups in a very specific way which is what allowed ESI to know it made them. So you either had to use ESI to create the IG or rename your current IGs to fit the syntax. Not ideal. ESI 3.0.1 now allows you to just add a device to a given storage group (using the command
Add-EmcLunsToVmaxStorageGroup)bypassing this requirement. The Set-EmcLunAccess command has also been enhanced, but the Storage Group command is by far the easiest way to mask a device to an exisiting, non-ESI-created view.
There are quite a few other new features and enhancements in ESI, not just to VMAX/PowerShell stuff. Check out the release notes for the litany of new features:
And yes, for those astute readers the release notes are incorrectly named in the link (they say technical notes) and should say release notes, but the above link is indeed to the release notes. If it stops working at some point it means it was renamed. If so, just go to support.emc.com and search for “EMC Storage Integrator”. It will be one of the first results.
Also check out the product guide, technical note and PowerShell cmdlets online help:
Download ESI itself here: