EMC – VNX / CX4 LUN Allocation Owner and Default Owner

Mat’s been doing some useful scripting again. This time it’s a small PERL script that identifies the allocation owner and default owner of a pool LUN on a CX4 or VNX and lets you know whether the LUN is “non-optimal” or not. For those of you playing along at home, I found the following information on this (but can’t remember where I found it). “Allocation owner of a pool LUN is the SP that owns and maintains the metadata for that LUN. It is not advised to trespass the LUNs to an SP that is not the allocation owner. This introduces lag. The SP that provides the best performance for the pool LUN. The allocation owner SP is set by the system to match the default SP owner when you create the LUN. You cannot change the allocation owner after the LUN is created. If you change the default owner for the LUN, the software will display a warning that a performance penalty will occur if you continue.”

There’s a useful article by Jithin Nadukandathil on the ECN site, as well as a most excellent writeup by fellow EMC Elect member Jon Klaus here. In short, if you identify NonOptimal LUN ownership, your best option is to create a new LUN and migrate the data to that LUN via the LUN Migration tool. You can download a copy of the script here. Feel free to look at the other scripts that are on offer as well. Here’s what the output looks like.




EMC – Naviseccli, disks and Virtual Pools

EMC seem to be calling Storage Pools Virtual Pools now. Or maybe they always called them that. I’m not sure. Whatever you want to call them, you need to be aware that some of the commands you traditionally ran on RAID Groups and LUNs doesn’t necessarily yield the same results on Pools. For example, if I want some information on a disk and any LUNs bound on it, I can run the following command, with the disk referenced using B_E_D (Bus_Enclosure_Device) format.

naviseccli -h sp-ip-address getdisk 0_2_5

Bus 0 Enclosure 2  Disk 5
Vendor Id:             SEAGATE
Product Id:            ST345085 CLAR450
Product Revision:        HC08
Lun:                     Unbound
Type:                    N/A
State:                   Enabled
Hot Spare:               NO
Prct Rebuilt:            Unbound
Prct Bound:              Unbound
Serial Number:           3QQ1WJW9
Sectors:                 N/A
Capacity:                412268
Private:                 Unbound
Bind Signature:          0x514, 2, 5
Hard Read Errors:        0
Hard Write Errors:       0
Soft Read Errors:        0
Soft Write Errors:       0
Read Retries:     N/A
Write Retries:    N/A
Remapped Sectors:        N/A
Number of Reads:         132578985
Number of Writes:        55935766
Number of Luns:          0
Raid Group ID:           N/A
Clariion Part Number:    DG118032601
Request Service Time:    N/A
Read Requests:           132578985
Write Requests:          55935766
Kbytes Read:             956277952
Kbytes Written:          805876939
Stripe Boundary Crossing: None
Drive Type:              Fibre Channel
Clariion TLA Part Number:005048849
User Capacity:           0
Idle Ticks:              166532928
Busy Ticks:              7964279
Current Speed: 4Gbps
Maximum Speed: 4Gbps

Note that it says the LUN is unbound. It’s not unbound though, it’s part of a Storage Pool. So to get information about the LUNs in a Pool, you’ll need to run a command which specifically addresses Storage Pools.

naviseccli -h sp-ip-address storagepool –list [-id poolID|-name poolName] [-availableCap] [-consumedCap] [-currentOp] [-description] [-disks] [-diskType] [-luns] [-opState] [-opStatus] [-prcntOp] [-rawCap] [-rtype] [-prcntFullThreshold] [-state] [-status] [-subscribedCap] [-userCap] [-prcntFull]

You can’t use -id and -name together. To see the overhead of using pool storage, -consumedCap will give you the total. Unfortunately -diskType is not as useful as I’d hoped, because if you’re running different types it comes back with “Mixed”.

If you want to modify a pool’s configuration, you can use -modify to, er, modify the pool.

naviseccli -h sp-ip-address storagepool -modify -id poolID| -name poolName[-newName newName] [-description description] [-fastcache on|off] [-prcntFullThreshold threshold] [-autotiering scheduled|manual] [-o]

The cool thing about this is that you can turn FAST Cache on and off, and use it to modify FAST auto-tiering as well. This could be very useful where you want to script for certain workloads to use FAST Cache during the day, but then you want to have it off during backup windows.

Finally, my favourite switch is -feature -info, which lists a pool’s configuration information.

naviseccli -h sp-ip-address storagepool -feature -info [-isVirtualProvisioningSupported] [-maxPools] [-maxDiskDrivesPerPool] [-maxDiskDrivesAllPools] [-maxDiskDrivesPerOp] [-maxPoolLUNs] [-minPoolLUNSize] [-maxPoolLUNSize] [-numPools] [-numPoolLUNs] [-numThinLUNs] [numDiskDrivesAllPools] [-availableDisks]

The main feature of this command is that you don’t need to remember the maximum numbers of disks you can put in a pool. In an environment where you may have a number of different models of CLARiiON and / or VNX, this will save some time digging through various pdf files from EMC.

EMC – naviseccli getlun -capacity

I needed to run this command recently to get the blocksize of a pool LUN that I wanted to migrate to a traditional FLARE LUN. I’ll going into the reasons for the migration another time, but basically a pool LUN doesn’t show you the number of blocks consumed when viewed through Unisphere.

So I used naviseccli to report the block count accurately so I could create another LUN of exactly the same size.

I:\>naviseccli -address getlun 432 -capacity
LUN Capacity(Megabytes):    1048576
LUN Capacity(Blocks):       2147483648

It’s also important to note that you cannot migrate a LUN using the LUN Migration tool to a LUN that is larger than the source. Test it for yourself if you don’t believe me. If you want to migrate a LUN to a larger destination you need to use SAN Copy. This also became an issue recently when I needed to migrate some Pool LUNs to traditional MetaLUNs and used components that were a block or two too large. Fortunately when you create a MetaLUN you can specify the correct block count / MB / GB / size.

naviseccli – don’t hate it because it’s beautiful.