Provided by: cciss-vol-status_1.11-3_i386 bug

NAME

       cciss_vol_status  -  show  status  of  logical  drives  attached  to HP
       Smartarray controllers

SYNOPSIS

       cciss_vol_status [OPTION] [DEVICE]...

DESCRIPTION

       Shows  the  status  of  logical  drives  configured  on  HP  Smartarray
       controllers.

OPTIONS

       -p, --persnickety
              Without  this  option,  device  nodes  which can't be opened, or
              which are not found  to  be  of  the  correct  device  type  are
              silently   ignored.    This   lets   you  use  wildcards,  e.g.:
              cciss_vol_status /dev/sg* /dev/cciss/c*d0, and the program  will
              not complain as long as all devices which are found to be of the
              correct type are found to be  ok.   However,  you  may  wish  to
              explicitly  list  the  devices  you  expect  to be there, and be
              notified if they are not there (e.g.  perhaps  a  PCI  slot  has
              died,  and  the  system  has  rebooted,  so  that  what was once
              /dev/cciss/c1d0 is no longer there at all).   This  option  will
              cause the program to complain about any device node listed which
              does not appear to be the right device type, or is not openable.

       -C, --copyright
              If stderr is a terminal, Print  out  a  copyright  message,  and
              exit.

       -q, --quiet
              This  option  doesn't  do  anything.   Previously,  without this
              option and if stderr is a terminal, a copyright message precedes
              the  normal  program output.  Now, the copyright message is only
              printed via the -C option.

       -s     Query each physical drive for  S.M.A.R.T  data  and  report  any
              drives in "predictive failure" state.

       -u, --try-unknown-devices
              If  a  device has an unrecognized board ID, normally the program
              will not attempt to communicate with it.  In case you have  some
              Smart  Array  controller  which  is newer than this program, the
              program may not recognize it.  This option permits  the  program
              to  attempt  to interrogate the board even if it is unrecognized
              on the assumption that it is in fact a Smart Array of some kind.

       -v, --version
              Print the version number and exit.

       -V, --verbose
              Print out more information about the  controllers  and  physical
              drives.   For  each  controller, the board ID, number of logical
              drives, currently running firmware  revision  and  ROM  firmware
              revision  are  printed.   For each physical drive, the location,
              vendor, model, serial number, and firmware revision are printed.

       -x, --exhaustive
              Deprecated.  Previously, it "exhaustively" searched for  logical
              drives,  as,  under some circumstances some logical drives might
              otherwise be missed.  This option no longer  does  anything,  as
              the  algorithm for finding logical drives was changed to obviate
              the need for it.

DEVICE

       The DEVICE argument indicates which RAID controller is to  be  queried.
       Note, that it indicates which RAID controller, not which logical drive.

       For the cciss driver, the "d0" nodes matching "/dev/cciss/c*d0" are the
       nodes which correspond to the RAID controllers.  (See note  1,  below.)
       It  is  not  necessary to invoke cciss_vol_status on each logical drive
       individually, though if you do this,  each  time  it  will  report  the
       status of ALL logical drives on the controller.

       For  the  hpsa driver, or for fibre attached MSA1000 family devices, or
       for the hpahcisr sotware RAID driver which emulates Smart  Arrays,  the
       RAID controller is accessed via the scsi generic driver, and the device
       nodes will match "/dev/sg*"   Some variants of the "lsscsi"  tool  will
       easily  identify  which device node corresponds to the RAID controller.
       Some variants may only report the SCSI nexus (controller/bus/target/lun
       tuple.)  Some distros may not have the lsscsi tool.

       Executing  the  following  query to the /sys filesystem and correlating
       this with the contents of /proc/scsi/scsi or output of lsscsi can  help
       in finding the right /dev/sg node to use with cciss_vol_status:

       wumpus:/home/scameron # ls -l /sys/class/scsi_generic/*
       lrwxrwxrwx 1 root root 0 2009-11-18 12:31 /sys/class/scsi_generic/sg0 -> ../../devices/pci0000:00/0000:00:02.0/0000:02:00.0/0000:03:03.0/host0/target0:0:0/0:0:0:0/scsi_generic/sg0
       lrwxrwxrwx 1 root root 0 2009-11-18 12:31 /sys/class/scsi_generic/sg1 -> ../../devices/pci0000:00/0000:00:1f.1/host2/target2:0:0/2:0:0:0/scsi_generic/sg1
       lrwxrwxrwx 1 root root 0 2009-11-19 07:47 /sys/class/scsi_generic/sg2 -> ../../devices/pci0000:00/0000:00:05.0/0000:0e:00.0/host4/target4:3:0/4:3:0:0/scsi_generic/sg2
       wumpus:/home/scameron # cat /proc/scsi/scsi
       Attached devices:
       Host: scsi0 Channel: 00 Id: 00 Lun: 00
         Vendor: COMPAQ   Model: BD03685A24       Rev: HPB6
         Type:   Direct-Access                    ANSI  SCSI revision: 03
       Host: scsi2 Channel: 00 Id: 00 Lun: 00
         Vendor: SAMSUNG  Model: CD-ROM SC-148A   Rev: B408
         Type:   CD-ROM                           ANSI  SCSI revision: 05
       Host: scsi4 Channel: 03 Id: 00 Lun: 00
         Vendor: HP       Model: P800             Rev: 6.82
         Type:   RAID                             ANSI  SCSI revision: 00
       wumpus:/home/scameron # lsscsi
       [0:0:0:0]    disk    COMPAQ   BD03685A24       HPB6  /dev/sda
       [2:0:0:0]    cd/dvd  SAMSUNG  CD-ROM SC-148A   B408  /dev/sr0
       [4:3:0:0]    storage HP       P800             6.82  -

       From  the  above  you  can  see that /dev/sg2 corresponds to SCSI nexus
       4:3:0:0, which corresponds to the HP P800  RAID  controller  listed  in
       /proc/scsi/scsi.

