EMC – Next-Generation VNX – Data In Place Upgrades

Approximately 4 or 500 years ago, I spent a number of nights in various data centres around the country upgrading customers’ CLARiiON arrays from CX200s to Cx500s, CX300s to CX3-20s, and so on. The neat thing about the CLARiiON was that EMC had a pretty reasonable way of doing data in place (DIP) upgrades, including across generations if required. With the introduction of the VNX, that changed. Primarily because of the switch from FC to SAS on the back-end. And with the “Next-Generation” VNX (VNX2), you also can’t go from VNX to VNX2. Which some people have been understandably unhappy about. The procedure hasn’t changed much over the years, and you can read Rob’s post here for a pretty thorough look at what’s involved.

So why would you want to do this anyway? Especially given that, if you’re upgrading a VNX5200 for example, you’ve probably only had the array in operation for a few years. Well, requirements change, companies grow, people need more horsepower. Sometimes EMC makes it a commercially viable option to do a DIP upgrade rather than replace the array with another one. There’re are a bunch of reasons.

I don’t want to go into exactly what the steps are, as your friendly EMC service folk or partner will be able to go through that with you, but I thought it might be an idea to share a few things to know prior to launching into one of these procedures (or even making the decision to upgrade in this fashion).

The supported source systems include:

  • VNX5200;
  • VNX5400;
  • VNX5600; and
  • VNX5800.

Note that you cannot convert a VNX7600, nor can you go from VNX to VNX2 (as I mentioned before). Also, the VNX8000 can’t be a source system, because that’s already as big as the VNX goes.

Supported targets for upgrade include:

  • VNX5400;
  • VNX5600;
  • VNX5800; and
  • VNX7600.

You can’t go to a VNX8000. You can also upgrade the type of array as follows:

  • Block to block;
  • File to file; and
  • Unified to unified.

You can’t convert from a block system to a higher performing unified system. You can, however, do a block conversion, and do a block-to-unified upgrade. It generally takes about six hours to complete a DIP conversion. As always, if you’re considering this approach, talk to EMC about it.


EMC – Using naviseccli to configure a VNX domain

The concept of domains have been with CLARiiON and (later) VNX arrays since the early part of the 21st Century. The configuration is fairly simple, and, in keeping with the idea that you can do anything with naviseccli, I thought I’d do a quick post on using naviseccli to join SPs to a domain. This assumes you have security setup with your naviseccli environment, and you know the IPs of the SPs you’re trying to add to the domain.

You can the set the master node for a domain with this command. Note that the nominated node can’t be a member of another domain at the time.

naviseccli -h SPA-IP-Address domain -setmaster SPB-IP-Address
 WARNING: You are about to set the following node as the master of the domain: SPB-IP-Address
 Proceed? (y/n) y

If a node is a problem, or you’re about to remove an array from your environment, it’s a good idea to remove it from the domain before you rip it out of the rack.

naviseccli -h SPA-IP-Address domain -remove SPA-IP-Address
 WARNING: You are about to remove the following node from the domain: SPA-IP-Address
 Proceed? (y/n) y

You may also wish to add another couple of nodes, particularly if you have a number of arrays in the environment.

naviseccli -h SPB-IP-Address domain -add SPA-IP-Address
 WARNING: You are about to remove the following node from the domain: SPA-IP-Address
 Proceed? (y/n) y

And that’s it. I recommend you check out EMC’s white paper – Domain Management with EMC Unisphere for VNX (p/n h8853.4) – for more information on VNX domain management.

EMC – Basics – Accessing RemotelyAnywhere on VNX with MCx

Many moons ago I wrote a brief article about accessing RemotelyAnywhere on the CX4. This was prompted by changes in Release 29 of FLARE that changed the access mechanism for remote console access on the SPs. I’ve been working on some VNX2s recently (or VNX with MCx – as EMC really would like them to be known), and I was curious as to whether the process was the same.

Pretty much, yep.



Nowadays there are a few ways to access RemotelyAnywhere on the VNX SP. There are a few different ports on the array that can be used, depending on your circumstances. In some environments, where you’re not allowed to touch the customer’s network with your own gear, the service port may be more appropriate. Here’s an image of the ports from EMC. The model of VNX you’re using will dictate the layout of the ports.


