ARCCONF is a command line utility on linux for Adaptec RAID controller. It manages the RAID controller, which includes create,delete and get status functions etc.. Here are some mostly used functions of the tool on Linux

For quick reference, see Arcconf utility Quick reference

 

How to run

simply run arcconf, it will print out the usage for you, for example, run

# arcconf create

 Usage: CREATE <Controller#> LOGICALDRIVE [Options] <Size> <RAID#> <Channel# ID#> [Channel# ID#] ... [noprompt]

 Usage: CREATE <Controller#> LOGICALDRIVE RVOLUME <LD#> <LD#> [LD#] ... [noprompt]
 ======================================================

 Create a new logical drive.
...

Check physical disks

Before you get started to create arrays, you may need to check physical disks

# arcconf getconfig 1 PD
Controllers found: 1
----------------------------------------------------------------------
Physical Device information
----------------------------------------------------------------------
      Device #0
         Device is a Hard drive
         State                              : Online
         Supported                          : Yes
         Transfer Speed                     : SAS 3.0 Gb/s
         Reported Channel,Device            : 0,0
         Reported Location                  : Enclosure 0, Slot 0
         Reported ESD                       : 2,0
         Vendor                             : IBM-ESXS
         Model                              : ST3300656SS
         Firmware                           : BA47
         Serial number                      : 3QP1AKHH
         World-wide name                    : 5000C5001266F7C0
         Size                               : 286102 MB
         Write Cache                        : Disabled (write-through)
         FRU                                : 43X0805
         PFA                                : No
...

Create an array

Example:


arcconf create 1 logicaldrive STRIPESIZE 64 MAX 0 1 0 1 1 noprompt

Above command usage:

 Usage: CREATE <Controller#> LOGICALDRIVE [Options] <Size> <RAID#> <Channel# ID#> [Channel# ID#] 

It create a logical driver on controller #1, spritesize 64k, size MAX means use all available space for the logical drive. The rest arguments stand for below

0 1 0 1 1 noprompt
|________________ ID # 1
|__________________ Channel #1
|____________________ ID # 0
|______________________ Channel #1
|________________________ RAID level, --- level 0

noprompt means no prompt for confirmation.

So, in the example above, it created a RAID 0 logical drive, 3 physical disks.

The following is the full options list for create an array.

 Create a new logical drive.

    Options:         Additional creation specifiers.
       Stripesize <STRIPE>: Optional parameters for specifying a stripe-unit size.
                     STRIPE is specified in kilobytes.
                     16, 32, 64, 128, 256*, 512 and 1024 are supported.
       Legs <LEG>:   Optional parameters for specifying number of sub-logical drives.
                     LEG is the number of sub-logical drives for RAID level 50 or 60.
                     RAID 50/60: 2 - 16 legs, 3 - 16 drives/leg, 48 drives max.
       Name <NAME>:  Optional parameter for specifying the name of the logical
                     drive.
       Priority <PRIORITY>: Initialization Priority for logical drive creation.
                     Valid options are: HIGH*, MED, or LOW.
       Method <METHOD>: Initialization method for the logical drive.
                     Valid options include: AUTO_SYNC, CLEAR, QUICK, and
                     SKIP.  SKIP skips initialization (for recovery only).
       Rcache <RCACHE>: Read Cache setting for the logical drive.
                     Valid options are: RON and ROFF
       Wcache <WCACHE>: Write Cache setting for the logical drive.
                     Valid options are: WT, WB, and WBB
                     WT:  write-through (Disabled)
                     WB:  write-back (Enabled)
                     WBB: write-back (Enabled) when protected by battery
    Size:            Size of the logical drive in megabytes.
                     Use MAX to set size to all remaining available space.
    Raid#:           Raid level for the new logical drive.
                     0, 1, 1E, 10, 5, 5EE, 50, 6, 60, and volume are supported.
    RVOLUME          Raid Level for a raid volume logical drive.
    LD#              Logical drive numbers for the 2 or more distinct logical drives
                     to be concatenated into the raid volume.
                     RAID levels 0, 1, and 5 are supported RVOLUME members.
                     All RVOLUME members must be the same RAID level.
    Channel# ID#:    A list of space-delimited channel number and
                     drive number pairs for each drive to add
                     to the logical drive.
       noprompt:     Don't prompt for confirmation.

     * default parameter in MOST circumstances

