Oct 24, 2017 Visio by DPTPB release update notes. Long over due documentation of new NetApp FAS / AFF Disk Shelf Stencil, already released back in May :=)
New DPTPB NetApp FAS / AFF Disk Shelf Stencil has by far the most complex internal structure, hopefully in favour of much easier shape usage. Besides standard V2 design changes, there is now much more automation and dynamic features with the new disk shelf shapes.
Only one rear view “Stack” shape per shelf type
In previous generation DPTPB stencils I had separate rear view shapes for SAS stacks ranging from one shelf / stack to ten shelves per stack. Add different shelf models into equation and the number of different shapes was getting larger and larger, making shape maintenance difficult and/or time-consuming.
I toyed with idea of making stack shapes dynamic. Just select number of shelves in a stack and then stack would be automatically created with shelves and intra-shelf cabling in place.
As it turns out adding shapes and connecting them is beyond capabilities of Visio shapesheet capabilities (or my skills). Adding this kind of functionality would have required VBA coding or Powershell scripting, both adding unnecessary complexity for usage and shape maintenance.
If you can’t add things what is the next best thing?
How about making full ten shelf stacks and remove shelf shapes as required? That could work initially, but what happens when you want to add shelf to existing drawing and SAS stack shape? Start over: Remove old SAS stack shape and add new ten shelf shape and then remove required number of shelves. Not so elegant solution either…
What if you could hide objects?
Add maximum number of shelves per stack (typically 10, in some cases less). And then hide objects that are not needed. Hide disk shelf shapes, SAS, SAS Quad-Path and and/or ACP cabling. If you need to update your drawing with additional shelves, just increment number of shelves in “Shape Data” and the shapesheet code will reveal new objects. No need to add or remove objects. And the best part, this all can be done without VBA or Powershell.
Downside of this kind of approach is that the resulting shapes are bit heavy, i.e even one shelf stack will contain up to ten shelf shapes with required cabling, not visible but still part of the shape and increasing the shape size. Sure, it will take few additional seconds to pull heavier shapes to drawings, but that time penalty is only paid once per drawing. Once you have used a shape in a drawing, the master shape for the shape used is stored within the drawing and pulling additional shapes will not take any extra time, they will be just another instance of master shape already used.
Front and Rear View disk shelf shapes in one stencil
In previous generation there were so many different stack shapes that it made sense to split the shapes in different stencils to keep stencil size in reasonable figures. One stencil for front view shapes and then separate rear view stencils per disk shelf type.
With this decision came one downside. Available disk sizes are listed in stencil master shape sheet, if shapes are split into different stencils there would be multiple lists to maintain. Overtime this led to situation where front view disk shelf shapes had different disk size lists than rear view disk shelf shapes.
Now that there is only one rear view disk shelf shape per disk shelf type I can combine front and rear view shapes into one stencil without making it too large and have to maintain fewer disk size lists.
SAS cabling sequence, back to original programming
I’ve decided to use official NetApp SAS cabling sequence by default with new NetApp stack shapes, rather than using modified sequence.
Few reasons for this decision:
- As of now NetApp configuration checking tools like Config Advisor / MyAutoSupport will NOT complain about modified DPTPB SAS cabling sequence, but they might do so with future releases.
- There isn’t much benefit using modified DPTPB SAS cabling sequence anymore with the latest generation NetApp FAS / AFF hardware. The key difference is four on-board SAS ports.
With previous generation HW, like FAS3200 series and FAS8020, some controller models had only two SAS ports onboard. Using NetApp cabling sequence with these controller models resulted to configurations where second SAS stack was using ports from same adapter. It made sense to change the cabling sequence in a way that adapter failure would not lead to controller take-over. Two first SAS stacks were using one port from onboard SAS ports and one port from SAS adapter, either one could go down without controller take-over taking place. Only when third SAS stack was used, cables were originating from single SAS adapter and adapter failure would lead to take-over.
Those particular FAS models were quite popular and many installations at that time had max two SAS stacks, so most of the time using modified SAS cabling sequence was beneficial. Not so anymore with current generation hardware where most controllers have four onboard SAS ports.
Automated SAS port Assignment
Another idea that I have been exploring was making SAS port assignment automated. The sequence used for port assignment isn’t very complex, it took me about 20 minutes to write a unix shell script which would follow the official NetApp (or modified DPTPB) SAS port assignment sequence.
To help this task unix shell scripts have nice features like “array variables” and “loops”. Unfortunately this is the part where Visio shapesheet is lacking, no array variables and no loops.
You can make sort of array variable by using LOOKUP() and INDEX() shapesheet functions. Only hick-up is that you have to prepopulate your array variable with all the possible values, which in this case wasn’t a problem.
How about “loop” then? Well “loop” is actually a bunch of “IF” statements evaluated one after another one. Using loops will result much cleaner looking code, but same functionality can be achieved with IF statements, albeit with much more coding and way more “dirty” looking code.
Using automated SAS port assignment
There are three different modes for SAS port assignment
- Auto NetApp
- Default / recommended mode
- Auto DPTPB
- Slightly modified SAS cabling sequence
- Not recommended any more with current FAS8200 / FAS 9000 hw
- Required with FAS2600 and few other exceptions (see below)
In “Auto” mode just select in which adapter slots your SAS ports are (0 for onboard ports) and select “Stack Number”. SAS port assignments will be automatically selected and SAS port assignment box will be populated with correct information.
Obviously in “Manual” mode you have to select ports manually. Selected ports are shown in SAS port assignment box.
Exceptions to Automated SAS port Assignment
There are two exceptions when automated SAS port assignment does not work and “Manual” SAS port assignment mode usage is required
- FAS2600 / AFF A200 series do not follow generic SAS port usage sequence
- With all other NetApp FAS / AFF models
- Node1 “0a” port connects to IOMA “1” or “Square” port
- Node2 “0a” port connects to IOMB “1” or “Square” port
- With FAS2600 / AFF A200 the sequence is different
- Node1 “0a” port connects to IOMB “1” or “Square” port
- Node2 “0a” port connects to IOMA “1” or “Square” port
- FAS2650 sample drawings have been updated to use manual port assignment mode with correct SAS ports settings
- With all other NetApp FAS / AFF models
- Four controller onboard SAS ports required for automated SAS port assignment
- Automated port assignment code is built on assumption that each SAS adapter (or motherboard) has four SAS ports
- Automated port assignment does not work with NetApp controller models with only two SAS ports on motherboard
- FAS2600 / AFF A200 series
- previous generation FAS2500 series
- previous generation FAS8020 / AFF8020
- Older FAS32xx / FAS31xx series
- All current FAS / AFF models have four SAS ports onboard
- except FAS2600 / AFF A200 series
I might add these exceptions as different “Port Assignment Modes” in future versions
New hiding features
Disk shelves are used bit differently with Metroclusters
- No ACP cabling
- Different port assignments with Fabric attached Metroclusters, no need for SAS port assignment box.
In order to use regular stack shapes with Metrocluster, there is a need to hide these objects from stack shape
Use “Hide ACP cabling” and “Hide Port Assignment Box” in “Shape Data” window for the stack shape.
Picture: Object hiding settings in “Shape Data” window for DS2246 disk shelf stack
Picture: No objects hidden with DS2246 disk shelf
Picture: ACP cabling hidden with DS2246 disk shelf
Picture: Port Assignment box hidden with DS2246 disk shelf
Additionally with new generation disk shelves: DS212C, DS224C and DS460C there is no ACP cabling any more. However with these shelves you can use “double-wide” or “quad-path” cabling, where each SAS cabling leg is using two SAS cables instead of one SAS cable per leg, like with normal or traditional “Dual-Path” cabling. Quad-Path cabling is in place with the new disk shelf stack shapes, but Quad-Path cabling is hidden by default.
Picture: Object hiding settings in “Shape Data” window for DS224c disk shelf stack
Picture: Quad-Path cabling hidden with DS224c disk shelf
Picture: Quad-Path cabling visible with DS224c disk shelf (green cables)
New Quad-Path SAS port assignment box
Obviously if you use two cables instead of one cable to run a connection, you will need also double the amount of ports to connect. To accommodate this: When quad-path cabling is visible, the sas port assignment box automatically changes to quad-path mode. As seen in examples above.
Dynamic “Shape Data” menu
There is quite a lot more data fields with current disk stack shapes. To make the shape easier to use, I’ve decided to make the shape data dynamic. Depending on various settings, some of the fields are toggled visible/non-visible.
Example of such behaviour. If you have only one shelf in your stack, there is no point of showing details, like disk counts and types for other shelves.
Picture: Dynamic “Shape Data” with one shelf
Picture: Dynamic “Shape Data” with two shelves
Picture: Dynamic “Shape Data” with two shelves, each with unique config