All of our production clariions are configured with two large tiered storage pools, one for LUNs on SPA and one for LUNs on SPB. When storage is created on a server, two identical LUNs are created (one in each pool) and are striped at the host level. I do it that way to more evenly balance the load on the storage processors.
I’ve noticed that LUNs will occassionally trespass to the other SP. In order to keep the SP’s balanced how I want them, I will routinely check and trespass them back to their default owner. Our naming convention for LUNs includes the SP that the LUN was initially configured to use, as well as the pool ID, server name, filesystem/drive letter, last four digits of serial number, and size. Having all of this information in the LUN name makes for very easy reporting. Having the default SP in the LUN name is required for this script to work as written.
Here’s what our LUN names looks like: P1_LUN100_SPA_0000_servername_filesystem_150G
To quickly check on the status of any mismatched LUNs every morning, I created a script that generates a daily report. The script first creates output files that list all of the LUNs on each SP, then uses simple grep commands to output only the LUNs whose SP designation in the name does not match the current owner. The csv output files are then parsed by the csv2html perl script, which converts the csv into easy to read HTML files that are automatically posted on our intranet web site. The csv2html perl script is from http://www.jpsdomain.org/source/perl.html and is under a GNU General Public License. Note that this script is designed to run in unix. It can be run using cygwin installed on a Windows server if you don’t have access to a unix based server.
Here’s the shell script (I have one for each clariion/VNX):
naviseccli -h clariion_hostname getlun -name -owner |grep -i name > /reports/sp/lunname.out
naviseccli -h clariion_hostname getlun -name -owner |grep -i current > /reports/sp/currentsp.out
paste -d , /reports/sp/lunname.out /reports/sp/currentsp.out > /reports/sp/clariion_hostname.spowner.csv
./csv2htm.pl -e -T -i /reports/sp/clariion_hostname.spowner.csv -o /reports/sp/clariion_hostname.spowner.html
#Determine SP mismatches between LUNs and SPs, output to separate files
cat /reports/sp/clariion_hostname.spowner.csv | grep 'SP B' > /reports/sp/clariion_hostname_spb.csv
grep SPA /reports/sp/clariion_hostname_spb.csv > /reports/sp/clariion_hostname_spb_mismatch.csv
cat /reports/sp/clariion_hostname.spowner.csv | grep 'SP A' > /reports/sp/clariion_hostname_spa.csv
grep SPB /reports/sp/clariion_hostname_spa.csv > /reports/sp/clariion_hostname_spa_mismatch.csv
#Convert csv output files to HTML for intranet site
./csv2htm.pl -e -d -T -i /reports/sp/clariion_hostname_spa_mismatch.csv -o /reports/sp/clariion_hostname_spa_mismatch.html
./csv2htm.pl -e -d -T -i /reports/sp/clariion_hostname_spb_mismatch.csv -o /reports/sp/clariion_hostname_spb_mismatch.html
The output files look like this (clariion_hostname_spa_mismatch.html from the script):
Name: P1_LUN100_SPA_0000_servername_filesystem1_150G Current Owner: SPB
Name: P1_LUN101_SPA_0000_servername_filesystem2_250G Current Owner: SPB
Name: P1_LUN102_SPA_0000_servername_filesystem3_350G Current Owner: SPB
Current Owner: SPB
Current Owner: SPB
The 0000 represents the last four digits of the serial number of the Clariion.
That’s it, a quick and easy way to report on trespassed LUNs in our environment.