我可以从Linux内部检测硬件RAID信息吗?


15

当我进入Linux时,可以从lsblk(从输出中删除无关的驱动器)获取以下信息:

NAME  MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda     8:0    0   298G  0 disk 
sdb     8:16   0   2.7T  0 disk

当我手动将驱动器从服务器中拉出时,可以告诉我实际上是在使用以下驱动器:

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

因为服务器中的物理存储多于Linux中的可用空间,所以这显然意味着我正在使用某种形式的RAID系统。通过一点数学,我经常可以弄清楚正在使用哪种类型的RAID系统。

有没有一种方法可以让我检测是否正在Linux内部使用硬件RAID ,并找出有关它的所有信息(例如RAID类型,可用驱动器)而无需关闭服务器,从物理上拉出驱动器,并阅读他们的标签?

可以从Linux内部收集此信息,还是从硬件RAID的角度使底层系统对操作系统“不可见”?


它完全取决于您使用的RAID控制器以及它在linux下的支持。如果您提供有关控制器的信息,则可以在此处找到帮助。如果您在此处找不到所需的信息,也可以在Web上搜索“ model#linux命令”。
基因

@Gene真不幸。再次,我希望有一种解决方案,它不需要查找特定的型号,但是无论使用什么硬件,都可以使用。
IQAndreas

不同的硬件执行RAID的方式不同,并且具有不同的驱动程序。在许多情况下,您不必关闭系统电源,但至少您需要知道您拥有哪种型号的控制器或芯片组,以便可以找到从操作系统中查询控制器的命令。
基因

1
通常,您可以通过dmesg,dmidecode,lspci和其他类似实用程序找到控制器或芯片组信息。如果它是主板上的内置RAID,那么知道主板的品牌和型号将为您提供99%的解决方案。
基因

1
adds an answer explaining how to figure out which RAID controller is being used from inside of Linux -@IQAndreas,但这不是问题。关于serverfault的答案应该是回答所问的问题。如果您有其他问题,则应编辑问题。在Google上几分钟,几乎可以肯定地回答了这个问题。无论如何,答案是lshw
Zoredache

Answers:


17

如何获取RAID信息将完​​全取决于您所使用的RAID控制器。通常,制造商会提供可从其网站下载的工具,这些工具可用于查询RAID控制器并获取此信息。

为了找到您正在使用哪个RAID控制器,请尝试以下命令之一:

lspci

# 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)

在这里,我们正在寻找的信息是“ 3ware Inc 9690SA SAS / SATA-II RAID PCIe”

lsscsi

该命令在Debian和Ubuntu上不可用,但是sudo apt-get install lsscsi可以从存储库中快速获取该命令。请注意,如果您不使用RAID控制器,则会在此处显示硬盘驱动器的制造商和型号。

# 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 

在这里,我们看到制造商是“ AMCC”,RAID卡的型号是“ 9690SA-8I”快速的Google搜索显示,该卡也称为“ AMCC 3Ware 9690SA-8I”

sh

第三种方法(可以提供很多输出数据)是使用lshw命令。lshw -class disk以root身份运行以仅显示有关硬盘驱动器的详细信息(包括RAID信息)。

查找RAID控制器工具

现在我们有了制造商和型号,现在应该可以在他们的网站上找到这些工具,或者至少能够在Google上找到有关如何为该特定控制器找到和使用这些工具的详细信息。

如果制造商出现在此列表中,请参阅以下答案以获取有关如何获取卡的RAID信息的更多详细信息:


5

运行类似lspci -knn | grep 'RAID bus controller'

使用该输出,例如Google LSI Logic / Symbios Logic MegaRAID SAS 2208

发现它使用该storcli实用程序询问RAID控制器。

下载并安装。

storcli64 show 专门为您提供控制器的型号,以及控制器索引,驱动器组和虚拟驱动器的数量。

storcli64 /c0/d0 show显示您的第一个控制器,第一个驱动器组。告诉您突袭等级,包括嵌套。

