San Francisco

dave spink toolset


SYMMETRIX TASKS:

DECOM RA GROUP RDF PAIRS RDF FIX
BCV CLONES SNAPS METAS
HYPER MAP MASK STORAPID
GK CREATE ELAB HEAT REALTIME
TPRLO POOLS STEPS COMMANDS


DECOM

On switches - remove alias, zones, zone library entry, and port name entry.

Gather system state before making any masking or mapping changes.

# myhost=USTPA3IFSVM073; export myhost
# sudo symmaskdb -sid $mysid list database > vcm_pre.txt
# sudo symmaskdb -sid $mysid -file vcmdb$mysid.backup backup
# sudo symmaskdb -sid $mysid list capacity -host $myhost > capt_${myhost}.txt
# sudo symmask -sid $mysid list logins > logins_pre.txt
# cat capt_${myhost}.txt
# grep $myhost logins_pre.txt

The scripts are located DMX DECOM in Solaris Scripts Documentation.

Create hostvcm.txt file.

# create_vcm.sh > hostvcm.txt
# cat hostvcm.txt
10000000c943e6fd	07B	0	HBA0	USTPA3IFSVM073
10000000c943e64f	07B	0	HBA0	USTPA3IFSVM073
10000000c943e6fc	10B	0	HBA1	USTPA3IFSVM073
10000000c943e64e	10B	0	HBA1	USTPA3IFSVM073

Check server is not logged into VCM and the WWN haven't already been redeployed in another server.

# awk '{print $1}' hostvcm.txt > t.t
# for i in `cat t.t`
do
grep -i $i logins_pre.txt
done
# rm t.t

Extract the hypers from the VCM capacity report. Also pull out the metas that we will dissolve later.

# cp capt_${myhost}.txt t.txt
# vi t.txt
  ...keep symdevs rows 
# awk '{print $1}' t.txt > hypers.txt
# cat capt_${myhost}.txt  | grep "(M)" > hypers_meta.txt
# rm t.txt

Delete VCM and LHT entries.

# vcm_remove.sh > vcm_remove.txt
# cat mask_remove.txt
sudo symmask -sid 4145 -wwn 10000000c943e6fd -dir 07B -p 0 delete -login 
sudo symmask -sid 4145 -wwn 10000000c943e64f -dir 07B -p 0 delete -login 
sudo symmask -sid 4145 -wwn 10000000c943e6fc -dir 10B -p 0 delete -login 
sudo symmask -sid 4145 -wwn 10000000c943e64e -dir 10B -p 0 delete -login 

Check server is removed, plus check hypers no longer exist in VCM i.e. ensure they are not already assigned to another.

# sudo symmaskdb -sid $mysid list database > vcm_pst.txt
# sudo symmask -sid $mysid list logins > logins_pst.txt
# grep $myhost logins_pst.txt
# grep $myhost vcm_pst.txt
# for i in `cat hypers.txt`
do
  echo $i
  grep $i vcm_pst.txt
done

Write disable the devices in preparation for unmapping from FA.

# lun_dis.sh > lun_dis.txt

Unmap the devices from all FA's.

# unmap_file.sh > fa_unmap.txt
# cat fa_unmap.txt
# sudo symconfigure -sid $mysid -f fa_unmap.txt preview
# sudo symconfigure -sid $mysid -f fa_unmap.txt prepare
# sudo symconfigure -sid $mysid -f fa_unmap.txt commit

Verify the LUNs unmapped - RW, no FA or WD entries.

# for i in `cat hypers.txt`
do
 echo $i
 sudo symdev -sid $mysid show $i | egrep '(FA |WD)'
done

Dissolve the meta LUNs (if needed).

# awk '{print $1}' hypers_meta.txt > t.t
# for i in `cat t.t`
do
echo "dissolve meta dev $i;" >> meta_dis.txt
done
# cat meta_dis.txt
# rm t.t hypers_meta.txt
# sudo symconfigure -sid $mysid -f meta_dis.txt preview
...


RA GROUP

Check list of RDF directors; ours are 3c,3d,14c,14d.

# mysid=4145
# symcfg -sid $mysid -ra all list | grep RDF
  RE-3C   03C    35     3  RDF-R1       -   000190101748   3 (02)    3 (02) Online
  RE-14C  14C    46    14  RDF-R1       -   000190101748   3 (02)    3 (02) Online
  RE-3D   03D    51     3  RDF-R1       -   000190101748   3 (02)    3 (02) Online
  RE-14D  14D    62    14  RDF-R1       -   000190101748   3 (02)    3 (02) Online

Create a new RA group; ours will be RA Group 4.

