acs7_check: check ACS-7 series RAID controllers

Author: Jeremy Sanders <jeremy@jeremysanders.net>

Introduction

The Accusys ACS-7x range of RAID controllers are inexpensive hardware RAID devices. They have sophisticated features such as hot swapping and automatic bad-block reallocation. They look to the host system as a standard SATA or PATA device, acting transparently with the operating system. They require no software to set up the RAID device.

Their main downside is that the supplied software to monitor the status of the RAID is rather heavy. The software runs a web server displaying the state of the RAID. It also only runs under certain platforms and is a large download.

acs7_check are two simple Python programs to monitor the RAID status using a serial port (RS232) or accessing SMART information from the disk device directly. They are designed to be run periodically from cron to monitor RAID status. Currently the serial connection should work under all POSIX systems (i.e. Linux and Unix), but the SMART program only works under Linux.

Requirements

The programs only require a fairly modern version of Python. I have tested them on Python-2.5, but they should run on versions down to Python 2.2. The serial line checking program should run under any POSIX platform (I have only tested Linux). The SMART checking program will only run under Linux. If you know how to access the SMART ioctl under other platforms, please tell me.

They have been tested with the Accusys InneRAID Duo 75200 under Linux, so please check and report successes with other devices and platforms.

License

The programs are released under the GNU General Public License, version 2 or greater. The code is Copyright © 2007 Jeremy Sanders. Note that This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

Download

Go to the download section to download the source code. See the project page for details of the SVN repository.

Installing

The acs7_serial and acs_smart scripts do not need proper installation and can be run directly from the unpacked tar.gz file. If you wish to install them properly do

# python setup.py build
# python setup.py install

See the distutils documentation if you have more specific installation requirements.

Usage

The two scripts are called acs7_smart and acs7_serial. They take the same command line parameters. They return a non-zero error code if there is a problem with the RAID device or its disks. Any error message is printed to stderr. To periodically check the RAID status they can be run from cron by being placed in the crontab. cron emails the owner of the crontab if any output appears. For instance the following crontab entry would check the SMART status of device /dev/sda every 15 minutes:

01,16,31,46 * * * *      acs7_smart --device=/dev/sda

The programs take additional command line parameters to print out more information about the status of the RAID. They can be used to check that the programs are interrogating the RAID device correctly.

-d DEVICE, --device=DEVICE Specify the device to query the RAID on. This will be a disk device for SMART or a serial device for the serial interface. By default this is /dev/sda and /dev/ttyS0 for SMART and serial, respectively.
-a, --allShow all available information
-s, --statusShow RAID status
-c, --controllerShow controller information
-r, --raidShow information about the RAID device
-k, --disksShow information about the disks which make up the RAID
-h, --helpShow how to run the program

Sample output from the programs is shown here.

Support

Please report any problems to my email address above. I will set up a mailing list if I receive interest.

Thanks

Thanks to Accusys for providing me with the API documentation for the ACS-7 series. For reference, the version of the documentation I received used the wrong Feature code for SMART. It should be 0xd0 (ATA_SMART_READ_VALUES) rather than 0xd9 (SMART_DISABLE).

Last updated by Jeremy Sanders on 2007-11-18.