When I'm inside of Linux, I can get the following information from lsblk (irrelevant drives removed from output):

sda     8:0    0   298G  0 disk 
sdb     8:16   0   2.7T  0 disk

When I manually pull the drives out of the server, I can tell I'm physically using the following drives:

0  Seagate 320GB
1  Seagate 320GB
2  Hitachi 1TB
3  Hitachi 1TB
4  Hitachi 1TB
5  Hitachi 1TB
6  [empty]
7  [empty]

Because there is more physical storage in the server than available space in Linux, this means I'm obviously using some form of RAID system. With a bit of math, I can often figure out what type of RAID system is being used.

Is there a way for me to detect if I'm using hardware RAID from inside of Linux, and figure out all the information about it (such as type of RAID, available drives) without turning off the server, physically pulling the drives out, and reading their labels?

Can this information be gathered from inside of Linux, or is the point of hardware RAID to make the underlying system "invisible" to the operating system?

  • It depends entirely on the RAID controller you are using and what support it has under linux. If you provide information about your controller you might find help here. You could also do a web search for "model# linux commands" if you don't get the information you need here. – Gene Sep 2 '15 at 20:24
  • @Gene That's unfortunate. Again, I was hoping there was a solution which does not require looking up the specific model number, but can be used regardless of what hardware you are using. – IQAndreas Sep 2 '15 at 20:29
  • Different hardware do RAID differently and have different drivers. In a lot of cases you don't have to power your system down, but at the very least you need to know what model controller or chipset you have so you can find commands to query the controller from the operating system. – Gene Sep 2 '15 at 20:42
  • 1
    You typically can find the controller or chipset information via dmesg, dmidecode, lspci, and other similar utilities. If it's built-in RAID on the motherboard knowing the make and model of the motherboard will get you 99% of the way there. – Gene Sep 2 '15 at 20:47
  • 1
    adds an answer explaining how to figure out which RAID controller is being used from inside of Linux - @IQAndreas but that isn't in the question. Answers on serverfault should be answer the question being asked. If you Have a different question you should edit your question. That question could almost certainly be answered yourself by a few minutes on Google. Anyway the answer to that is lshw. – Zoredache Sep 2 '15 at 21:34

How to get the RAID information is going to depend entirely on the RAID controller you are using. Often, manufacturers will have tools that can be downloaded from their website which can be used to query the RAID controller and get this information.

In order to find which RAID controller you are using, try one of the following commands:


# lspci -knn | grep 'RAID bus controller'
08:00.0 RAID bus controller [0104]: 3ware Inc 9690SA SAS/SATA-II RAID PCIe [13c1:1005] (rev 01)

Here, the information we are looking for is "3ware Inc 9690SA SAS/SATA-II RAID PCIe".


The command is not available on Debian and Ubuntu, but a quick sudo apt-get install lsscsi will fetch it from the repos. Note, if you are not using a RAID controller, the manufacturer and model number of your harddrive will show up here instead.

# lsscsi
[2:0:0:0]    disk    AMCC     9690SA-8I  DISK  4.08  /dev/sda 
[2:0:1:0]    disk    AMCC     9690SA-8I  DISK  4.08  /dev/sdb 

Here we see the manufacturer is "AMCC" and the model number of the RAID card is "9690SA-8I". A quick Google search shows that this card is also known as "AMCC 3Ware 9690SA-8I".


A third method (which gives quite a bit of output data) is to use the lshw command. Run lshw -class disk as root to only display the details about harddrives (which includes RAID information).

Finding the RAID controller tools

Now that we have the manufacturer and model number, it should be possible to find the tools on their website, or at least be able to Google details on how to find and use the tools for that specific controller.

If the manufacturer shows up in this list, see these answers for more details on how to get the RAID information for your card:

|improve this answer|||||

Run something like lspci -knn | grep 'RAID bus controller'.

Using that output, Google (for example) for LSI Logic / Symbios Logic MegaRAID SAS 2208.

Find it uses the storcli utility to interrogate the RAID controller.

Download it and install it.

storcli64 show gives you the model of controller specifically, and the controller index, number of drive groups, and virtual drives.

storcli64 /c0/d0 show shows you first controller, first drive group. Tells you raid levels, including nesting.

storcli64 /c0/eall/sall show all shows you all the information on all the disks.

Further reference data for those commands can be found here:


Should be all you have to do. Just use the normal hardware introspection in Linux, then Google, then download and install the utilities that go with it.

@Gene's suggestions and comments are absolutely spot-on.

This answer is entirely specific to the output you get from the lspci command, and the ability for your Google search to identify the manufacturer and to grab the correct command line tool.

But it does show that you can get all of this from a server, on a command line, without halting the machine, opening the case, and pulling drives, which I hope is helpful.

|improve this answer|||||

This isn't a one-size-fits-all answer and doesn't give you all the information you need, but on one Adaptec hardware RAID controller we've used, it gave some access to the drives themselves via special devices /dev/sg1 /dev/sg2, etc. We could run smartctl -a /dev/sg1 to get a lot of info on that physical drive including manufacturer, model number, interface, serial number, size, and other data.

As far as figuring out which controller's being used, I agree with Gene's comment about dmidecode, dmesg, and lspci - those would be my ones to try first as well.

|improve this answer|||||

For creating a storage profile, I'd do the following before running lspci or downloading anything.

# cat /etc/fstab         What partitions get mounted at boot?

# sudo pvs               Are you running LVM? List the physical volumes

# cat /proc/mdstat       List software RAID devices & status

# for D in /dev/sd?; do parted $D print; done
                         If hardware RAID is being used, the "Model" field will list
                         the Mfr. name, otherwise the hard drive Mfr.
|improve this answer|||||


This has been tested on the following RAID controllers: 9690SA-8I

Please let me know in the comments if it worked for your specific controller, or if the instructions need updating for your model.


First, you need to download the tool tw_cli. This can be found on the Avago Technologies website*:

* Don't worry, it's not a third party website; 3ware was purchased by AMCC, and then later sold to the LSI Corporation, which later became part of Avago [source]. To back this up, note that 3ware.com redirects to the relevant page on avagotech.com.

Type tw_cli into the search bar, then navigate around until you find a download named CLI Linux - from the code sets (the latest version number may be different than what is listed here)

Extract the zip file, and in either the x86 or x86_64 you will find the tw_cli binary that you need. Save this binary to your server or computer.

Running tw_cli

NOTE: (1) The command-line utility may need to run as root. (2) Run it as you would any other binary by either adding it to the path, or by running it directly from the current directory with ./tw_cli.

First, run tw_cli show to list which RAID controllers are available on your system:

# tw_cli show
Ctl   Model        (V)Ports  Drives   Units   NotOpt  RRate   VRate  BBU
c2    9690SA-8I    6         6        2       0       1       1      Charging 

Here we can see there is one controller attached, with the id of c2 (remember this id!), which has 6 physical drives attached. To get more details about which drives are attached to the unit, run tw_cli /c2 show (replacing /c2 with the ID of your controller):

# tw_cli /c2 show
Unit  UnitType  Status         %RCmpl  %V/I/M  Stripe  Size(GB)  Cache  AVrfy
u0    RAID-1    OK             -       -       -       298.013   Ri     ON     
u1    RAID-5    OK             -       -       64K     2793.94   Ri     ON     

VPort Status         Unit Size      Type  Phy Encl-Slot    Model
p0    OK             u0   298.09 GB SATA  0   -            ST3320613AS         
p1    OK             u0   298.09 GB SATA  1   -            ST3320613AS         
p2    OK             u1   931.51 GB SATA  2   -            Hitachi HDS721010CL 
p3    OK             u1   931.51 GB SATA  3   -            Hitachi HDS721010CL 
p4    OK             u1   931.51 GB SATA  4   -            Hitachi HDS721010CL 
p5    OK             u1   931.51 GB SATA  5   -            Hitachi HDS721010CL 

The first group shows the RAID setups being used. The second group shows which drives are currently physically attached to the server.

In this particular case, I have two RAID configurations:

  • u0 -> Drives p0 and p1 are both 300 GB drives by the same manufacturer, set up to use RAID-1 (exact mirrors of each other)
  • u1 -> I have four 1TB Hitachi drives (p2 through p5) set up using RAID-5 ("one of the drives" is used to make sure data is preserved if any one of the other drives fails). This means (as we can see from the top), u1 has 3TB (or, rather, 2793.94 GB) of usable data.

Even more information about the status and health of the drives can be found by running tw_cli /c2/u0 show or tw_cli /c2/p0 show. More details and commands can be found in the man pages.

|improve this answer|||||

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.