# symrdf -sid $mysid addgrp -label RA_$mysid_04 -rdfg 4 -dir 3c,3d,14c,14d \ 
-remote_rdfg 4 -remote_sid 1748 -remote_dir 3c,3d,14c,14d

# sudo symcfg -sid $mysid list -rdfg all -rdfa
------- ----------- -------- ------ --- --- ---------
 RA-Grp  Group       Flags    Cycle  Pri Thr Transmit 
         Name        CSRM TDA time           Idle Time
-------- ----------- -------- ------ --- --- ---------
  3 ( 2) RA_4145_01  XAS- XI.     30  33  50 000:00:00
  4 ( 3) RA_4145_04  -IS- XI.     30  33  50 000:00:00
  5 ( 4) RA_4145_05  .AS- XI.     30  33  50 000:00:00

Enable Transmit Idle for new RA group. Create a file then pass into symconfigure - preview, prepare, commit.

# set rdf group 5 rdfa_transmit_idle = enable;


RDF PAIRS

Quick add/sync/split example.

Add pairs and change into adaptive copy mode.

# symrdf -sid $mysid createpair -f newpair.txt -rdfg $mygp -type rdf1 -invalidate r2
# symrdf -sid $mysid -file newpair.txt -rdfg $mygp query
# symrdf -sid $mysid -f newpair.txt -rdfg $mygp set mode acp_disk
# symrdf -sid $mysid -f newpair.txt -rdfg $mygp establish
# symrdf -sid $mysid -file newpair.txt -rdfg $mygp query

Example of switching to async mode and spliting the RA group.

# sudo symrdf -sid $mysid -f newpair.txt -rdfg $mygp set mode async
# sudo symrdf -sid $mysid -f newpair.txt -rdfg $mygp query
# sudo symrdf -sid $mysid -f newpair.txt -rdfg $mygp split
# sudo symrdf -sid $mysid -f newpair.txt -rdfg $mygp query

Adding New Pairs

To determine target device get a list of non mapped devices. Check the devices you select are not being used in any SRDF/A relationship.

target# symdev -sid $mysid list -noport > tmp.txt

Check dynamic RDF status on Source & Target LUNs. Ensure they are identical - size, raid, stripe, and emulation. Note, the target devices need to be write disable as we use the invalidate R2 flag.

source# symdev -sid $mysid show $mydev | egrep '(Mega|Stripe|Configuration|RDF)'
target# symdev -sid $mysid show $mydev | egrep '(Mega|Stripe|Configuration|RDF)'
target# symdev -sid $mysid write_disable $mydev -sa ALL -p 0 -noprompt

On Source LUN and Target LUN set Dynamic RDF configuration. If you ever need to remove attribute use "set device xxx:xxx attribute=no dyn_rdf;"

# cat t.txt
set dev XXX attribute=dyn_rdf;
# symconfigure....

Verify all devices in async mode for the RA group are consistent. The following example uses RA 5. We edit the file to clean up and only leave R1/R2 pairs.

# mysid=4145; myra=5; myfile=allra5_psf.txt
# symrdf -sid $mysid -rdfg $myra list | grep -v "\-        \-" | awk '{print $1 " " $2}' > $myfile
# vi $myfile
# symrdf -sid $mysid -rdfg $myra list | grep -v Consistent

Set adaptive copy mode on.

# symrdf -sid $mysid -f $myfile -rdfg $myra set mode acp_disk 
# symrdf -sid $mysid -rdfg $myra list 

Create a file with the source (R1) and target (R2)

# cat newpair.txt
0B88 09A5

Create the paired relationship.

# symrdf -sid $mysid createpair -f newpair.txt -rdfg $myra -type rdf1 -invalidate r2
# tail -f /var/symapi/log/symapi-XXX.log
# symrdf -sid $mysid -file newpair.txt -rdfg $myra query 
0B88 RW       0  3931200 NR 09A5 WD       0  3931200 S..   Suspended   

Set adaptive copy mode on and establish pairs.

# symrdf -sid $mysid -f newpair.txt -rdfg $myra set mode acp_disk 
# symrdf -sid $mysid -f newpair.txt -rdfg $myra establish 
# symrdf -sid $mysid -file newpair.txt -rdfg $myra query   
0B88 RW       0  3656952 RW 09A5 WD       0  3647825 C.D   SyncInProg  

Resume replication, when R1 owes R2 less than 150K or 4GB of data, change SRDF to async mode.

# cat newpair.txt >> $myfile
# symrdf -sid $mysid -file $myfile -rdfg $myra query
# symrdf -sid $mysid -f $myfile -rdfg $myra set mode async
# symrdf -sid $mysid -f $myfile -rdfg $myra enable  ***(if consistency needed, causes issues with clone from R2)
# symrdf -sid $mysid -rdfg $myra list