EXAMPLE

            [root@somehost]# cciss_vol_status -q /dev/cciss/c*d0
            /dev/cciss/c0d0: (Smart Array P800) RAID 0 Volume 0 status: OK.
            /dev/cciss/c0d0: (Smart Array P800) RAID 0 Volume 1 status: OK.
            /dev/cciss/c0d0: (Smart Array P800) RAID 1 Volume 2 status: OK.
            /dev/cciss/c0d0: (Smart Array P800) RAID 5 Volume 4 status: OK.
            /dev/cciss/c0d0: (Smart Array P800) RAID 5 Volume 5 status: OK.
            /dev/cciss/c0d0: (Smart Array P800) Enclosure MSA60 (S/N: USP6340B3F) on Bus 2, Physical Port 1E status: Power Supply Unit failed
            /dev/cciss/c1d0: (Smart Array P800) RAID 5 Volume 0 status: OK.
            /dev/cciss/c1d0: (Smart Array P800) RAID 5 Volume 1 status: OK.
            /dev/cciss/c1d0: (Smart Array P800) RAID 5 Volume 2 status: OK.
            /dev/cciss/c1d0: (Smart Array P800) RAID 5 Volume 3 status: OK.
            /dev/cciss/c1d0: (Smart Array P800) RAID 5 Volume 4 status: OK.
            /dev/cciss/c1d0: (Smart Array P800) RAID 5 Volume 5 status: OK.
            /dev/cciss/c1d0: (Smart Array P800) RAID 5 Volume 6 status: OK.
            /dev/cciss/c1d0: (Smart Array P800) RAID 5 Volume 7 status: OK.

            [root@someotherhost]# cciss_vol_status -q /dev/sg0 /dev/cciss/c*d0
            /dev/sg0: (MSA1000) RAID 1 Volume 0 status: OK.   At least one spare drive.
            /dev/sg0: (MSA1000) RAID 5 Volume 1 status: OK.
            /dev/cciss/c0d0: (Smart Array P800) RAID 0 Volume 0 status: OK.

            [root@localhost]# ./cciss_vol_status -s /dev/sg1
            /dev/sda: (Smart Array P410i) RAID 0 Volume 0 status: OK.
                  connector 1I box 1 bay 1                 HP      DG072A9BB7                               B365P6803PCP0633     HPD0 S.M.A.R.T. predictive failure.
            [root@localhost]# echo $?
            1

            [root@localhost]# ./cciss_vol_status -s /dev/cciss/c0d0
            /dev/cciss/c0d0: (Smart Array P800) RAID 0 Volume 0 status: OK.
                  connector 2E box 1 bay 8                 HP      DF300BB6C3                           3LM08AP700009713RXUT     HPD3 S.M.A.R.T. predictive failure.
            /dev/cciss/c0d0: (Smart Array P800) Enclosure MSA60 (S/N: USP6340B3F) on Bus 2, Physical Port 2E status: OK.

            [root@localhost cciss_vol_status]# ./cciss_vol_status --verbose /dev/sg0
            Controller: Smart Array P420i
              Board ID: 0x3354103c
              Logical drives: 1
              Running firmware: 3.42
              ROM firmware: 3.42
            /dev/sda: (Smart Array P420i) RAID 1 Volume 0 status: OK.
              Physical drives: 2
                  connector 1I box 2 bay 1                 HP      EG1200FCVBQ                                      KZG21NVD     HPD1 OK
                  connector 2I box 2 bay 5                 HP      EG1200FCVBQ                                      KZG20X7D     HPD1 OK
            /dev/sg0(Smart Array P420i:0): Non-Volatile Cache status:
                         Cache configured: Yes
                        Read cache memory: 81 MiB
                       Write cache memory: 735 MiB
                      Write cache enabled: Yes
               Flash backed cache present

