NetApp SyncMirror Part 1/2: How to Configure SyncMirror


In the following post, the Data ONTAP 8.1.2 7-Mode Simulator is used to demonstrate how to configure SyncMirror.
The starting point is 2 shelves of 14 virtual disks. One shelf is going to act as disk Pool0 containing one half of the mirrored aggregate; another shelf as disk Pool1 containing the other half of the mirrored aggregate.

To find the System ID:

NTAP> sysconfig

To show disk ownership and pools:

NTAP> disk show -v

Out of the box, the SIM has 14 disks are assigned to Pool0 - that is all disks v5.*. To assign 14 disks to Pool1:

NTAP> disk assign -p 1 -s 4055372815 v4.*

{Where 4055372815 is the System ID found from sysconfig}

NOTE: For a physical HA Pair: “When assigning disk ownership, always assign all disks to the same loop or stack to the same storage system and pool as well as to the same adaptor.”

The SyncMirror license must be enabled to create a mirrored aggregate; add the license and reboot to enable:

NTAP> license add RIQTKCL #syncmirror_local
NTAP> reboot

NOTE: For a physical HA Pair: Use cf takeover and cf giveback to non-disruptively reboot both nodes in the HA Pair.

To display disks per pool with their physical size:

NTAP> aggr status -r

The simulator starts off with 3 disks in aggr0 in Pool0 containing the root volume, this leaves 11 disks spare in Pool0. To create an 11 disk mirrored aggregate

NTAP> aggr create syncmirror_aggr1 -m -n 22@1027m

The output of the above provides the next command:

NTAP> aggr create syncmirror_aggr1 -m -d v5.32 v5.29 v5.28 v5.27 v5.26 v5.25 v5.24 v5.22 v5.21 v5.20 v5.19 -d v4.27 v4.26 v4.25 v4.24 v4.22 v4.21 v4.20 v4.19 v4.18 v4.17 v4.16

NTAP> aggr status
           Aggr State    Status         Options
syncmirror_aggr1 online  raid_dp, aggr
          aggr0 online   raid_dp, aggr  root

The next bit is where we move the root volume to our mirrored aggregate; destroy aggr0; zero spares (the 3 disks used by aggr0 need zeroing); add four more disks to the mirrored aggregate (2 per pool), leaving one spare per pool; run a volume reallocate on vol0 (see here for why.)

df -h vol0
vol create vol0new syncmirror_aggr1 808m
ndmpd on
ndmpcopy /vol/vol0 /vol/vol0new
vol options vol0new root

{System reboots}

vol status
vol offline vol0
vol destroy vol0
aggr status
aggr offline aggr0
aggr destroy aggr0
disk zero spares
vol rename vol0new vol0

aggr status -r
aggr add syncmirror_aggr1 -d v4.28 v4.29 -d v5.16 v5.17
reallocate -f -p /vol/vol0
reallocate status

NOTE: For a physical Metrocluster environment - where you would have the cf and cf_remote licenses installed - having the root volume on a mirrored aggregate is a requirement. Otherwise the system would error with “Root volume is not mirrored. A takeover of this filer may not be possible in case of a disaster”.

NOTE 2: There are a couple of (pretty obvious) rules for adding disks to a mirrored aggregate
“1) The number of disks must be an even number and must be evenly divided between the two plexes.”
“2) Each plex must have disks from different pools and have equivalent bytes-per-sector sizes.”

Image: How Disk Pools and Plexes Make up a SyncMirror Mirrored Aggregate
APPENDIX: Output of vol status, aggr status, aggr status -r

ntap> vol status
         Volume State   Status            Options
           vol0 online  raid_dp, flex     root
ntap> aggr status
           Aggr State   Status            Options
syncmirror_aggr1 online  raid_dp, aggr     root
ntap> aggr status -r
Aggregate syncmirror_aggr1 (online, raid_dp, mirrored) (block checksums)
  Plex /syncmirror_aggr1/plex0 (online, normal, active, pool0)
    RAID group /syncmirror_aggr1/plex0/rg0 (normal, block checksums)

      RAID Disk Device   Pool     Phys(MB)
      --------- ------   ----     --------
      dparity   v5.32      0      1027
      parity    v5.29      0      1027
      data      v5.28      0      1027
      data      v5.27      0      1027
      data      v5.26      0      1027
      data      v5.25      0      1027
      data      v5.24      0      1027
      data      v5.22      0      1027
      data      v5.21      0      1027
      data      v5.20      0      1027
      data      v5.19      0      1027
      data      v5.16      0      1027
      data      v5.17      0      1027

  Plex /syncmirror_aggr1/plex1 (online, normal, active, pool1)
    RAID group /syncmirror_aggr1/plex1/rg0 (normal, block checksums)

      RAID Disk Device   Pool     Phys(MB)
      --------- ------   ----     --------
      dparity   v4.27      1      1027
      parity    v4.26      1      1027
      data      v4.25      1      1027
      data      v4.24      1      1027
      data      v4.22      1      1027
      data      v4.21      1      1027
      data      v4.20      1      1027
      data      v4.19      1      1027
      data      v4.18      1      1027
      data      v4.17      1      1027
      data      v4.16      1      1027
      data      v4.28      1      1027
      data      v4.29      1      1027

Pool1 spare disks

RAID Disk       Device   Pool     Phys(MB)
---------       ------   ----     --------
spare           v4.32      1      1027

Pool0 spare disks

RAID Disk       Device   Pool     Phys(MB)
---------       ------   ----     --------
spare           v5.18      0      1027