Moving RDF Pairs Between RA Groups. (Example with removing a device pair from RA 2 and adding into RA 1)

Check both RA groups are in a consistent state.

# symrdf -sid $mysid -rdfg 1 list | grep -v Consistent
# symrdf -sid $mysid -rdfg 2 list | grep -v Consistent

Suspend RA 2 and set adaptive copy mode on. We edit the file to clean up and only leave R1/R2 pairs.

# mysid=1748; myra=2; myfile=allra2.txt
# symrdf -sid $mysid -rdfg $myra list | grep -v "\-        \-" | awk '{print $1 " " $2}' > $myfile
# vi $myfile
# symrdf -sid $mysid -f $myfile -rdfg $myra suspend
# symrdf -sid $mysid -f $myfile -rdfg $myra set mode acp_disk 

Check RA 2 device pair(s) have the "Dynamic RDF attribute" set. If not; configure them.

# symdev -sid $mysid show O464 | egrep '(Dynamic)'
Dynamic RDF		: None
# vi t.txt
convert rdf dev 0464 to dynamic; 
# symconfigure....
# symdev -sid $mysid show O464 | egrep '(Dynamic)'
Dynamic RDF Capability  : RDF1_OR_RDF2_Capable

With RA 2 suspended remove the device pair(s).

# cat tmpdev.txt
0464 0DBA
# symrdf -sid $mysid deletepair -file tmpdev.txt -rdfg 2   ***may need -force
# tail -f /var/symapi/log/symapi-XXX.log

Resume RA 2 replication.

# symrdf -sid $mysid -rdfg $myra list | grep -v "\-        \-" | awk '{print $1 " " $2}' > $myfile
# vi $myfile
# symrdf -sid $mysid -f $myfile -rdfg $myra resume
# symrdf -sid $mysid -rdfg $myra list
# symrdf -sid $mysid -f $myfile -rdfg $myra set mode async

Add RA 1 device pair(s), the group does not need to be suspended.

# mysid=1748; myra=1; myfile=allra1.txt
# symrdf -sid $mysid createpair -file tmpdev.txt -rdfg $myra -type rdf1 -establish
# tail -f /var/symapi/log/symapi-XXX.log
# symrdf -sid $mysid -file tmpdev.txt -rdfg $myra query   

Set RA 1 to adaptive copy mode, wait until tracks catch up before turning back to async.

# symrdf -sid $mysid -rdfg $myra list | grep -v "\-        \-" | awk '{print $1 " " $2}' > $myfile
# vi $myfile
# symrdf -sid $mysid -f $myfile -rdfg $myra set mode acp_disk 
# symrdf -sid $mysid -rdfg $myra list
# symrdf -sid $mysid -f $myfile -rdfg $myra set mode async


RDF FIX

The following procedure restores a SRDF/A suspended group state. This can be caused by the SRDF/A WP limit being reached, or a drop in the SRDF link. A link down starts with "Transmit Idle" and then moves into "Suspended" state. If you still see "Transmit Idle" contact EMC as there is another problem; either network or SP needs rebooting. Note, even a succesful RDF ping test may not be sufficient to overcome a Transmit Idle.

Description: System Max WP limit reached - 000190104145
Description: SRDF/A session has entered transmit idle state - 000190104145

Check the health of RDF directors and RA groups.

# mysid=4145
# symcfg -sid $mysid -ra all list 
# symrdf -sid $mysid -rdfg 3 list | grep -i Suspended	***SAN group
# symrdf -sid $mysid -rdfg 4 list | grep -i Suspended	***GFS group
# symrdf -sid $mysid -rdfg 5 list | grep -i Suspended	***UPS group

Get SRDF R1/R2 members for each group. The following example starts with RA 3; you will need to repeat the steps for each RA group.

# mysid=4145; myra=3; myfile=allra3_san.txt
# symrdf -sid $mysid -rdfg $myra list | grep -v "\-        \-" | awk '{print $1 " " $2}' > $myfile
# vi all.txt  ***clean up file, leave R1/R2 pairs only
0BDC 088F
0BE0 0DBF
0BE4 0DC3
...

Disable SRDF in case devices are not already in the requested state. If the link is "TransIdle" call EMC before continuing as there is some other problem.

# echo $mysid $myra $myfile
# symrdf -sid $mysid -f $myfile -rdfg $myra disable

Set adaptive copy mode on.

# symrdf -sid $mysid -f $myfile -rdfg $myra set mode acp_disk 
# symrdf -sid $mysid -rdfg $myra list 

Establish the SRDF link.

# symrdf -sid $mysid -f $myfile -rdfg $myra establish
# symrdf -sid $mysid -rdfg $myra list 