DIAGNOSTICS

       Normally,  a logical drive in good working order should report a status
       of "OK."  Possible status values are:

       "OK." (0) - The logical drive is in good working order.

       "FAILED." (1) - The logical drive has failed,  and  no  i/o  to  it  is
       poosible.
              Additionally, failed drives will be identified by connector, box
              and bay, as well as vendor, model, serial number,  and  firmware
              revision.

       "Using interim recovery mode." (3) - One or more drives has failed,
              but  not  so  many that the logical drive can no longer operate.
              The failed drives should be replaced as soon as possible.

       "Ready for recovery operation." (4) -  Failed drive(s) have been
              replaced, and  the  controller  is  about  to  begin  rebuilding
              redundant parity data.

       "Currently recovering." (5) - Failed drive(s) have been replaced,
              and  the  controller  is  currently  rebuilding redundant parity
              information.

       "Wrong physical drive was replaced." (6) - A drive has failed, and
              another (working) drive was replaced.

       "A physical drive is not properly connected." (7) - There is some
              cabling or backplane problem in the drive enclosure.

       (From fwspecwww.doc, see cpqarray project on sourceforge.net):
              Note: If the unit_status value is 6 (Wrong  physical  drive  was
              replaced) or 7 (A physical drive is not properly connected), the
              unit_status of all  other  configured  logical  drives  will  be
              marked as 1 (Logical drive failed). This is to force the user to
              correct the problem and to  insure  that  once  the  problem  is
              corrected,  the  data  will  not have been corrupted by any user
              action.

       "Hardware is overheating." (8) - Hardware is too hot.

       "Hardware was overheated." (9) - At some point in the past,
              the hardware got too hot.

       "Currently expannding." (10) - The controller is currently in the
              process of expanding a logical drive.

       "Not yet available." (11) - The logical drive is not yet finished
              being configured.

       "Queued for expansion." (12) - The logical drive will be expended
              when the controller is able to begin working on it.

       Additionally, the following messages may appear regarding  spare  drive
       status:

            "At least one spare drive designated"
            "At least one spare drive activated and currently rebuilding"
            "At least one activated on-line spare drive is completely rebuilt on this logical drive"
            "At least one spare drive has failed"
            "At least one spare drive activated"
            "At least one spare drive remains available"
       Active spares will be identified by connector, box and bay, as well
       as by vendor, model, serial number, and firmware revision.

       For  each logical drive, the total number of failed physical drives, if
       more than zero, will be reported as:

                   "Total of n failed physical drives detected on this logical drive."

       with "n" replaced by the actual number, of course.

       "Replacement" drives -- newly inserted drives that replace a previously
       failed drive but are not yet finished rebuilding -- are also identified
       by connector, box and bay, as well as by vendor, model, serial  number,
       and firmware revision.

       If  the -s option is specified, each physical drive will be queried for
       S.M.A.R.T data, any any drives in  predictive  failure  state  will  be
       reported,  identified  by  connector,  box  and bay, as well as vendor,
       model, serial number, and firmware revision.

       Additionally failure conditions of disk enclosure fans, power supplies,
       and temperature are reported as follows:

            "Fan failed"
            "Temperature problem"
            "Door alert"
            "Power Supply Unit failed"

FILES

       /dev/cciss/c*d0 (Smart Array PCI controllers using the cciss driver)
       /dev/sg*   (Fibre   attached   MSA1000   controllers  and  Smart  Array
       controllers using the hpsa driver or hpahcisr software RAID driver.)

EXIT CODES

       0 - All configured logical drives queried have status of "OK."

       1 - One or more configured logical drives  queried  have  status  other
       than "OK."

BUGS

       MSA500 G1 logical drive numbers may not be reported correctly.

       I've seen enclosure serial numbers contain garbage.

       Some  Smart  Arrays  support  more than 128 physical drives on a single
       RAID controller.  cciss_vol_status does not.

AUTHOR

       Written by Stephen M. Cameron

REPORTING BUGS

       Report bugs to <scameron@beardog.cce.hp.com>

COPYRIGHT

       Copyright © 2007 Hewlett-Packard Development Company, L.P.
       This is free software; see the source for copying conditions.  There is
       NO  warranty;  not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR
       PURPOSE.

SEE ALSO

       http://cciss.sourceforge.net

NOTE 1

       The /dev/cciss/c*d0 device nodes of the cciss driver  do  double  duty.
       They  serve as an access point to both the RAID controllers, and to the
       first  logical  drive  of  each  RAID  controller.    Notice   that   a
       /dev/cciss/c*d0  node  will  be  present for each controller even if no
       logical drives are configured on that controller.  It might be  cleaner
       if  the  driver  had  a  special  device  node just for the controller,
       instead of making these device nodes do double duty.  It has been  like
       that  since the 2.2 linux kernel timeframe.  At that time, device major
       and minor nodes were statically allocated at compile time, and were  in
       short supply.  Changing this behavior at this point would break lots of
       userland programs.