Getconfig, mostly used command

Getconfig is mostly used command

Usage: GETCONFIG <Controller#> [AD | LD [LD#] | PD | [AL]]

    Option  AD  : Adapter information only
            LD  : Logical drive information only
            LD# : Optionally display information about the specified logical drive
            PD  : Physical drive information only
            AL  : All information (optional)

Get Logical Drive info

# arcconf getconfig 1 LD
Controllers found: 1
----------------------------------------------------------------------
Logical drive information
----------------------------------------------------------------------
Logical drive number 0
   Logical drive name                       : sys
   RAID level                               : 1
   Status of logical drive                  : Okay
   Size                                     : 285999 MB
   Read-cache mode                          : Enabled
   Write-cache mode                         : Enabled (write-back)
   Write-cache setting                      : Enabled (write-back) when protected by battery
   Partitioned                              : Yes
   Protected by Hot-Spare                   : No
   Bootable                                 : Yes
   Defunct stripes                          : No
   --------------------------------------------------------
   Logical drive segment information
   --------------------------------------------------------
   Segment 0                                : Present (0,0) 3QP1AKHH
   Segment 1                                : Present (0,1) 3QP1AJF9

Logical drive number 1
   Logical drive name                       : data1
   RAID level                               : 1
   Status of logical drive                  : Okay
   Size                                     : 285999 MB
   Read-cache mode                          : Enabled
   Write-cache mode                         : Enabled (write-back)
   Write-cache setting                      : Enabled (write-back) when protected by battery
   Partitioned                              : Yes
   Protected by Hot-Spare                   : No
   Bootable                                 : No
   Defunct stripes                          : No
   --------------------------------------------------------
   Logical drive segment information
   --------------------------------------------------------
   Segment 0                                : Present (0,2) 3LM524G6
   Segment 1                                : Present (0,3) 6SJ7ADAK

Other options, like PD,AL etc.. are similar.

Getstatus

Usage: GETSTATUS <Controller#>

Displays the status of any background task that is currently running.

# arcconf getstatus 1
Controllers found: 1
Logical drive Task:
   Logical drive                  : 0
   Task ID                        : 101
   Current operation              : Rebuild
   Status                         : In Progress
   Priority                       : High
   Percentage complete            : 63

Command completed successfully.

Setname

 Usage: SETNAME <Controller#> LOGICALDRIVE <LogicalDrive#> <New Name>

 Rename a logical drive.

#arcconf SETNAME 1 LOGICALDRIVE 1 drive2

Setcache

 Usage: SETCACHE <Controller#> LOGICALDRIVE <LogicalDrive#> <cache mode> [noprompt]
 Usage: SETCACHE <Controller#> DEVICE [sas wb|wt] [sata wb|wt]

Changes a logical drive's or a controller's cache mode.

  LOGICALDRIVE - Changes a logical drive's cache mode.
    LogicalDrive#  : Number of the logical drive whose cache will be altered
    Logical Modes  : ron     - read cache enabled
                     roff    - read cache disabled
                     wt      - write through
                     wb      - write back
                     wbb     - write back with battery

  DEVICE - Changes a controller's global physical drive cache policy
    Physical Modes : sas wb  - sets all Serial Attached SCSI drives to write back
                     sas wt  - sets all Serial Attached SCSI drives to write through
                     sata wb - sets all Serial ATA drives to write back
                     sata wt - sets all Serial ATA drives to write through

#arcconf setcache 1 LOGICALDRIVE 1 wbb