Wait untill the invalid track count is under 30,000.

# symrdf -sid $mysid -f $myfile -rdfg $myra set mode async
# symrdf -sid $mysid -rdfg $myra list 

Note: We do NOT run "symrdf -g sapgfstgt enable" as this enforces RDF consistency which causes a problem for us when we try to clone from the R2 devices.



BCV

See see EMC BCV BACKUP in Solaris Documentation. The script performs these tasks:

  1. Remesh server vfstab file, create backup file list
  2. Umount BCV file system, if mounted
  3. Check BCV state
  4. Sync BCV & Check status of symmir cmd
  5. Check progress of sync
  6. Put database tablespaces in hot backup(online) mode
  7. Split BCV i.e. no symlocks exist
  8. Remove database tablespaces from hot backup(online) mode
  9. Import Disk Group, Start Volumes, Fsck Volumes
  10. Mount BCV file systems
  11. Backup BCV's
  12. Umount BCV File Systems and Deport Disk Group


CLONES

TimeFinder Clone Backup

Select your source and target devices. Ensure they are identical - size, raid, stripe, and emulation.

source# symdev -sid $mysid show $mydev | egrep '(Mega|Stripe|Configuration|RDF)'
target# symdev -sid $mysid show $mydev | egrep '(Mega|Stripe|Configuration|RDF)'

Create source file system - see Create File System in Veritas Documentation for information.

Create a file that contains source and target devices.

# vi myfile.txt
0da8 155a
0db0 1562
13c6 0ce8
13c4 0ce6

Deport target file system - see Deport Disk Group in Veritas Documentation for information. If the target disks have not been used before, map them to FA's; see MAP for details.

Create clone and wait until precopy (my perference) completes. The precopy causes the device copy to take place in the background before the activate starts. Normally, the copying of tracks is not started until the activate occurs. The precopy process continuously runs in the background until the activate is called. Precopy implies -copy.

# symclone -sid $mysid -f $myfile query
# symclone -sid $mysid create -differential -precopy -f $myfile -nop
# symclone -sid $mysid verify -precopy -cycled -f $myfile -i 60

Activate clone (allow host access). Use the consistent flag to ensure all devices in file are split together. When the operation completes, the state changes to Copied.

# symclone -sid $mysid -f $myfile query
# symclone -sid $mysid -consistent activate -f $myfile -i 60 -c 10 -nop
# symclone -sid $mysid verify -copied -f $myfile -i 60

Recreate clone (as needed). This gets changed tracks since the last activate. The session must have been created with the -differential option. A subsequent activate action must be issued to establish a new point-in-time copy.

# symclone -sid $mysid verify -copied -f $myfile
# symclone -sid $mysid recreate -precopy -f $myfile -i 60 -c 10 -nop
# symclone -sid $mysid verify -precopy -cycled -f $myfile -i 60
# symclone -sid $mysid -consistent activate -f $myfile -i 60 -c 10 -nop
# symclone -sid $mysid verify -copied -f $myfile -i 60

On Target Host Mount File Systems - see Mount File Systems in Veritas Documentation for information.

Terminate clone (as needed). This stops the existing internal copy session between the specified source and target devices in a group.

# symclone -sid $mysid -f $myfile query
# symclone -sid $mysid terminate -f $myfile -nop

TimeFinder Clone Restore

Deport source file system - see Deport Disk Group in Veritas Documentation for information.

Start Restore

# symclone -sid $mysid -f $myfile restore
# symclone -sid $mysid -f $myfile query

On Source Host Mount File Systems - see Mount File Systems in Veritas Documentation for information.



SNAPS

TimeFinder Snap Backup

Review save pool devices to check you have save device to use.

# symsnap -pools list 
# symsnap -sid $mysid show pool DEFAULT_POOL

Disable some devices in DEFAULT_POOL that we will use later.

# vi disable.txt
disable dev 03D5:03D6 in pool DEFAULT_POOL, type = SAVEDEV
# symconfigure... 
# symsnap -sid $mysid show pool DEFAULT_POOL

Create a new save pool.

# vi create.txt
create pool mypool, type = SAVEDEV
# symconfigure...
# symsnap -sid $mysid -pools list

Add disabled save device to new save pool and enable.

# vi adddev.txt
add dev 03D5:03D6 to pool mypool, type = SAVEDEV, member_state = ENABLE
# symconfigure...
# symsnap -sid $mysid

Create source file system - see Create File System in Veritas Documentation for information. Create a test file.

On target host identify Snap (VDEV) devices. They appear as normal size hypers to trick symapi. Create a group and add the virtual devices.

# sympd list | grep VDEV
# symdg -type REGULAR create drsdg
# symld -g drsdg add dev 010A
# symlg -g drsdg add dev 01E4
# symdg show drsdg