You can go via:

  • the SP’s management port: http://<SP IP address>:9519;
  • the SP’s service port: (SP A) or (SP B); and
  • the SP’s serial port: (this assumes you’re connected via serial already – more on that below).


Management Port

This is fairly straightforward, and you’ll need to be on a network that has access to the management ports.


Service Port

So, you’re probably already aware that the best way to connect to the service port is to set your laptop TCP/IP settings as follows:

  • IP Address – or
  • Subnet Mask –
  • Default Gateway – leave blank
  • DNS server entries – leave blank


Serial Cable

If you want to connect via the serial cable, you’ll need to setup a PPP connection on your laptop. The following steps assume that you’ve got a USB to serial adapter and you’re using a Windows 7 machine.

Device Manager

  • Right Click on your Computer icon and Select Manage
  • Click on Device Manager
  • Expand Ports (COM & LPT)
  • Look for the USB-to-Serial Comm Port (COM##)
  • The COMM number will be the one you will select during the configuration of your PPP connection.


Create the COM Port

  • Click Start -> Control Panel -> Phone and Modem.
  • Click the “modem tab” and click Add.
  • On the Install new Modem Pane, select the Don’t detect my modem box, then click Next.
  • Select Communications cable between two computers, then click Next.
  • Select the COM port from the previous step, then click Next.
  • Click Finish.
  • Highlight the new modem and click Properties.
  • Select the “modem tab”  and adjust the max speed to 115200 then click OK.
  • Click OK again to exit the Phone and Modem screen.
  • In the Computer Management window, disable and then re-enable the USB Serial connection in Device Manager. Do this by right-clicking on it.


Setting Up the PPP Connection

  • Click Start -> Control Panel -> Network and Sharing Center, click Set up a new connection or network (at the bottom).
  • Click Next, select Set up a dial-up connection and click Next.
  • This screen should list modems and select the Communications cable between two computers created above.
  • On the next screen put in a random phone number.  This is required in order to complete this step. You need at least one digit, but you’ll remove it later.  Next put in the username and password and give it a name. Then click on Connect. This connection will fail displaying: Connection Failed with error 777. Click on Set up the connection anyway.
  • You will get: “The connection to the Internet is ready to use”. Select Close.
  • The above connection should now appear in Network Connections. Open Control Panel and select Change Adapter Settings.
  • Right-click on your new Modem connection and select Cancel as Default Connection.
  • Right Click on your new Modem connection again and select Properties.


Modify the Settings

  • In the General tab, remove the phone number entry and leave it blank.
  • In the General tab, click configure and set Max speed to 115200 and select enable hardware flow control.
  • In the Options tab, click PPP settings and check that the top two boxes are selected (LCP extensions and SW compression).
  • In the Security tab, check Data Encryption is Optional Encryption (connect even if no encryption) is set.
    In the Networking tab, check Internet Protocol Version 4 is selected and click on Properties.
  • In the Networking tab, choose Internet Protocol Properties, then the Advanced button. Uncheck Use default gateway on remote network.
  • Click OK.
  • Click OK.
  • Click OK.



Here’s what it looks like when you log in – enjoy.


EMC – VNX Pool LUN Allocation vs Default Owner

I had a question about this come up this week and thought I’d already posted something about it. Seems I was lazy and didn’t. If you have access, have a look at Primus article emc311319 on EMC’s support site. If you don’t, here’s the rough guide to what it’s all about.

When a Storage Pool is created, a large number of private LUNs are bound on all the Pool drives and these are divided up between SP A and B. When a Pool LUN is created, it uses the allocation owner to determine which SP private LUNs should be used to store the Pool LUN slices. If the default and current owner are not the same as the allocation owner, the I/O will have to be passed over the CMI bus between SP, to reach the Pool Private FLARE LUNs. This is a bad thing, and can lead to higher response times and general I/O bottlenecks.

OMG, I might have this issue, what should I do? You can change the default owner of a LUN by accessing the LUN properties in Unisphere. You can also change the default owner of a LUN thusly.

naviseccli -h <SP A or B> chglun -l <metalun> -d owner <0|1>


-d owner 0 = SP A
-d owner 1 = SP B

But what if you have too many LUNs where the allocation owner sits on one SP? And when did I start writing blog posts in the form of a series of questions? I don’t know the answer to the latter question. But for the first, the simplest remedy is to create a LUN on the alternate SP and use EMC’s LUN migration tool to get the LUN to the other SP. Finally, to match the current owner of a LUN to the default owner, simply trespass the LUN to the default owner SP.

Note that this is a problem from CX4 arrays through to VNX2 arrays. It does not apply to traditional RAID Group FLARE LUNs though, only Pool LUNs.

EMC – HeatMap Analyzer – Basics – Part 3 – Charts

This is part 3 of a series where I will go into a little more detail on how you use HeatMap Analyzer. In this article I will look at the different sort of charts that can be drawn using the Analyzer component.


Line Chart


This is a standard Line chart. Line style charts (Line, Stacked and Line by Day) are all comprised of several sections – the main chart (upper) and the control section (lower). The control section allows you to zoom and pan the chart. If, for example, you are viewing several months worth of performance data (as above) then analysing specific points in time becomes quite difficult. Dragging the sliders in the control section closer together will allow you to view the data in greater detail.



Hovering over a data point will display a tool-tip with the details of that point.


Line by Day Chart

The Line by Day chart breaks down a standard Line chart and overlays each day. This can be useful in finding time related trends in data sets. For example, looking at a particular SP’s utilization over the past 3 weeks might look something like this:



Trying to work out time based trends in this data is visually difficult, however if we chart it using a Line by Day chart it allows you to analyze the data more intuitively. You could make the following conclusions:

1. Utilization over the weekend is generally lower.

2. There is consistently a peak in utilization at 5 am.

3.  The highest peak during business hours is at 9 am.

4. Utilization of the array begins to increase from around 6 pm.




Bear in mind that charting multiple objects in the one chart will potentially make analysis more difficult, and while tool tips are shown when you hover over a data point, the time will be correct however the date is all converted back to 1st January 2000.


Stacked Chart



A stacked chart aggregates the data points for the selected objects, and shows the total of the attribute charted for a particular time. Only certain types of Attributes can be charted in a Stacked chart (and Pie charts). For example it doesn’t make a lot of sense to draw a Stacked chart of SP utilization. However, where the unit of measurement is “aggregatable” like Total Bandwidth (measured in MB/s) or Total Throughput ( measured in IOPS ), it can be charted this way.


If you really want to be able to chart these other unit types using Stacked charts, you can modify the units aggregatable flag in the Configuration tab under the “Attribute Units”  section, removing the unit and re-adding it  with the aggregatable flag ticked. This should enable this chart type for those attributes.


Pie Chart



When selecting a Pie Chart, you are unable to select which objects are to be drawn (all objects are included in the chart calculations). Specifying Max Slices will limit the chart to display n-1 objects, the objects that are shown will be ordered largest to smallest, and all other objects will be combined under the “Other” slice.


Distribution Chart



A distribution chart allows you to determine the percentage of data sets that fall within particular bands.  The above chart shows that 46% of SP A’s response times are in the 0-3 ms band, whereas 45% of SP B’s response times are in the 6-9ms band.  When drawing a Distribution chart leaving the Minimum and Maximum blank will leave the script to determine the  ranges that will contain the entire data set. Using the Minimum and Maximum you can change the range that is charted, and changing the interval will change the number of bands displayed (by default 10).



Changing the Minimum to 0, Maximum to 20 would result in the above chart, breaking the distribution down into smaller bands



This option displays a text table of the Attribute and Objects that you have selected, you can select all the data and paste it into you favorite analytic tool


Connectivity Graphic


Connectivity charts show the hierarchical connectivity of the array (currently this chart is only available for CLARiiON arrays)

Front End Ports → Storage Processor →LUN → MetaLUN Component → RAID Group / Pool  → Private RAID Group → Disk

Modifying the depth field will change the depth to which the chart is drawn. Modifying the Attribute field will change the Attribute that is represented on the chart (Connectivity is a special attribute that weights each link the same). Link size is relative to the average for the selected attribute for the particular object, where the object does not expose that attribute (i.e. Ports don’t expose Utilization) will show a thin link.

NOTE: Arrays with more complex configurations and larger number of disks don’t necessarily display very clearly in this format.




In Part 4 we will look at the Configuration tab and how to Automate NAR file collection.

EMC – HeatMap Analyzer – Basics – Part 2 – Filtering

This is part 2 of a series where I will go into a little more detail on how you use HeatMap Analyzer.





Being able to filter and order objects can be useful, especially when there are a lot of them and you are trying to find where a problem may be originating.

Expanding the Filter option will display the following window.




This can be broken into four main sections. Each of these sections is effectively AND together when the filter is executed.

Filter by Attribute:  If this section is enabled it allows you to retrieve the top|bottom “n” objects ordered by avg|min|max attribute.

Object Type: For objects that expose a “Type” attribute (currently this is only LUNs and Disks). This option allows you to show only specific Object Types. For example if you only wanted to view Public RAID Group LUNs and Public Pool LUNs  then selecting these options will filter out all other types of LUNs. NOTE only object types are are present in the array will be available in the list, and the label that particular Object Types are given may vary depending on the version of Flare code.

Include: This option allows you to include objects based on whether the extended data for that object contain the text entered in this field, this may include Name, Owner, Type, Host (depending on what extended data is available for that object). This can be a comma separated list and is case insensitive. NOTE leading or trailing spaces will be included in the search.

Exclude: This option allows you to exclude objects based on whether the extended data for that object contains the text entered in this field, this may include Name, Owner, Type, Host (depending on what extended data is available for that object). This can be a comma separated list and is case insensitive. NOTE leading or trailing spaces will be included in the search.


So the following filter selections would display the Top 4 by average Queue Length Public Pool LUNs where the extended information includes SP A and excludes Hypervisor.




Once you have filtered the object list you are able to chart the objects against any of the attributes that are exposed by that object type.


In Part 3 we will look at the different chart types and what they may be used for.

EMC – HeatMap Analyzer – Basics – Part 1 – Processing a NAR file

Mat has agreed to do some posts on the basics of using the EMC HMA. In this episode, he’s looking at manually loading NAR files and other cool stuff. Enjoy.


This is part 1 of a series where I will go into a little more detail on how you use HeatMap Analyzer. In this article we go through the process of manually loading a NAR file, basic charting and HeatMaps.

At this point you should have the HeatMap Analyzer appliance configured and you may be wondering what you can begin to do with it. I wrote the original HeatMap tool so I could visualize what was occurring over an entire array or parts thereof at any one point in time. This evolution of that script is HMA. It  now allows you to look closer at individual components of the array and while this is something that can be done with the current EMC Analyzer tool set, it is limited by the amount of data that you can load at any one time.


Manually Load NAR File

Point your browser at the appliance and go to the Configuration tab.




Expand the “Manual Load NAR Files” section and select the “Choose Files” button. Here you can select one or more NAR files from a single or multiple arrays.  Depending on the number of “objects” in the NAR file (disks, LUNs, Pools, Ports, etc), processing of each NAR file may take a reasonable amount of time. As a rough guide for every 100 objects in the NAR file it will take about 30 seconds to process (assuming the standard 300 data points for each object).  Some of my CX4-960 arrays that have 3000 odd objects take 10-15 minutes to process each file. NOTE: if you are processing large NAR files or lots of smaller NAR files then the browser may currently timeout waiting for the processing to finish. If this is the case you can monitor the process through the Server Status tab or from the command line of the appliance (see below).



Note: you should let all processing complete before you begin to draw HeatMaps or charts under the Analyzer tab, if you don’t you may get some unexpected results due to the non-granular locking that SQLite uses while updating the database. 

Monitoring the NAR file load process

If you want to monitor the processes that are working on your NAR file(s) there are some tools available on the Server Status tab.

For basic process monitoring expand the “Process Monitoring” section, and tick the “Auto Update” option. If you are currently processing a NAR file you will see the ProcessNAR.pl script running.




For more detailed monitoring you can view the logs created by each script. On the Server Status tab expand the “Logs Viewer” section, select the log file that you want to monitor and select “Auto Update” and “Auto Scroll”. You may want to combine this with the basic process monitoring to get a better picture of what is occurring.



Note: it’s worthwhile turning off Auto Update after you have completed using these tools as leaving it running will place unnecessary load on the appliance


To draw HeatMaps for a particular array go to the HeatMaps tab.




Array: If you have multiple arrays you can select which array that you want to draw a HeatMap for.

Array Type: This gives a description of the array type (currently only CLARiiON and Data Domain types are supported).

Start/End: This is the Start and End date of the HeatMap. NOTE: Selecting a long duration for the HeatMap may take a while to process, and it is not recommended that you draw a HeatMap that spans more than several days without increasing the Average Interval.

Avg Interval: The number of seconds between each chart point.

Object List: This is a list of objects that you can select attributes from to chart and may include.

All LUNs / Storage Processors / Disks / RAID Group / Port / Thin Pool / CPU / Asynchronous Mirror / Snap Session.

The object that are shown will depend on what you have configured on your array (if you don’t have any Asynchronous Mirrors defined then you wont see this option).

Selecting one of these drop down lists will show a list of attributes that can be charted for this object.




Select an attribute and it will be added to the list of object/attributes that will be drawn in the HeatMap. Select which object / attribute combinations that you want to display in the HeatMap and then press the “Draw HeatMap” button. The HeatMap configuration pane can be hidden by clicking on the top arrow in the top left corner.




The way the HeatMap works is by defining a minimum, a maximum and a skew for each object and attribute. These can be modified in the Configuration Tab under the HeatMap Attribute Normalization.

Analyzing the Data

For more detailed analysis of individual objects in the array go to the Analyzer tab. On this tab you will initially see three panes. The first left hand pane allows you to configure and draw charts for various objects, the second upper right pane gives global details for the array and the third lower right pane gives you details for the selected object.




Array: If you have multiple arrays you can select which array that you want to draw a HeatMap for.

Array Type: This gives a description of the array type (currently only CLARiiON and Data Domain types are supported).

Object Type: The type of object to chart (ie Storage Processor, LUN, Disk, etc)

Start/End: This is the Start and End date of the chart. .

Filter: Filter options that allow you to include / exclude objects based on set criteria (I’ll go into more detail about this later).

Object: The object(s) that you want to chart.

Attribute: The metric that you want to chart for the object, each object type exposes a different set of attributes.

Chart dependent options:

Line Charts, Stacked Charts and Tables

Avg Interval: The number of seconds to average the data points out to, leaving as zero or blank will process the data as is.

Pie Charts

Max Slices: The Maximum number of slices to draw in a Pie chart. If there are more than “n-1” objects  then extra objects will be grouped under “Other”.

Distribution Charts

Minimum: The minimum number to chart.

Maximum: The maximum number to chart.

Intervals: The number of intervals to chart.

Chart Type:

Line: A standard line chart, multiple object can be selected and charted against one another.

Line by Day: A standard line chart where each day is stacked against each other, while you can select multiple object it’s not recommended as it makes the chart difficult to interpret.

Stacked: A stacked line chart, this option is available where the attribute being graphed is able to be aggregated (ie MB, KB or GB rather than % Utilization), again multiple objects can be selected.

Pie: A pie chart, this will draw a pie chart for all of the objects for the selected “Object Type”.

Distribution: A bar chart showing the % of values that fall between certain ranges.

Table: A text table of the data.

Connectivity: A Connectivity / SanKey chart. This show how each of the objects in the array are connected. It is only avaliable for CLARiiON devices.

Once you have selected the Object Type, Object(s) and Attribute that you want to chart, click the “Graph” button and chart will be drawn for that selection.



Depending on the type of chart drawn you may have various controls that allow you to explore the data more closely. Line style charts have the slider control at the bottom which allow you to focus on a subset of the data. Tables allow you to select all the data so it can be copied. Connectivity charts allow you to control the depth of the chart. And the attribute that controls the weight of each of the connections, all chart types except Tables allow you to save the chart as a JPEG.


In the next article I will go into more detail regarding Filtering and the different Chart Types


EMC – HeatMap Analyzer v0.1 Now Available

It’s alive. Mat has been coding like crazy and enhancing the HeatMap script and turning it into like, an appliance kind of thing. You can grab it from the Utilities page and it comes in two parts – the core code and third-party scripts package. While the combined package size is small, it saves redistributing stuff that hasn’t changed. In any case, download it, give it a spin and let us know your thoughts. Obviously, it’s still a bit ugly, and still a bit version 0.1, but that’s what you get for free. Tell your friends.

EMC – Go home Unisphere, you’re drunk

Mat forwarded this one through to me this morning. Seems one of his CX4s is feeling a bit odd :)


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.