sesdaemon - Fibre Channel Drive Enclosure Status/Configu
ration daemon
SYNOPSIS
sesdaemon sesdaemon-options-file
DESCRIPTION
sesdaemon is a daemon which allows communication with
attached fibre channel drive enclosures; status is col
lected and re-configuration is allowed.
The low-level transport protocol is the industry standard
SES (SCSI-3 Enclosure Services). See sesmgr(1M) for
details.
The sesdaemon is normally started automatically during
boot if sesdaemon is chkconfig'ed on. One process contain
ing 4 threads is started for each instance of sesdaemon;
the backend polling thread which handles polling the drive
enclosures for status, the frontend RPC thread which is
responsible for communication with user interfaces like
sesmgr, an event handler thread which handles FRU status
change events, and a handler that executes the client's
commands. Each event results in a user configurable call
out shell script being executed. These scripts are user
customizable.
OPTIONS
The sesdaemon-options-file is provided for customizing
certain aspects of sesdaemon operation. This file normally
resides at /etc/sysconfig/sesdaemon.options. The contents
of the file is a list of customizable variables and their
values.
PollPeriod Specifies the time, in seconds, between
successive polls of the SAN enclosures.
Status change detection is not interrupt
driven so status changes will not be
detected until the next poll period.
The challenge in selecting an optimal
polling period is to find an interval that
is short enough to find failures quickly
and yet long enough to avoid adding a sig
nificant amount of traffic to the SAN.
Large or busy SAN's will require more time
to execute a poll than smaller or less busy
ones. However some FRU failures can cause
automatic enclosure shutdowns in as little
as 2 minutes.
ExitNoCtlrs On startup, if no fibre channel controllers
are found in the system and this is set to
1, all of the sesdaemon threads will termi
nate. Changing it to 0 will let the
threads run as usual whether controllers
are present or not. This may be useful in
the event controllers will be added later
via PCI hotswap inserts. However, once
added, an sesmgr poll command must still be
executed for sesdaemon to see the new con
trollers. If the daemons have already
exited and need to be restarted, run
/etc/init.d/sesdaemon start.
The default value is 1.
PreRemovalCallout
Specifies the pathname of the script to be
executed just prior to performing a sesmgr
remove command. The default value is
/usr/lib/sesdaemon/preremove.CO.
PostRemovalCallout
Specifies the pathname of the script to be
executed immediately following the perfor
mance of a sesmgr remove command. The
default value is /usr/lib/sesdae
mon/postremove.CO.
PostInsertionCallout
Specifies the pathname of the script to be
executed immediately following the perfor
mance of a fsesmgr insert command. The
default value is /usr/lib/sesdaemon/postin
sert.CO.
StatusChangedCallout
Specifies the pathname of the script to be
executed following a FRU status change. The
default value is /usr/lib/sesdae
mon/statchanged.CO.
DebugLevel Specifies the "verbosity" of sesdaemon. The
default value is 0.
CONFIGURATION OF EVENT CALLOUT SCRIPTS
The sesdaemon event handler executes one or more callout
scripts in response to a FRU status change or user initi
ated reconfiguration. Each time a script is executed, 10
arguments are passed to it which a user can use to cus
tomize said scripts. For example, the StatusChangedCallout
trator's chatty pager should a fault be detected. The
arguments are as follows:
1 - host name A character string specifying the name of
the host machine where the FRU status
change was detected.
2 - callout type
A character string specifying the callout
type. The possible values are INFO, RECON
FIG and FAILURE. The types can be viewed in
increasing priority of importance. The
INFO type is used when the FRU status
change is informational and little or no
system administrator intervention is
needed. An example of an informational
state change is a disk FRU transitioning
from not present to OK following the inser
tion of of a previously absent disk drive.
The RECONFIG type is used following a con
figuration change which may be of interest
to the system administrator. An example of
a reconfiguration state change is a disk
FRU transitioning from OK to NOT_PRESENT
following the execution of a sesmgr remove
command. The FAILURE type is used when sys
tem administrator intervention is needed
due to an unexpected FRU failure.
3 - time stamp A character string specifying the time at
which the status change occurred.
4 - channel ID A character string specifying the con
troller on which the state change was
detected.
5 - enclosure ID
A numerical character string specifying the
fibre channel drive enclosure on which the
state change was detected. Is only speci
fied for the case of the StatusChangedCall
out. It is set to -1 for other callouts.
6 - FRU type A character string specifying the
type/class of FRU for which the status
change is being reported. Possible values
are DISK (for disk FRUs), PS (for power
supply FRUs), FAN (for fan FRUs), TEMP for
temperature, ALARM for alarm, and LCC (for
Link-Control-Card FRUs).
7 - FRU ID A numerical character string specifying the
went the state change. This would be the
slot number, bay number, or LCC number in
the enclosure.
8 - FRU NAME This is the identifier of the FRU, which in
the case of drives is the world wide name
in hex.
9 - State transition from state
A character string specifying the from
state of the FRU state transition. Possible
values are OK, OFF, FAILED, NOT-PRESENT,
OFF if the FRU is not ready, and UNSUP for
not supported FRU types. It is only speci
fied for the case of the StatusChangedCall
out. It is set to -1 for other callouts.
10 - State transition to state
A character string specifying the to state
of the FRU state transition. Possible val
ues are the same as the from state.
EXAMPLES
The following is an example of a StatusChangedCallout C-
shell script which may be used to send mail to a system
administrator following the detection of a FRU failure.
#! /bin/csh -f
#
# If the status change is a failure, send mail to system
# administrator.
#
set TMP="/tmp/statchanged_$$"
if ("$2" == FAILURE) then
echo "$6 #$7 in enclosure $5 on channel $4 on host $1 FAILED at $3" > $TMP
Mail -s "FRU Failure" root@alpha.centauri.com < $TMP
/bin/rm -f $TMP
endif
LIMITATIONS
If a communication path fails, the daemon will automati
cally try alternate paths to the other SES capable
devices. However, driver retries before returning an
error can make this a lengthy process.
Losing the last SES drive in an enclosure or losing the
link to an enclosure may be logged as an LCC failure.
configuration page will be assigned an enclosure ID from
the worldwide name of the first SES drive the daemon
locates in the enclosure. Once the id is assigned, it
will not be changed by the daemon if the enclosure config
uration changes. However on later runs, this will result
in the enclosure having a different ID.
These utilities are not able to handle soft addressing.
Proper SAN configuration is critical to their proper oper
ation.
The Xyratex 16 slot enclosure must use addressing mode 0
in 1x16 configurations and mode 2 in 2x8 configurations.
Also be very careful if mixing 1x16 and 2x8 configured
enclosures on the same loop. Extra care is required when
setting the enclosure id's to prevent overlapping the tar
get alpa ranges. If that happens, the other enclosures on
the loop will switch to soft addressing.
Not all enclosures support all capabilities of these util
ities.
Simulating failures may not result in exactly the same
failure notifications as actual failures.
Due to dependencies on drive types, this utility only sup
ports IBM and SEAGATE disk drives.
If a target assigns different worldwide names to each of
its ports, each port will be treated as an individual tar
get.
Attempting to run this daemon on a system which doesnt
have the XSCSI device files properly available will likely
result in a core dump.
FILES
/usr/bin/sesdaemon
/etc/sysconfig/sesdaemon.options
/etc/init.d/sesdaemon
/usr/lib/sesdaemon/postinsert.CO
/usr/lib/sesdaemon/preremove.CO
/usr/lib/sesdaemon/postremove.CO
/usr/lib/sesdaemon/statchanged.CO
SEE ALSO
chkconfig(8), xscsiha(8), sesmgr(8)
Man(1) output converted with
man2html