Create a Snap Session.

# symsnap -g drsdg create -svp mypool DEV001 sym DEV 01E4 -nop
# symsnap -g drsdg -pools query
DEV001 010A VDEV001 01E4 mypool Create

Activate the Snap Session.

# symsnap -g drsdg activate DEV001 sym ld VDEV001 -nop
# symsnap -g drsdg query
DEV001 010A VDEV001 01E4 mypool CopyOnWrite

On Source host monitor usage of save device pool.

# echo "reached 10 percent" > monitor.out
# chmod u+x monitor.sh
# symsnap -sid $mysid monitor -percent 10 -i 5 -action "./monitor.sh" -svp mypool -norepeat

On Target Host Mount File Systems - see Mount File Systems in Veritas Documentation for information.

Terminate Snap Session

# symsnap -g drsdg terminate DEV001 sym ld VDEV001


METAS

The procedures below cover metas, map, mask tasks. There is a control script that pulls it together; see DMX GORUN in Solaris Scripts Documentation.

Create "cusreq.txt" file to specify what you need. The gometa.sh scripts parses the file for meta definitions.

# cat cusreq.txt
hyper 3375    10
hyper 30713   8
hyper 61425   4
meta  30713   12

Ensure your cusmet.txt file exists, for example, two meta will be created one 8 way and other 4 way.

# cat cusmet.txt
30713   8
30713   4

Build metas - see DMX META in Solaris Scripts Documentation.

# mysid=XXXX; export mysid
# gometa.sh

Set other attributes if needed, for example RDF1_OR_RDF2_Capable or SCSI-3 Persistent. If the devices will be used in cluster (Veritas, Sun, Oracle RAC) you will need to enable SCSI-3 persistent reservation. SCSI-3 PR allows a host to access a device while at same time blocking access from another host. SCSI-3 PR reservations are persistent across SCSI bus resets or host reboots, plus they allow multiple paths from host to disk. SCSI-2 disks do not support this feature. To turn off SCSI-3 PR create a file as "set device XXXX attribute=NO SCSI3_persist_reserv;"

# for i in `cat hypers.txt`
do
echo "set dev $i attribute=dyn_rdf;" >> tt.txt
echo "set dev $i attribute=SCSI3_persist_reserv;" >> on.txt
done
# symconfigure -sid $mysid -f tt.txt...
# symconfigure -sid $mysid -f on.txt...


HYPER

Create "cusreq.txt" file to specify what you need. The gohype.sh scripts parses the file for hyper definitions.

# cat cusreq.txt
hyper 3375    10
hyper 30713   8
hyper 61425   4
meta  30713   12

Get hypers - see DMX HYPER in Solaris Scripts Documentation.

# mysid=XXXX; export mysid
# gohype.sh


MAP

Ensure your hypers.txt file and hostfa.txt exist.

# cat hypers.txt
0D20
0D28
...

# cat hostfa.txt (this host is using 4 FA's)
07b      0
08b      0
09b      0
10b      0

If existing host check the host is not using a LUN Offset, as this may effect the map address you need.

# symmaskdb -sid $mysid list database -v -wwn $mywwn

Create the map file - see DMX MAP in Solaris Scripts Documentation.

# mysid=XXXX; export mysid
# ./map_file.sh > fa_map.txt
# cat fa_map.txt
# sudo symconfigure -sid $mysid -f fa_map.txt preview -noprompt
# symconfigure...

Verify you have LUNs mapped - correct port, address, RW, and no WD or NR devices..

# for i in `cat hypers.txt`
do
 echo $i
 sudo symdev -sid $mysid show $i | egrep '(FA |WD| NR)'
done


MASK

There are a number of scripts used in this section; see DMX MASK in Solaris Scripts Documentation. The first task is to prepare a hostvcm.txt file.

# create_vcm.sh > hostvcm.txt
# cat hostvcm.txt
10000000c97428ab        10D     1       HBA0    USTPA3IFSVM073
10000000c97450bb        07D     1       HBA1    USTPA3IFSVM073
10000000c97431ff        07D     1       HBA1    USTPA3IFSVM074
10000000c97e04c1        10D     1       HBA0    USTPA3IFSVM074
10000000c9742bd2        10D     1       HBA0    USTPA3IFSVM075
10000000c9745195        07D     1       HBA1    USTPA3IFSVM075
10000000c97451b8        07D     1       HBA1    USTPA3IFSVM076
10000000c97460c2        10D     1       HBA0    USTPA3IFSVM076
10000000c97450b9        07D     1       HBA1    USTPA3IFSVM077
10000000c97461b3        10D     1       HBA0    USTPA3IFSVM077

