'\" te .\" Copyright (c) 2007, Sun Microsystems, Inc. All Rights Reserved. .\" The contents of this file are subject to the terms of the Common Development and Distribution License (the "License"). You may not use this file except in compliance with the License. .\" You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE or http://www.opensolaris.org/os/licensing. See the License for the specific language governing permissions and limitations under the License. .\" When distributing Covered Code, include this CDDL HEADER in each file and include the License file at usr/src/OPENSOLARIS.LICENSE. If applicable, add the following below this CDDL HEADER, with the fields enclosed by brackets "[]" replaced with your own identifying information: Portions Copyright [yyyy] [name of copyright owner] .TH RAIDCTL 1M "Feb 5, 2009" .SH NAME raidctl \- RAID hardware utility .SH SYNOPSIS .LP .nf \fBraidctl\fR \fB-C\fR \fI"disks"\fR [\fB-r\fR \fIraid_level\fR] [\fB-z\fR \fIcapacity\fR] [\fB-s\fR \fIstripe_size\fR] [\fB-f\fR] controller .fi .LP .nf \fBraidctl\fR \fB-d\fR [\fB-f\fR] \fIvolume\fR .fi .LP .nf \fBraidctl\fR \fB-F\fR \fIfilename\fR [\fB-f\fR] \fIcontroller\fR\&.\|.\|. .fi .LP .nf \fBraidctl\fR \fB-a\fR {\fBset\fR | \fBunset\fR} \fB-g\fR \fIdisk\fR {\fBvolume\fR | \fBcontroller\fR} .fi .LP .nf \fBraidctl\fR \fB-p\fR \fI"param=value"\fR [\fB-f\fR] \fIvolume\fR .fi .LP .nf \fBraidctl\fR \fB-c\fR [\fB-f\fR] [\fB-r\fR \fIraid_level\fR] \fIdisk1\fR \fIdisk2\fR [\fIdisk3\fR...] .fi .LP .nf \fBraidctl\fR \fB-l\fR -g \fIdisk controller\fR .fi .LP .nf \fBraidctl\fR \fB-l\fR \fIvolume\fR .fi .LP .nf \fBraidctl\fR \fB-l\fR \fIcontroller\fR\&.\|.\|. .fi .LP .nf \fBraidctl\fR [\fB-l\fR] .fi .LP .nf \fBraidctl\fR \fB-S\fR [\fBvolume\fR | \fBcontroller\fR] .fi .LP .nf \fBraidctl\fR \fB-S\fR -g \fIdisk controller\fR .fi .LP .nf \fBraidctl\fR \fB-h\fR .fi .SH DESCRIPTION .sp .LP The \fBraidctl\fR utility is a hardware RAID configuration tool that supports different RAID controllers by providing a CLI (command-line interface) to end-users to create, delete or display RAID volume(s). The utility can also used to set properties of a volume, assign hot-spare (HSP) disks to volumes or controllers, and to update firmware/fcode/BIOS for RAID controllers. .sp .LP The \fBraidctl\fR utility requires privileges that are controlled by the underlying file-system permissions. Only privileged users can manipulate the RAID system configuration. If a non-privileged user attempts to run \fBraidctl\fR, the command fails with an exit status of 1. .sp .LP The \fBraidctl\fR utility, as described in this man page, defines a broad set of command line options to provide management for full-featured RAID controllers. However, support for a given option depends on two elements: .RS +4 .TP .ie t \(bu .el o the presence of a software driver .RE .RS +4 .TP .ie t \(bu .el o the firmware level of the RAID device .RE .sp .LP The dependency on a software driver is due to the design of \fBraidctl\fR. The utility is built on a common library that enables the insertion of plug-in modules for different drivers. Currently, the Solaris operating system is shipped with a plug-in for the \fBmpt\fR driver. This plug-in does not support all of the \fBraidctl\fR options. On a given storage device, options might be further limited by the device's firmware level. .sp .LP The level of support for the various \fBraidctl\fR options cannot be determined by \fBraidctl\fR. The user must rely on the documentation for his RAID controller or hardware platform. .sp .LP Currently, \fBraidctl\fR Currently, \fBraidctl\fR provides some level of support for the following RAID controllers: .RS +4 .TP .ie t \(bu .el o LSI1020 SCSI HBA .RE .RS +4 .TP .ie t \(bu .el o LSI1030 SCSI HBA .RE .RS +4 .TP .ie t \(bu .el o LSI1064 SAS HBA .RE .RS +4 .TP .ie t \(bu .el o LSI1068 SAS HBA .RE .sp .LP All of the above HBAs are maintained by the \fBmpt\fR driver, on X86-32/64 and SPARC platforms. .SH OPTIONS .sp .LP The following options are supported: .sp .ne 2 .na \fB\fB-C\fR \fI"disks"\fR [\fB-r\fR \fIraid_level\fR] [\fB-z\fR \fIcapacity\fR] [\fB-s\fR \fIstripe_size\fR] [\fB-f\fR] controller\fR .ad .sp .6 .RS 4n Create a RAID volume using specified disks. .sp When creating a RAID volume using this option, the identity of the newly created volume is automatically generated and raidctl reports it to the user. .sp The argument specified by this option contains the elements used to form the volume that will be created. Elements can be either disks or sub-volumes, where disks are separated by space(s) and a sub-volume is a set of disks grouped by parenthesis. All disks should be in \fBC.ID.L\fR expression (for example, \fB0.1.2\fR represents a physical disk of channel 0, target id 1, and logical unit number 2). The argument must match the RAID level specified by the \fB-r\fR option, even if it's omitted. This means the argument can only be: .sp .ne 2 .na \fBfor RAID 0\fR .ad .sp .6 .RS 4n At least 2 disks .RE .sp .ne 2 .na \fBfor RAID 1\fR .ad .sp .6 .RS 4n Only 2 disks .RE .sp .ne 2 .na \fBfor RAID 1E\fR .ad .sp .6 .RS 4n At least 3 disks .RE .sp .ne 2 .na \fBfor RAID 5\fR .ad .sp .6 .RS 4n At least 3 disks .RE .sp .ne 2 .na \fBfor RAID 10\fR .ad .sp .6 .RS 4n At least 2 sub-volumes, each sub-volume must be formed by 2 disks .RE .sp .ne 2 .na \fBfor RAID 50\fR .ad .sp .6 .RS 4n At least 2 sub-volumes, each sub-volume must be formed by at least 3 disks, and the disk amount in each sub-volume should be the same .RE For example, the expression "0.0.0 0.1.0" means that the 2 specified disks form a RAID volume, which can either be a RAID 0 or a RAID 1 volume. "(0.0.0 0.1.0)(0.2.0 0.3.0)" means that the first 2 disks and the last 2 disks form 2 sub-volumes, and that these 2 sub-volumes form a RAID 10 volume. See the \fBEXAMPLES\fR section for more samples. .sp The \fB-r\fR option specifies the RAID level of the volume that will be created. Possible levels are 0, 1, 1E, 5, 10, 50. If this option is omitted, \fBraidctl\fR creates a RAID 1 volume by default. .sp The \fB-z\fR option specifies the capacity of the volume that will be created. The unit can be tera-bytes, giga-bytes, or mega-bytes (for example, 2t, 10g, 20m, and so on). If this option is omitted, \fBraidctl\fR calculates the maximum capacity of the volume that can be created by the specified disks and uses this value to create the volume. .sp The \fB-s\fR option specifies the stripe size of the volume that will be created. The possible values are 512, 1k, 2k, 4k, 8k, 16k, 32k, 64k, or 128k. If this option is omitted, \fBraidctl\fR chooses an appropriate value for the volume (for example, 64k). .sp In some cases, the creation of a RAID volume may cause data on specified disks to be lost (for instance, on LSI1020, LSI1030, SAS1064, or SAS1068 HBAs), and \fBraidctl\fR prompts the user for confirmation about the creation. Use the \fB-f\fR option to force the volume creation without prompting the user for confirmation. .sp The controller argument is used to identify which RAID controller the specified disks belongs. The \fB-l\fR option can be used to list the controller's ID number. .RE .sp .ne 2 .na \fB\fB-d\fR [\fB-f\fR] \fIvolume\fR\fR .ad .sp .6 .RS 4n Delete the RAID volume specified as volume. The volume is specified in canonical form (for example, \fBc0t0d0\fR). .sp When a volume is deleted, all data is lost. Therefore, unless the \fB-f\fR option is specified, \fBraidctl\fR prompts the user for confirmation before deleting the volume. .sp When a RAID 1 volume is deleted from a LSI1020, LSI1030, SAS1064, or SAS1068 HBA, the primary and secondary disks are "split". If the volume was in \fBSYNCING\fR state, the primary will contain the data, and the secondary will not. If the volume state was \fBOPTIMAL\fR, both disks will contain a complete image of the data. .RE .sp .ne 2 .na \fB\fB-F\fR \fIfilename\fR [\fB-f\fR] \fIcontroller\fR\&.\|.\|.\fR .ad .sp .6 .RS 4n Update the firmware running on the specified controller(s). The \fBraidctl\fR utility prompts the user for confirmation of this action, unless the \fB-f\fR option is provided. .RE .sp .ne 2 .na \fB\fB-a\fR {\fBset\fR | \fBunset\fR} \fB-g\fR \fIdisk\fR {\fBvolume\fR | \fBcontroller\fR}\fR .ad .sp .6 .RS 4n If the volume is specified, \fBraidctl\fR sets or unsets the disk as a local hot-spare disk dedicated to the volume, depending on the value specified by the \fB-a\fR option. If the controller is specified, \fBraidctl\fR sets or unsets the disk as a global hot-spare disk. .RE .sp .ne 2 .na \fB\fB-p\fR \fI"param=value"\fR [\fB-f\fR] \fIvolume\fR\fR .ad .sp .6 .RS 4n Change the property value for a given RAID volume. This option can be used to change cache write policy or to activate a volume. When changing the cache write policy, \fIparam\fR should be the string \fBwp\fR (\fBSET_WR_POLICY\fR), and \fIvalue\fR can be either \fBon\fR or \fBoff\fR. When used to activate a volume, \fIparam\fR should be \fBstate\fR and \fIvalue\fR should be \fBactivate\fR. .sp Changing a RAID volume's property may affect the internal behavior of the RAID controller, so \fBraidctl\fR prompts the user for a confirmation before applying the change, unless the \fB-f\fR option is specified. .RE .sp .ne 2 .na \fB\fB-c\fR [\fB-f\fR] [\fB-r\fR \fIraid_level\fR] \fIdisk1\fR \fIdisk2\fR [\fIdisk3\fR...]\fR .ad .sp .6 .RS 4n Create a volume using the specified disks. This is an alternative to the \fB-C\fR option with similar functionality. This option is preserved for compatibility reasons, but only works with LSI1020, LSI1030, SAS1064, and SAS1068 HBAs to create RAID 0, RAID 1, or RAID 1E volumes. For other HBAs, the user can only use the \fB-C\fR option. .sp The \fB-r\fR option can be used to specify the RAID level of the target volume. If the \fB-r\fR option is omitted, \fBraidctl\fR will create a RAID 1 volume. .sp Disks must be specified in Solaris canonical format (for example, c0t0d0). .sp Creating a RAID 1 volume with this option replaces the contents of disk2 with the contents of disk1. .sp When the user creates a RAID volume with this option, the RAID volume assumes the identity of disk1. Other disks become invisible and the RAID volume appears as one disk. .sp Creating a volume with this option is by default interactive. The user must answer a prompt affirmatively to create the volume. Use the \fB-f\fR option to force the volume creation without prompting the user for confirmation. .RE .sp .ne 2 .na \fB\fB-l\fR -g \fIdisk controller\fR\fR .ad .sp .6 .RS 4n Display information about the specified disk of the given controller. The output includes the following information: .sp .ne 2 .na \fBDisk\fR .ad .sp .6 .RS 4n Displays the disk in \fBC.ID.L\fR expression disk. .RE .sp .ne 2 .na \fBVendor\fR .ad .sp .6 .RS 4n Displays the vendor ID string. .RE .sp .ne 2 .na \fBProduct\fR .ad .sp .6 .RS 4n Displays the product ID string. .RE .sp .ne 2 .na \fBCapacity\fR .ad .sp .6 .RS 4n Displays the total capacity of the disk. .RE .sp .ne 2 .na \fBStatus\fR .ad .sp .6 .RS 4n Displays the current status of disk. The status can be either "\fBGOOD\fR" (operating normally), "\fBFAILED\fR" (non-functional), or "\fBMISSING\fR" (disk not present). .RE .sp .ne 2 .na \fBHSP\fR .ad .sp .6 .RS 4n Indicates if the disk has been set as a global hot-spare disk, local hot-spare disk, or a normal one. If it is a local hot-spare disk, all volumes which this disk is assigned to are displayed. .RE .sp .ne 2 .na \fBGUID\fR .ad .sp .6 .RS 4n GUID string for the specified disk. This is an additional datum and might be unavailable in some cases. .RE .RE .sp .ne 2 .na \fB\fB-l\fR \fIvolume\fR\fR .ad .sp .6 .RS 4n Display information about the specified volume. The output includes the following information: .sp .ne 2 .na \fBVolume\fR .ad .sp .6 .RS 4n Displays volume in canonical format. .RE .sp .ne 2 .na \fBSub\fR .ad .sp .6 .RS 4n Displays sub-volumes, if the specified volume is of RAID 10 or RAID 50 volume. .RE .sp .ne 2 .na \fBDisk\fR .ad .sp .6 .RS 4n Displays all disks that form the specified volume. .RE .sp .ne 2 .na \fBStripe Size\fR .ad .sp .6 .RS 4n Displays the stripe size of the volume. .RE .sp .ne 2 .na \fBStatus\fR .ad .sp .6 .RS 4n Displays the status of the specified volume, or the sub-volumes or disks that form the specified volume. For an inactive volume, the status should be \fBINACTIVE\fR; otherwise it can be \fBOPTIMAL\fR (operating optimally), \fBDEGRADED\fR (operating with reduced functionality), \fBFAILED\fR (non-functional), or \fBSYNC\fR (disks are syncing). For a disk, the status can be \fBGOOD\fR, \fBFAILED\fR, or \fBMISSING\fR. .RE .sp .ne 2 .na \fBCache\fR .ad .sp .6 .RS 4n Indicates whether the cache is applied to \fBI/O\fR write activities. The cache can be either "\fBON\fR" or "\fBOFF\fR". .RE .sp .ne 2 .na \fBRAID level\fR .ad .sp .6 .RS 4n Displays the RAID level. The RAID level can be either 0, 1, 1E, 5, 10, or 50. .RE .RE .sp .ne 2 .na \fB\fB-l\fR \fIcontroller ...\fR\fR .ad .sp .6 .RS 4n Display information about the specified controller(s). The output includes the following information: .sp .ne 2 .na \fBController\fR .ad .sp .6 .RS 4n Displays the RAID controller's ID number. .RE .sp .ne 2 .na \fBType\fR .ad .sp .6 .RS 4n Displays the RAID controller's product type. .RE .sp .ne 2 .na \fBfw_version\fR .ad .sp .6 .RS 4n Displays the controller's firmware version. .RE .RE .sp .ne 2 .na \fB[\fB-l\fR]\fR .ad .sp .6 .RS 4n List all RAID related objects that the \fBraidctl\fR utility can manipulate, including all available RAID controllers, RAID volumes, and physical disks. The \fB-l\fR option can be omitted. .sp The output includes the following information: .sp .ne 2 .na \fBController\fR .ad .sp .6 .RS 4n Displays the RAID controller's ID number. .RE .sp .ne 2 .na \fBVolume\fR .ad .sp .6 .RS 4n Displays the logical RAID volume name. .RE .sp .ne 2 .na \fBDisk\fR .ad .sp .6 .RS 4n Displays the RAID disk in \fBC.ID.L\fR expression. .RE .RE .sp .ne 2 .na \fB\fB-S\fR [\fBvolume\fR | \fBcontroller\fR]\fR .ad .sp .6 .RS 4n Takes a snapshot of the RAID configuration information including all available RAID devices, RAID controllers, volumes, and disks. .sp Each line of the output specifies a RAID device and its related information, separated by space(s). All volumes and disks belong to the last specified controller. .sp The output lists the following information: .sp .ne 2 .na \fBController\fR .ad .sp .6 .RS 4n Displays the controller ID number, and the controller type string in double-quotation marks. .RE .sp .ne 2 .na \fBVolume\fR .ad .sp .6 .RS 4n Displays the RAID volume name, number of component disks, the \fBC.ID.L\fR expression of the component disks, the RAID level, and the status. The status can be either \fBOPTIMAL\fR, \fBDEGRADED\fR, \fBFAILED\fR, or \fBSYNCING\fR. .RE .sp .ne 2 .na \fBDisk\fR .ad .sp .6 .RS 4n Displays the \fBC.ID.L\fR expression of the disk, and the status. The status can be either \fBGOOD\fR, \fBFAILED\fR, or \fBHSP\fR (disk has been set as a stand-by disk). .RE If a volume or a controller is specified, a snapshot is only taken of the information for the specified volume or controller. .RE .sp .ne 2 .na \fB\fB-S\fR -g \fIdisk controller\fR\fR .ad .sp .6 .RS 4n Takes a snapshot of the information for the specified disk. .RE .sp .ne 2 .na \fB\fB-h\fR\fR .ad .sp .6 .RS 4n Print out the usage string. .RE .SH EXAMPLES .LP \fBExample 1 \fRCreating the RAID Configuration .sp .LP The following command creates a RAID 0 volume of 10G on controller 0, and the stripe size will be set to 64k: .sp .in +2 .nf # \fBraidctl -C "0.0.0 0.2.0" -r 0 -z 10g -s 64k 0\fR .fi .in -2 .sp .sp .LP The following command creates a RAID 1 volume on controller 2: .sp .in +2 .nf # \fBraidctl -C "0.0.0 1.1.0" -r 1 2\fR .fi .in -2 .sp .sp .LP The following command creates a RAID 5 volume on controller 2: .sp .in +2 .nf # \fBraidctl -C "0.0.0 0.1.0 0.2.0" -r 5 2\fR .fi .in -2 .sp .sp .LP The following command creates a RAID 10 volume on controller 0: .sp .in +2 .nf # \fBraidctl -C "(0.0.0 0.1.0)(0.2.0 0.3.0)" -r 10 0\fR .fi .in -2 .sp .sp .LP The following command creates a RAID 50 volume on controller 0: .sp .in +2 .nf # \fBraidctl -C "(0.0.0 0.1.0 0.2.0)(0.3.0 0.4.0 0.5.0)" -r 50 0\fR .fi .in -2 .sp .LP \fBExample 2 \fRDisplaying the RAID Configuration .sp .LP The following command displays all available controllers, volumes, and disks: .sp .in +2 .nf # \fBraidctl -l\fR Controller: 0 Controller: 2 Volume:c2t0d0 Disk: 0.0.0 Disk: 0.1.0 Disk: 0.2.0 Disk: 0.3.0(HSP) .fi .in -2 .sp .sp .LP The following command displays information about controller 2: .sp .in +2 .nf # \fBraidctl -l 2\fR Controller Type Fw_version -------------------------------------------------------------- c2 LSI 1030 1.03.39.00 .fi .in -2 .sp .sp .LP The following command displays information about the specified volume: .sp .in +2 .nf # \fBraidctl -l c2t0d0\fR Volume Size Stripe Status Cache RAID Sub Size Level Disk -------------------------------------------------------------- c2t0d0 10240M 64K OPTIMAL ON RAID5 0.0.0 5120M GOOD 0.1.0 5120M GOOD 0.2.0 5120M GOOD .fi .in -2 .sp .sp .LP The following command displays information about disk 0.0.0 on controller 0: .sp .in +2 .nf # \fBraidctl -l -g 0.0.0 0\fR Disk Vendor Product Firmware Capacity Status HSP -------------------------------------------------------------------- 0.0.0 HITACHI H101473SCSUN72G SQ02 68.3G GOOD N/A GUID:2000000cca02536c .fi .in -2 .sp .LP \fBExample 3 \fRDeleting the RAID Configuration .sp .LP The following command deletes a volume: .sp .in +2 .nf # \fBraidctl -d c0t0d0\fR .fi .in -2 .sp .LP \fBExample 4 \fRUpdating Flash Images on the Controller .sp .LP The following command updates flash images on the controller 0: .sp .in +2 .nf # \fBraidctl -F lsi_image.fw 0\fR .fi .in -2 .sp .LP \fBExample 5 \fRSetting or Unsetting a Hot-Spare Disk .sp .LP The following command sets disk 0.3.0 on controller 2 as a global hot-spare disk: .sp .in +2 .nf # \fBraidctl -a set -g 0.3.0 2\fR .fi .in -2 .sp .sp .LP The following command sets disk 0.3.0 on controller 2 as a local hot-spare disk to volume c2t0d0: .sp .in +2 .nf # \fBraidctl -a set -g 0.3.0 c2t0d0\fR .fi .in -2 .sp .sp .LP The following command converts disk 0.3.0 on controller 2 from a global hot-spare disk to a normal one: .sp .in +2 .nf # \fBraidctl -a unset -g 0.3.0 2\fR .fi .in -2 .sp .sp .LP The following command removes disk 0.3.0 from being a local hot-spare disk from volume c2t0d0: .sp .in +2 .nf # \fBraidctl -a unset -g 0.3.0 c2t0d0\fR .fi .in -2 .sp .LP \fBExample 6 \fRSetting the Volume's Property .sp .LP The following command sets the write policy of the volume to "\fBoff\fR": .sp .in +2 .nf # \fBraidctl -a set -p "wp=off" c0t0d0\fR .fi .in -2 .sp .LP \fBExample 7 \fRCreating Volumes with the \fB-c\fR Option .sp .LP The following command creates a RAID 1 volume: .sp .in +2 .nf # \fBraidctl -c c0t0d0 c0t1d0\fR .fi .in -2 .sp .sp .LP The following command creates a RAID 0 volume: .sp .in +2 .nf # \fBraidctl -c -r 0 c0t1d0 c0t2d0 c0t3d0\fR .fi .in -2 .sp .LP \fBExample 8 \fRTaking a Snapshot of the RAID Configuration .sp .LP The following command takes a snapshot of all RAID devices: .sp .in +2 .nf # \fB# raidctl -S\fR 1 "LSI 1030" c1t1d0 2 0.2.0 0.3.0 1 DEGRADED 0.2.0 GOOD 0.3.0 FAILED .fi .in -2 .sp .sp .LP The following command takes a snapshot about volume c1t0d0: .sp .in +2 .nf # \fBraidctl -S c1t0d0\fR c1t0d0 2 0.0.0 0.1.0 1 OPTIMAL .fi .in -2 .sp .sp .LP The following command takes a snapshot about disk 0.1.0 on controller 1: .sp .in +2 .nf # \fBraidctl -S -g 0.1.0 1\fR 0.1.0 GOOD .fi .in -2 .sp .SH EXIT STATUS .sp .LP The following exit values are returned: .sp .ne 2 .na \fB\fB0\fR\fR .ad .sp .6 .RS 4n Successful completion. .RE .sp .ne 2 .na \fB\fB1\fR\fR .ad .sp .6 .RS 4n Invalid command line input or permission denied. .RE .sp .ne 2 .na \fB\fB2\fR\fR .ad .sp .6 .RS 4n Request operation failed. .RE .SH ATTRIBUTES .sp .LP See \fBattributes\fR(5) for descriptions of the following attributes: .sp .sp .TS box; c | c l | l . ATTRIBUTE TYPE ATTRIBUTE VALUE _ Interface Stability Committed .TE .SH SEE ALSO .sp .LP \fBattributes\fR(5), \fBmpt\fR(7D) .sp .LP System Administration Guide: Basic Administration .SH WARNINGS .sp .LP Do not create raid volumes on internal \fBSAS\fR disks if you are going to use the Solaris Multipathing I/O feature (also known as MPxIO). Creating a new raid volume under Solaris Multipathing will give your root device a new \fBGUID\fR which does not match the \fBGUID\fR for the existing devices. This will cause a boot failure since your root device entry in \fB/etc/vfstab\fR will not match. .SH NOTES .sp .LP The \fB-z\fR option is not supported on systems that use the \fBmpt\fR driver and LSI RAID controllers.