Delete array

 Usage: DELETE <Controller#> LOGICALDRIVE <ld#> [ld#] ... [noprompt]
 Usage: DELETE <Controller#> LOGICALDRIVE ALL [noprompt]
 ======================================================

 Delete one or more logical drives from the controller.

    ld#      : Number of the logical drive to be deleted
    ALL      : Deletes all logical drives
    noprompt : Don't prompt for confirmation.

Deleting is easy, but with data on it, you need to pay extrem attention on it. I'd like to share a bit more here.

Assume you have 3 mirrored logical drives, you want remove one of them for other purpose. Question is that how to identify which physical disks you need to remove them out.


1. Identify the disk from OS level if it's not being used, for example /dev/sdc, use your own way.
2. figure out mapping between sdc to one of logical array
    a. scsi_id tool , it prints out logical drive name and SN, if you don't have logical drive name, it will print out array type.
    # scsi_id --whitelist -p 0x80 --device=/dev/sdc
      SServeRA data2          CB14A413
    b. compare channel number from device scsi info, it's more complicated.

   I prefer you to use the solution a,  b is for people has interest

#cat /proc/scsi/scsi
...

Host: scsi2 Channel: 00 Id: 02 Lun: 00
  Vendor: ServeRA  Model: data2            Rev: V1.0
  Type:   Direct-Access                    ANSI  SCSI revision: 02
...

In the example above, it shows it's logical drive number is 2, more info about how to check luns attached to HBA

Find the right logical drive and physical drive

For both a and b, In arcconf getconfig 1 AL output, find the right logical drive

Logical drive number 2
   Logical drive name                       : data2
   RAID level                               : 1
   Status of logical drive                  : Okay
   Size                                     : 285999 MB
   Read-cache mode                          : Enabled
   Write-cache mode                         : Enabled (write-back)
   Write-cache setting                      : Enabled (write-back) when protected by battery
   Partitioned                              : Yes
   Protected by Hot-Spare                   : No
   Bootable                                 : No
   Defunct stripes                          : No
   --------------------------------------------------------
   Logical drive segment information
   --------------------------------------------------------
   Segment 0                                : Present (0,4) 3QP1AJ7R
   Segment 1                                : Present (0,5) 3QP1AK9N

As you can see you get the logical drive info, then you can move on find the physical one. disks in slot 4 and 5 are disks you want to remove, before you put hands on it, you may want to make the disks blinking when you remove them, see the identify section below

      Device #4
         Device is a Hard drive
         State                              : Online
         Supported                          : Yes
         Transfer Speed                     : SAS 3.0 Gb/s
         Reported Channel,Device            : 0,4
         Reported Location                  : Enclosure 0, Slot 4
         Reported ESD                       : 2,0
         Vendor                             : IBM-ESXS
         Model                              : ST3300656SS
         Firmware                           : BA47
         Serial number                      : 3QP1AJ7R
         World-wide name                    : 5000C50012674BA8
         Size                               : 286102 MB
         Write Cache                        : Disabled (write-through)
         FRU                                : 43X0805
         PFA                                : No
      Device #5
         Device is a Hard drive
         State                              : Online
         Supported                          : Yes
         Transfer Speed                     : SAS 3.0 Gb/s
         Reported Channel,Device            : 0,5
         Reported Location                  : Enclosure 0, Slot 5
         Reported ESD                       : 2,0
         Vendor                             : IBM-ESXS
         Model                              : ST3300656SS
         Firmware                           : BA47
         Serial number                      : 3QP1AK9N
         World-wide name                    : 5000C5001266E584
         Size                               : 286102 MB
         Write Cache                        : Disabled (write-through)
         FRU                                : 43X0805
         PFA                                : No

Identify

 Usage: IDENTIFY <Controller#> LOGICALDRIVE <LogicalDrive#>
 Usage: IDENTIFY <Controller#> DEVICE <Channel# ID#>
 ======================================================

 Identifies a logical drive or a physical device.

    LogicalDrive# : Number of the logical drive to be identified
    Channel# ID#  : The Channel and ID of the physical device to be identified

