Monday, 16 January 2017

Understanding Disk Auto Assignment

There was a time when Disk Auto Assignment on NetApp FAS systems was either stack based or nothing. Then, in a version of ONTAP, we got 3 different autoassign policies:


[-autoassign-policy {default|bay|shelf|stack}] - Auto Assignment Policy

This parameter defines the granularity at which auto assign should work. This option is ignored if the -autoassign option is off. Auto assignment can be done at the stack/loop, shelf, or bay level. The possible values for the option are default, stack, shelf, and bay. The default value is platform dependent. It is stack for all non-entry platforms and single-node systems, whereas it is bay for entry-level platforms.


And that doesn’t tell the full story. Of course, there were some very good reasons why just having Auto Assign at a stack level was sub-optimal, since for a lot of systems you didn’t always have the luxury of dedicating entire disk stacks to nodes, then there were small HA pairs with a single internal shelf of disks, and AFF came along.

The following post is my understanding through 5 different scenarios.

Note: This is covered officially (differently) in the NetApp library - How automatic ownership assignment works for disks - which links to - Which disk autoassignment policy to use - and there’s a table:
Scenario 1) Bay

This works on Entry-Level systems only (FAS2XXX), and works by assigning even and odd disks to different nodes (even disks to node 2, odd disks to node 1), as in the diagram below:

Image: Auto Assignment Policy of bay
Note: I have tried to enable “bay” on a non-Entry-Level system, and got the following error:

cluster::> disk option modify -node * -autoassign-policy bay

Error: command failed on node "cluster-01": Failed to modify autoassignpolicy.
Error: command failed on node "cluster-02": Failed to modify autoassignpolicy.


Scenario 2) Half-Shelf Drive Assignment

This was not listed in the Disk Auto Assignment Policies above, but it does exist. Half-shelf drive assignment is an automatic policy for AFF systems only. Best practice (for performance reasons) with AFF is to assign half a shelf of disks to node 1, and the other half to node 2. See the diagram below:

Image: AFF Half-Shelf Drive Assignment
Scenario 3) Half-Stack

I can’t say for sure if this works or not (needs testing), but I’ve been informed “When there is only one stack that is shared between both nodes and an odd number of shelves, drives in the middle shelf will be assigned 50-50 to each node by default.”

Image: Half-Stack Drive Assignment
Scenario 4) Shelf

Shelf disk auto assignment policy works at a per-shelf level, as in the diagram below:

Image: Disk Auto Assignment at a Per-Shelf Level

Scenario 5) Stack

Finally, the traditional stack disk auto assignment policy works on a per-stack level, as in the diagram below:

Image: Disk Auto Assignment at a Per-Stack Level

UPDATE: Another possibility?

Scenario 6) AFF Quarter Shelf Drive Assignment

There might be a 6th scenario. This is where you start with a half-shelf, 12 SSD AFF, and later expand to 24 SSDs in the shelf. Initially, with 12 SSDs, 0-5 are assigned to Node A, and 6-11 are assigned to Node B. When you expand with 12 more SSDs, 12-17 are assigned to Node A, and 18-23 are assigned to Node B.

Image: Expanding AFF 12-drive system to 24 SSDs

8 comments:

  1. Awesome thanks! This was pretty confusing in the NetApp documentation.

    ReplyDelete
  2. Hi guys,
    Just to let you know this post is from 'Vidad' at the Cosonok blog, I can't take the credit for it unfortunately :-)
    Thanks,
    Neil

    ReplyDelete
  3. Updated with a 6th possibility...

    ReplyDelete
  4. This comment has been removed by the author.

    ReplyDelete
  5. Great Post,

    I am wondering if "Half-Stack" policy is also used with AFF MetroClusters?

    Thanks,
    Sami

    ReplyDelete