A few months back I attended a Symmetrix VMAX training class. Afterwards I wrote up a document summarizing some of the training and adding a bit of research into things that weren’t explained in depth as I would have liked.
Configuration
Most configuration changes to the VMAX are made through the SYMCLI (Symmetrix Command Line Interface). There is a GUI interface called SMC, or Symmetrix Management Console. Unfortunately, the SMC is extremely slow especially because of KC’s larger size. It is fine for some things, but horrible at other things.
Devices are “mapped” to specific front end ports to allow a host server access to a device. Traditionally this is known as LUN masking, and on the VMAX it is performed using “autoprovisioning groups.” In practice, there is nothing automatic about this process and it should really just be called “provisioning groups” because it allows you to apply changes to a group, rather each specific initiator, port, or device, which does save a lot of time. There are three different types of autoprovisioning groups, initiator groups, port groups, and storage groups.
An initiator group is a collection of the WWNs (World Wide Names) from the HBA in the host. A WWN is just number that uniquely identifies an HBA port. An HBA card usually has two physical ports in it, so the autoprovisioning group usually has two WWNs. Initiator groups can be nested, in what is technically called cascaded initiator groups, so one group can be a member of another group. A port group is a collection of front end ports on the VMAX directors, and each front end port can belong to more than one group. A storage group is a collection of Symmetrix devices, and you can also have a single device in more than one storage group. You can have up to 4,096 devices in a storage group, and there is a limit of 8,192 total storage groups.
Physical disks in Symmetrix are grouped together in disk groups. Each disk group generally contains disks of the same type, for example 15k RPM fibre channel, 10k RPM fibre channel, SATA, or solid state disks. At Kimberly Clark, as new disks are purchased and added to the storage array, they have been put into new disk groups. That is why there are multiple “FC” groups. The command to view disk groups is symdisk list with the -dskgrp_summary parameter, shown below along with the output for one of the arrays here at KC.
symdisk list -sid 1687 -dskgrp_summary
Disk Group Disk Capacity
---------------------- ----------------------- --------------------------------
Speed Size Total Free Actual
Num Name Cnt Tech (RPM) (MB) (MB) (MB) (MB)
---------------------- ----------------------- --------------------------------
1 DISK_GROUP_001 184 FC 15000 279140 51361818 4668 51361818
2 DISK_GROUP_002 64 SATA 7200 953870 61047661 1316479 74093084
3 DISK_GROUP_003 32 EFD 0 190782 6105031 194416 6105031
4 DISK_GROUP_004 120 FC 15000 279140 33496838 3010 33496838
5 DISK_GROUP_005 112 FC 15000 279140 31263715 2782 31263715
6 DISK_GROUP_006 120 FC 15000 279140 33496838 3356 33496838
7 DISK_GROUP_007 56 FC 15000 279140 15631858 1470 15631858
---------- ---------- ----------
Total 232403760 1526182 245449182
After a Symmetrix device is created it must be mapped to a front end port to which the receiving host is connected. This is done using the symconfigure command. Unmapping can be done through the symaccess command on VMAX arrays.
Special flags can be set on individual front end ports to make the port usable by certain types of devices. For example, the SCSI-3 command set flag must be set on ports that are used for Windows cluster disks. The SCSI-3 persistent reservation feature is important because Window Server 2008 does not support SCSI-2 command set which does not have support for persistent reservations. The persistent reservations are used to allow multiple nodes to access the same device while blocking out other nodes. Also in SCSI-2 reservations were not persistent which means they do not survive reboots. The Volume Set Addressing (VSA) port flag must be set for HP-UX hosts. Volume Set Addressing is used by HP-UX hosts to address the total number of available LUN addresses supported by the Fibre Channel Protocol.
The following command shows details for port 0 on director 7E. You can see the Volume Set Addressing flag is enabled and SCSI-3 support is disabled for this port which means it is used by HP-UX hosts.
symcfg list -sid 1687 -fa 7e -p 0 -v
SCSI Flags
{
Negotiate_Reset(N) : Disabled
Soft_Reset(S) : Disabled
Environ_Set(E) : Disabled
HP3000_Mode(B) : Disabled
Common_Serial_Number(C) : Enabled
Disable_Q_Reset_on_UA(D) : Disabled
Sunapee(SCL) : Disabled
Siemens(S) : Disabled
Sequent(SEQ) : Disabled
Avoid_Reset_Broadcast(ARB) : Disabled
Server_On_AS400(A4S) : Disabled
SCSI_3(SC3) : Disabled
SPC2_Protocol_Version(SPC2) : Enabled
SCSI_Support1(OS2007) : Enabled
}
Fibre Specific Flags
{
Volume_Set_Addressing(V) : Enabled
Non_Participating(NP) : Disabled
Init_Point_to_Point(PP) : Enabled
Unique_WWN(UWN) : Enabled
Access_Logix(ACLX) : Enabled
OpenVMS(OVMS) : Disabled
AS400(AS4) : Disabled
Auto_Negotiate(EAN) : Enabled
}
Dynamic RDF groups are used to logically group RDF devices from different storage arrays that are participating in replication. The symrdf command is used to create and delete these groups. An individual source device, R1, and the target device, R2, form a RDF pair. Devices can be created as “RDF1 capable,” “RDF2 capable,” or “RDF1 or RDF2 capable.” All devices that we create at KC are “RDF1 or RDF2 capable.” A device that is “RDF1 or RDF2 capable” allows the devices to switch which direction they are replicating.
Symmetrix devices can be grouped together in pools for use with other things like virtual provisioning. There are three types of pools, snap, rdfa_dse, and thin. The first two pools contain SAVE devices, which the later, used for virtual provisioning, contains DATA devices. At KC we only use thin pools. You can not create pools with other device types. The following command lists the thin pools that are setup on one of KC’s VMAX arrays. This output was touched up a bit because the number of tracks is larger than what the table has room for. One of the important pieces of information in this table is how full each pool is.
symcfg list -sid 1687 -pool -thin -gb
S Y M M E T R I X P O O L S
-------------------------------------------------------------------------------
T T F S
y e u t
Pool p c Dev Dev Total Enabled Used Free ll a
Name e h Emul Config GBs GBs GBs GBs (%) te
------------ - - ----- ------------ -------- -------- -------- -------- --- ---
FC300 T F FBA RAID-5(7+1) 138491.1 138491.1 131199.4 7292.0 94 Ena
FLASH200 T E FBA RAID-5(7+1) 4809.6 4809.6 2410.2 2399.3 50 Ena
SATA1000 T S FBA RAID-5(7+1) 50019.2 50019.2 46974.5 3044.9 93 Ena
Total -------- -------- -------- -------- ---
GBs 193319.9 193319.9 180584.1 12736.2 93
Autoprovisioning which was mentioned earlier is performed using the symaccess command. There is also a symsg (sg for storage group) command that simplifies operations on storage groups. One additional benefit of these groups is that initiators, ports, and devices can all be dynamically added to existing groups to give hosts access to new storage. At KC initiator and storage groups are generally named with the server name. An example command to show storage group information is shown below.
symaccess list -sid 1687 -type storage -name USTCAS72 -v
Symmetrix ID : 000192601687
Storage Group Name : USTCAS72
Device Count : 8
Masking View Count : 1
Last updated at : 04:12:49 PM on Tue Nov 08,2011
Masking View Names : USTCAS72
From these groups, a masking view is created that contains an initiator group, port group, and storage group. When you create the masking view the devices in the storage group become visible to the host. The command symaccess list view can be used to show the list of masking views. Below is an example.
symaccess list view -sid 1687
Symmetrix ID : 000192601687
Masking View Name Initiator Group Port Group Storage Group
------------------- ------------------- ------------------- -------------------
USTCA554 USTCA554 VSAN_200_300_2 USTCA554
USTWA753 USTWA753 VSAN_600_700 USTWA753
USTWVM450 USTWVM450_Cluster VSAN_600_700 USTWVM450
USTCCA051 USTCCA051A VSAN_600_700_2 USTCCA051
USTCCA016 USTCCA016 VSAN_600_700_2 USTCCA016
USTCBK00 USTCBK00 VSAN_600_700_2 USTCBK00
USTCAS32 USTCAS32 VSAN_600_700 USTCAS32
The symaccess command will automatically map devices to a port if needed when the masking view is created. These groups can save lots of time when setting up devices for large VMWare clusters where 25 servers all need access to 100s of devices each with 8 different paths to the array.