you can find channel# id# in red in the above section output

#arcconf identify 1 device 0 4
Controllers found: 1
Only devices managed by an enclosure processor may be identified
The specified device is blinking.
Press any key to stop the blinking.

Rescan

In case you need to rescan the controller

ARCCONF RESCAN <Controller#>
arcconf rescan 1
The controller will re-discover all physical disks

Getlogs

 Usage: GETLOGS <Controller#> <Type> [clear|tabular]
 ======================================================

 Obtains controller log information.

 Type:     DEVICE,  drive error log
              DEAD,    dead (defunct) drive log
              EVENT,   controller event log
              PPI,     can only be cleared
    clear   : Clears the specified log.
    tabular : Displays the specified log in tabular (vs XML) format.

Example:
# arcconf getlogs 1 event tabular
Controllers found: 1

   ControllerLog
      controllerID ..................... 0
      type ............................. 6
      time ............................. 1388710063
      eventlog
         event
            Date ............................. 1388710063
            eventType ........................ FSA_EM_ENHANCED_BATTERY_CHANGE
            eventCode ........................ 0x8000000
            capabilities_bits ................ 0
            event_bits ....................... 32768
            status_bits ...................... 0
            temperature ...................... 0
            current .......................... 0
            designCapacity ................... 0
            fullCapacity ..................... 0
            remainingCapacity ................ 0
            DramCurrentDraw .................. 0
            nextReconDate .................... 0
            lastReconDate .................... 0
            tabStatusRegisterBits ............ 0
            tabControlRegisterBits ........... 0
            rombStatusRegisterBits ........... 0
            rombControlRegisterBits .......... 0
            max_temperature .................. 0
            voltage .......................... 4040
            batSubSysColdStartedDays ......... 0
            batSubSysColdStartedHours ........ 0
            batSubSysColdStartedMinutes ...... 0
            batSubSysColdStartedSeconds ...... 0
            controllerID ..................... 0

Or

# arcconf getlogs 1 dead tabular
Controllers found: 1

   ControllerLog
      controllerID ..................... 0
      type ............................. 5
      time ............................. 1388710146
      version .......................... 0

      deadDriveEntry
         adapterID ........................ 0
         channelID ........................ 0
         deviceID ......................... 5
         entryType ........................ 0
         rtcSeconds ....................... 43
         rtcMinutes ....................... 48
         rtcHours ......................... 21
         rtcDay ........................... 30
         rtcMonth ......................... 3
         rtcYear .......................... 2013
         serialNumber ..................... 3QP1AK9N
         vendorProductID .................. 3QP1AK9NIBM-ESXS
         failureReasonCode ................ 0
         majorReasonCode .................. 0
         deviceAddress .................... 9576172410181582928

Failover

This featuer default should be on, which means controller will take according action when a disk failed or replaced. For example, if a disk failed and there is a hot spare disk, then the array will rebuild using hot spare.

ARCCONF FAILOVER <Controller#> <on|off>

Setstate

In the event that the automatic failover feature has not been enabled and you do not want to enable it, the available hard disk can also be designated as a so-called hot spare disk. In this manner, you can assign the available drive to the associated logical device and start the rebuild automatically afterwards.


ARCCONF SETSTATE <Controller#> DEVICE <Channel#> <ID#> HSP LOGICALDRIVE <LD#>

Example:

ARCCONF SETSTATE 1 DEVICE 0 0 HSP LOGICALDRIVE 1

Set Data scrubbing

See Adaptec ARRAY Controller Consistency Check config

And, monitoring

See Adaptec ARRAY Controller Monitoring in perl

Copy back

See Adaptec Array Controller Copy Back feature

 

 For more complex examples or case handling, I suggest you ask the vendor, or visit Ask Adaptec