Storage Automated Diagnostic Environment replaces StorTools - a step forward in testing of SAN/Fibre attached Sun hardware.
posted by hal 20030529
|
permalink
|
path
|
initial version: 20030529
After struggling with StorTools last year I recently had the need to test an a5000. It seems like the old StorTools package has been decommisioned and instead we've got the Storage Automated Diagnostic Environment (version 2.2 released last week and now downloadable (registration required) from the sun download/sysadmin area).
The package installs in /opt/SUNWstade and just like SyMon and SunVTS is a bit bloated. Recent devices like fibre channel tape drives, V880 disks and backplane are supported. Sun seems to think that we want to manage all things at all times from anywhere (not a bad idea) - so by default there is a web server listening on port 7654 (login: ras/agent), you can set up your storage to be diagnosed/monitored in a NIS like master/slave/client style. Installation is straightforward (but the web interface is unusable until you have put in the site information). Your /etc/inet/services, /etc/inet/inetd.conf and /var/spool/cron/crontabs/root will be modified by the (master) install.
The web interface gives you great control over the test options (ie you can select individual disks in the A5000-Disk test) and is just as usable as the command line alternative. Use the verbose option when accessing the individual tests from the command line (as some tests takes a long time and to give you an idea of what is going on behind the scenes). Here's some sample output testing an A5200:
freya# pwd
/opt/SUNWstade/Diags/bin
freya#
freya# ./a5ksestest -v -o dev=/dev/es/ses0
"a5ksestest: called with options: dev=/dev/es/ses0"
"a5ksestest: Started."
"Started test on /dev/es/ses0"
"Box Name = freysen00"
"SES physical path: /devices/sbus@2,0/SUNW,socal@d,10000/sf@0,0/ses@w5080020000026901,0:0"
"Power Supplies (0,2 in front, 1 in rear)"
"Power Supply 0 is OK"
"Power Supply 1 is OK"
"Power Supply 2 is OK"
"Fans (0 in front, 1 in rear)"
"Fan 0 detected to be OK"
"Fan 1 detected to be OK"
"ESI Interface board(IB) (A top, B bottom)"
"Interface Board A: OK()"
"GBIC module (1 on left, 0 on right in IB)"
"Interface Board A: GBIC Module: 0 OK(mod.-05)"
"Interface Board A: GBIC Module: 1 NOT INSTALLED"
"Interface Board B: OK()"
"GBIC module (1 on left, 0 on right in IB)"
"Interface Board B: GBIC Module: 0 NOT INSTALLED"
"Interface Board B: GBIC Module: 1 OK(mod.-05)"
"Disk backplane (0 in front, 1 in rear)"
"Front backplane"
"Front backplane is OK"
"Temperature sensors (on front backplane)"
"Temperature sensor 0, on the front backplane is OK: 40C "
"Temperature sensor 1, on the front backplane is OK: 37C "
"Temperature sensor 2, on the front backplane is OK: 37C "
"Temperature sensor 3, on the front backplane is OK: 36C "
"Temperature sensor 4, on the front backplane is OK: 39C "
"Temperature sensor 5, on the front backplane is OK: 40C "
"Temperature sensor 6, on the front backplane is OK: 39C "
"All temperature sensors on front backplane are OK "
"Back backplane"
"Back backplane is OK"
"Temperature sensors (on rear backplane)"
"Temperature sensor 0, on the rear backplane is OK: 34C "
"Temperature sensor 1, on the rear backplane is OK: 39C "
"Temperature sensor 2, on the rear backplane is OK: 37C "
"Temperature sensor 3, on the rear backplane is OK: 37C "
"Temperature sensor 4, on the rear backplane is OK: 36C "
"Temperature sensor 5, on the rear backplane is OK: 36C "
"Temperature sensor 6, on the rear backplane is OK: 37C "
"All temperature sensors on rear backplane are OK "
"(freysen00) Interconnect assembly"
"(freysen00) Interconnect Assembly OK"
"(freysen00) Loop configuration"
"(freysen00) Loop A is configured as a single loop"
"(freysen00) Loop B is configured as a single loop"
"Drive 0, on the front is Installed"
"Drive 0, on the front is OK"
"Node WWN for Drive 0, on the front is 20000020370c45e0 "
"Drive 0, on the back is Installed"
"Drive 0, on the back is OK"
"Node WWN for Drive 0, on the back is 20000020370c3e10 "
...
...
"Node WWN for Drive 5, on the back is 20000020370c450b "
"Drive 6, on the front is Installed"
"Drive 6, on the front is OK"
"Node WWN for Drive 6, on the front is 20000020370c4df8 "
"Drive 6, on the back is Installed"
"Drive 6, on the back is OK"
"Node WWN for Drive 6, on the back is 20000020370c3e1c "
"a5ksestest: Stopped successfully."
freya#
freya# ./a5ktest -v -o "dev=/dev/rdsk/c0t22d0s2|fstest=disable"
"Options: dev=/dev/rdsk/c0t22d0s2|fstest=disable"
grep: can't open ../../../../var/opt/SUNWstade/DATA/WWN_MAP
"a5ktest: Started."
grep: can't open ../..//DATA/WWN_MAP
"Write/Read Device Buffer Loopback: Pattern: 0x7e7e7e7e"
"Write/Read Device Buffer Started: pattern: 0x7e7e7e7e"
"Write/Read Device Buffer Completed: 1000 passes"
"Write/Read Device Buffer Loopback: Pattern: 0x1e1e1e1e"
"Write/Read Device Buffer Started: pattern: 0x1e1e1e1e"
"Write/Read Device Buffer Completed: 1000 passes"
...
...
"Write/Read Device Buffer Loopback: Pattern: 0xfdfdfdfd"
"Write/Read Device Buffer Started: pattern: 0xfdfdfdfd"
"Write/Read Device Buffer Completed: 1000 passes"
"number of blocks 17682084"
"Testing 176820 blocks on disk"
"blk_base(),base=1,nblk=17682084"
"Start AsyncIO test from block 1 to 176821. "
"Start SyncIO test. "
"Test passed."
"End of Rawtest: /dev/rdsk/c0t22d0s2"
"Checking RDLS counts"
"RDLS counts are the same"
"a5ktest: Stopped successfully."
freya#
Use luxadm -v display your_a5000 to find the device paths of your socal devices and then add the string ":devctl" to the path when running the socal test:/
freya# ./socaltest -v -o "dev=/devices/sbus@2,0/SUNW,socal@d,10000/sf@0,0:devctl"
"called with options: dev=/devices/sbus@2,0/SUNW,socal@d,10000/sf@0,0:devctl"
"socaltest: Started."
"Begin socaltest on /devices/sbus@2,0/SUNW,socal@d,10000:0: board 1, slot d, port 0"
"socaltest on /devices/sbus@2,0/SUNW,socal@d,10000:0 done"
"socaltest: Stopped successfully."
freya#
Keep permissions/ownership and add ISO datestamp when copying Unix files.
posted by hal 20030429
|
permalink
|
path
|
initial version: 20030307
If you are not using a version control system like SCCS or CVS for tracking changing in configuration files, but instead are using the cp or mv commands then avoid blindly doing something like cp /etc/vsfstab /etc/vfstab.bak.
Instead use cp -p /etc/vfstab /etc/vfstab.20030307T1205 ( or to make sure you get the right time: cp -p /etc/vfstab /etc/vfstab.`date +%Y%m%dT%H%M` ).
this way you have a copy of the old /etc/vfstab with
- correct ownerships+permissions
- original datestamp
- an indication of when you did the change due to
the ISO date postfix (20030307T1205)
And while I am it - here's some sample Solaris shell code to make it easier for you to script this. It's broken down in pieces to avoid clashing with SCCS control characters. Adding the "T" as a separator adds readability (and is also the correct separator to use according to the standard).
year=`date +%Y`
month=`date +%m`
day=`date +%d`
hour=`date +%H`
minute=`date +%M`
datestamp=$year$month${day}T${hour}$minute
cp -p myfile myfile.$datestamp
Hands-off (non-interactive) Solaris package removal - example using old Gnome packages.
posted by hal 20030211
|
permalink
|
path
|
initial version: 20030210
Having to answer lots of yes/no questions on package dependencies is a pain when doing Solaris package administration; so here is a quick how-to on how to avoid the questions. First create /tmp/noask with the following contents (edited copy of /var/sadm/install/admin/default):
mail=
instance=unique
partial=nocheck
runlevel=nocheck
idepend=nocheck
rdepend=nocheck
space=nocheck
setuid=nocheck
conflict=nocheck
action=nocheck
basedir=default
Then execute something like this to remove the old Gnome packages before installing the new Sun supported 2.0 version (remove-gnome from the 2.0 beta script failed for me):
for p in `pkginfo | grep -i gnome | sort | awk '{print $2}'`
do
pkgrm -n -a /tmp/noask $p
done