Backup the VCM DB.

# sudo symmaskdb -sid $mysid -file vcmdb$mysid.backup backup -noprompt
# sudo symmaskdb -sid $mysid list database > vcm_pre.txt

Check the hypers you intend to mask have no tombstones entries. If they do, see decom procedures in this document via DECOM

# for i in `cat hypers.txt`
do
  echo $i
  grep $i vcm_pre.txt
done

Check the WWNs (if new deployment) have no tombstones entries.

# for i in `cat hostvcm.txt | awk '{print $1}'`
do
  echo $i
  sudo symmaskdb -sid $mysid -wwn $i list devs	
  sudo symmask -sid $mysid list logins | grep -i $i
done

Prepare hypers in comma separated format for masking.

# . mydevs.sh
# export mydevs
# mask_file.sh > mask_file.txt
# cat mask_file.txt     ***the script puts in sleep statements between commands
sudo symmask -sid 4145 -wwn 10000000c97428ab -dir 10D -p 1 add dev 2412,2413,2414,240E -noprompt
sudo symmask -sid 4145 -wwn 10000000c97450bb -dir 07D -p 1 add dev 2412,2413,2414,240E -noprompt
sudo symmask -sid 4145 -wwn 10000000c97431ff -dir 07D -p 1 add dev 2412,2413,2414,240E -noprompt
sudo symmask -sid 4145 -wwn 10000000c97e04c1 -dir 10D -p 1 add dev 2412,2413,2414,240E -noprompt
sudo symmask -sid 4145 -wwn 10000000c9742bd2 -dir 10D -p 1 add dev 2412,2413,2414,240E -noprompt
sudo symmask -sid 4145 -wwn 10000000c9745195 -dir 07D -p 1 add dev 2412,2413,2414,240E -noprompt
sudo symmask -sid 4145 -wwn 10000000c97451b8 -dir 07D -p 1 add dev 2412,2413,2414,240E -noprompt
sudo symmask -sid 4145 -wwn 10000000c97460c2 -dir 10D -p 1 add dev 2412,2413,2414,240E -noprompt
sudo symmask -sid 4145 -wwn 10000000c97450b9 -dir 07D -p 1 add dev 2412,2413,2414,240E -noprompt
sudo symmask -sid 4145 -wwn 10000000c97461b3 -dir 10D -p 1 add dev 2412,2413,2414,240E -noprompt

Check masking entries for each HBA.

# mask_check.sh

If new host entry, label VCM. (I create file for visual check before applying)

# mask_label.sh > mask_label.txt
# cat mask_label.txt
sudo symmask -sid 4145 -wwn 10000000c943e6fd rename SERVERX/HBA0
sudo symmask -sid 4145 -wwn 10000000c943e64f rename SERVERX/HBA0
sudo symmask -sid 4145 -wwn 10000000c943e6fc rename SERVERX/HBA1
sudo symmask -sid 4145 -wwn 10000000c943e64e rename SERVERX/HBA1
# sudo symmaskdb -sid $mysid list capacity -host $myhost > capt_${myhost}.txt

Final check for devices in VCM.

# for i in `cat hypers.txt`
do
  echo $i
  grep $i capt_${myhost}.txt
done

Refresh the FA's with the latest copy of the VCM.

# sudo symmask -sid $mysid refresh

Send device information to customer.

# mask_display.sh

lunoffset review. Earlier versions of Solaris and Windows (up to 2003) only supports LUNs in the range 0-254. If it is necessary to assign LUN numbers higher than this to a server, lunoffset can be used to make the LUN number that is presented to the host lower than the actual LUN number. To do this, determine the lowest LUN number assigned to the host and use lunoffset with a base value of 0 and the offset equal to the lowest LUN number. The offset will be subtracted from all the LUN numbers so that the lowest LUN will be presented to the host as LUN 0. For example, if the host had LUN numbers 0x100 (256) and 0x101 (257) assigned to it, you would use the following command which would cause the host to see them as LUNs 0 & 1:

Turn on:
# symmask set lunoffset on 100 0 -wwn 2100001B3217DD88 -dir 7c -p 1 -sid $mysid
# symmask set lunoffset on 100 0 -wwn 2100001B3217E289 -dir 10c -p 1 -sid $mysid

Check on:
# symmaskdb -sid $mysid list database -v -wwn $mywwn

Turn off:
# symmask set lunoffset off -wwn 2100001B3217DD88 -dir 7c -p 1 -sid $mysid
# symmask set lunoffset off -wwn 2100001B3217E289 -dir 10c -p 1 -sid $mysid
# symmaskdb -sid 1384 list database -v -wwn 2100001B3217E289


STORAPID