storcli64 /c0/eall/sall show all 显示所有磁盘上的所有信息。

这些命令的更多参考数据可以在这里找到:

http://mycusthelp.info/LSI/_cs/AnswerPreview.aspx?sSessionID=&inc=8275

应该是您要做的全部。只需使用Linux中的常规硬件自检,然后使用Google,然后下载并安装附带的实用程序即可。

@Gene的建议和评论绝对正确。

这个答案完全特定于您从lspci命令中获得的输出,以及Google搜索能够识别制造商并获取正确的命令行工具的能力。

但这确实表明您可以在命令行中从服务器上获取所有这些信息,而无需停止机器,打开机箱和拉出驱动器,这对我希望是有帮助的。


由于我的问题的答案将是特定于硬件的,因此我要做的是添加社区Wiki答案,以了解如何查找所使用的RAID控制器。然后,此答案链接到提供特定控制器或制造商详细信息的答案(包括您的答案)。
IQAndreas 2015年

如果您想更新答案的格式以反映这一点,那将是不错的选择,但并非绝对必要。
IQAndreas 2015年

2

这不是一个万能的答案,也不能为您提供所有所需的信息,但是在我们使用的一个Adaptec硬件RAID控制器上,它可以通过特殊设备/ dev来访问驱动器本身/ sg1 / dev / sg2等。我们可以运行smartctl -a / dev / sg1以获取有关该物理驱动器的很多信息,包括制造商,型号,接口,序列号,大小和其他数据。

至于弄清楚使用哪个控制器,我同意Gene关于dmidecode,dmesg和lspci的评论-我也将首先尝试这些。


1

对于创建存储配置文件,在运行lspci或下载任何内容之前,请执行以下操作。

# 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.

0

3件

已在以下RAID控制器上进行了测试: 9690SA-8I

请在评论中让我知道它是否适用于您的特定控制器,或者说明是否需要针对您的模型进行更新。

正在下载

首先,您需要下载该工具tw_cli。可以在Avago Technologies网站上找到*:

*不用担心,它不是第三方网站;的3ware通过AMCC购买,再后来出售给LSI公司,以后成为Avago的的一部分。。为了支持这一行动,注意3ware.com重定向到的相关页面上avagotech.com

输入tw_cli到搜索栏,然后导航周围,直到你找到一个名为下载CLI Linux - from the 10.2.2.1/9.5.5.1 code sets(最新版本号可能比此处列出不同)

解压缩zip文件,然后在x86或中x86_64找到所需的tw_cli二进制文件。将此二进制文件保存到您的服务器或计算机。

运行tw_cli

注意:(1)命令行实用程序可能需要以root用户身份运行。(2)通过将其添加到路径中,或通过使用从当前目录直接运行它,来像其他任何二进制文件一样运行它./tw_cli

首先,运行tw_cli show以列出系统上可用的RAID控制器:

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

在这里,我们可以看到连接了一个控制器,其ID为c2(请记住此ID!),其中附加了6个物理驱动器。要获取有关将哪些驱动器连接到设备的更多详细信息,请运行tw_cli /c2 show(替换/c2为控制器的ID):

# 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 

第一组显示正在使用的RAID设置。第二组显示当前物理连接到服务器的驱动器。

在这种情况下,我有两种RAID配置:

  • u0->驱动器,p0并且p1都是同一制造商提供的300 GB驱动器,设置为使用RAID-1(彼此完全相同的镜像)
  • u1->我有四个使用RAID-5设置的1TB Hitachi驱动器(p2通过p5)(“其中一个驱动器”用于确保在其他任何一个驱动器发生故障时保留数据)。这意味着(从顶部可以看到)u1具有3TB(或更确切地说,是2793.94 GB)可用数据。

运行tw_cli /c2/u0 show或可以找到有关驱动器状态和运行状况的更多信息tw_cli /c2/p0 show。可以在手册页中找到更多详细信息和命令。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.