This daemon is used to coordinate all Symmetrix locks and requests. The storapid (base daemon) may be hung; the following procedure will allow you to restart it.

# ps -ef | grep storapid
root 22570 1 0 06 Apr - 6:29 storapid start -name storapid
root 31112 24038 2 12:27:40 pts/0 0:00 grep storapid

To shutdown the storapid daemon via software. If the above command fails you can also do kill -9 on PID from your 'ps -ef' output to kill the daemon process.

# /usr/symcli/storbin/stordaemon shutdown storapid
storapid Told to shutdown
Waiting for daemon(s) to shutdown. This may take several seconds.

Restart the daemon and verify that it has started again.

# /usr/symcli/storbin/stordaemon start storapid
Waiting for daemon to start. This may take several seconds.

# ps -ef | grep storapid
root 27546 24038 1 12:30:48 pts/0 0:00 grep storapid
root 31114 1 0 12:29:55 - 0:00 storapid start -name storapid


GK CREATE

Gatekeeper devices do not have a special flag or device type (like a BCV device does) within the bin file in the Symmetrix. They are simply very small devices that are presented to the host that Solutions Enabler recognizes as gatekeepers due to their small size, which is generally 6 cylinders or 3 megabytes. Note that the examples below are for FBA Open Systems gatekeepers only.

ControlCenter
Right-click on the Symmetrix. Select Device Create menu and then select Logical Device Creation. Enter the amount of gatekeepers you want to create. Commit the changes and map the devices to your servers.

Logical Device Creation

Command Line - create a text file and input the following.

# vi gk_create.txt
# create dev count=x, config=2-way-mir, emulation=FBA, size=6;

Commit.

# symconfigure -sid xxx -f gk_create.txt -v preview
# symconfigure -sid xxx -f gk_create.txt -v prepare
# symconfigure -sid xxx -f gk_create.txt -v commit

Once the change is commited, map the devices to your servers. Syminq commands will automatically pick up these devices as gatekeepers as shown in the output below.

/dev/rdsk/c3t50060482D52DE233d51s2  GK     SYMMETRIX        5771 84011A5008       2880


ELAB

  1. Log in to PowerLink at powerlink.emc.com. Select E-LAB NAVIGATOR Page: Home, Products, E-Lab Navigator, Launch E-Lab Navigator.
  2. Launch the E-Lab Navigator and select "Advanced" tab.
  3. Create an detailed selection of parts or you'll get a long list of options returned. For example:
    • Server Model HP Compaq DL580 (G5)
    • Operating System MS W2K3 x86 EE XP2
    • HBA Emulex LPe11000E
    • Connectivity Brocade DCX
    • Array EMC Symmetrix DMX-4
  4. Add to Cart
  5. Save Cart
  6. Click "Get Results".
  7. Edit your "Preferred Support Statements" to give you the list of what you want:
    • Base Connectivity
    • Switched Fabric Topology Parameters
    • Path Management Software
    • Solutions Enabler Base
    • Save.
  8. Click on "Preferred Support Statements" to get a report


HEAT

  1. Begin with a Host GRAB or EMCReports output file.
  2. Log in to PowerLink at powerlink.emc.com.
  3. Select HEAT Page:
  4. Home > Support > Product and Diagnostic Tools > Environment Analysis Tools > Host Environment Analysis Tool (HEAT)
  5. Upload the GRAB file to HEAT:
  6. Browse the GRAB file.
  7. Select "Upload
  8. Enter you Site ID
  9. HEAT will process the GRAB, when completed the screen has Click "here" to see HEAT Report
  10. An EMC employee can convert the HEAT Report to a spreadsheet using a tool called "SANSummary" (not available to customers). This summary can then be used to compare with E-Lab Navigator.


REALTIME

To quickly determine realtime performance on a set of devices.

# mygrp=quicktest
# sudo symdg -type REGULAR create $mygrp
# sudo symld -g $mygrp -sid $mysid add dev $mydev
# sudo symstat -g $mygrp -i 10 -c 5 -type REQUEST


TPRLO (Third Party Logout)

A rebooted Windows host using non supported drivers can initiate a TPRLO (Third Party Logout) and cause other hosts to log out of the fabric. The use of drives lpxnds.sys or lp6nds35.sys can cause hosts to receive Unit Attention status on a shared device (like the VCM DB), causing hosts to lose access to disk. Hence, these generic non supported drivers cause major headaches.

TPRLO (Third Party Logout) is part of the fibre specifications so Enginuity has to respond correctly when an HBA sends a TPRLO Extended Link Service. Doing so sets Unit Attention TPRLO on any shared device with the HBA that sent the TPRLO. The next time a host sends a SCSI command to any one of these devices, the Symmetrix will respond with Unit Attention TPRLO.

Only EMC can see these 303E errors. This is not an alert message, however, engineering has placed this code to capture the WWN or the path that requested the TPRLO. Hence, with that information you can track down the offending host.

How to determine if a Microsoft Windows host is using the lpxnds.sys or lp6nds35.sys Emulex SCSI miniport driver. See emc138182.

  1. Run the latest EMC Grab Utility.
  2. Once the reports are run and completed open the zip called "hostname"_EMULEX_HBA_ATTRIBUTES.TXT or "hostname"_Qlogic_info.txt and look under drive name.
  3. If lpxnds.sys or lp6nds35.sys is used it must be replaced with a valid driver from Emulex Drivers Download. The supported drivers are the STORPort miniport drivers (elxstor.sys) on Windows 2003 systems and the FC port drivers (elxsli2.sys) on both Windows 2000 and 2003 systems.

EMC say the primus applies if lpxnds driver is simple started and running. To remove, go into device manager/show hidden devices. The lpxnds is listed under non plug-and-play. Right click and select uninstall or disable the device during startup.



POOLS

Create a number of Data Devices with datadev attribute as required for populating thin pools.

# symconfigure -sid $mysid -cmd "create dev count=326, config=2-Way-Mir, attribute=datadev, emulation=FBA, size=18414;" commit -v -nop

Query devices and make sure the Data Devices have been properly created.

# symdev list -sid $mysid -datadev

Create empty Thin Pools which allows you to populate at a later time.

# symconfigure -sid $mysid -cmd "create pool FIBRE_${mysid}_1 type=thin;" commit -nop

Add Data devices to Thin Pool.

# symconfigure -sid $mysid -cmd "add dev 700:785 to pool FIBRE_${mysid}_1 type=thin, member_state=ENABLE;" commit -nop

Query / List / Show symmetrix thin pools to make sure they have been created.

# symcfg list -pools -thin -sid $mysid					
# symcfg list -pool -thin -sid $mysid -mb	
# symcfg show -pool FIBRE_${mysid}_1 -thin -detail -all -sid $mysid			
# symcfg -sid $mysid list -datadev

Create Thin Devices and Bind to Pool. For example, 1 x 50GB, 4 x 20GB, and 2 x 300GB metas with 6 * 50GB meta members.

# cat tdev_src.txt
create dev count=1, size=54610 cyl, emulation=FBA, config=TDEV, preallocate size=54610 cyl, binding to pool = FIBRE_1997_1;
create dev count=4, size=21844 cyl, emulation=FBA, config=TDEV, preallocate size=21844 cyl, binding to pool = FIBRE_1997_1;
create dev count=2, size=328044 cyl, emulation=FBA, config=TDEV, preallocate size=328044 cyl, binding to pool = FIBRE_1997_1, 
meta_member_size=54674, meta_config=Concatenated;


# symconfigure -sid $mysid -f tdev_srdf.txt ....
    Establishing a configuration change session...............Established.
    Processing symmetrix 000190101997
    Performing Access checks..................................Allowed.
    Checking Device Reservations..............................Allowed.
    Submitting configuration changes..........................Submitted
    Validating configuration changes..........................Validated.

      New symdevs: 1C0A:1C0E 
    Initiating PREPARE of configuration changes...............Prepared.
    Initiating COMMIT of configuration changes................Started.
    Committing configuration changes..........................Queued.
    COMMIT requesting required resources......................Obtained.

As thin devices can be created with no associated physical storage, thin devices that are not bound to a thin pool will remain Not Ready. Query THIN devices.

# symdev list -sid $mysid -tdev
# symdev -sid $mysid show 1C0A
# symdev -sid $mysid show 1C0B
# symdev -sid $mysid show 1C0C
# symdev -sid $mysid show 1C0D
# symdev -sid $mysid show 1C0E


STEPS

Storage deployment high level summary.

. requirments - disk, path management, app type, disk type, HBA WWNs.
. hostfa select
. switch ports assign
. alias switch ports
. zones create
. meta build
. hyper check, set bits (PER) if needed
. map disks
. mask luns
. label vcm db
. document
. check

Migration high level check list.

VM SRDF
. confirm workbook disk entries
. confirm pairs
. confirm decimal numbers, R2 status
. confirm replication status
. confirm host relationship in ecc to srdf replication luns
. send email.

Unix SRDF
. check host luns
. check srdf pairs selected
. check replication status
. check r2 side - decimal number, r2 status
. check sddb info you entered
. check switch port/zones
. check GDC host map/mask

RPA Cluster
. check host luns
. check pairs in CG
. check replication status
. check switch port/zones
. check GDC host map/mask
. check RPA host map/mask (you need to clean up after)