将磁盘添加到现有 RAID 失败,并显示“磁盘容量不足”

将磁盘添加到现有 RAID 失败,并显示“磁盘容量不足”

我有一台非常老旧的物理服务器,它使用许多磁盘组成多个 RAID6 组。这些磁盘不在同一机箱中,而是通过此服务器上的 RAID 控制器连接的 JBOD 系统。在其中一个 RAID 组中,我的一个磁盘发生故障。更换故障磁盘后,输出如下storcli

$ storcli /c0 show
--------------------------------------------------------------------------
DG Arr Row EID:Slot DID Type  State  BT      Size PDC  PI SED DS3  FSpace 
--------------------------------------------------------------------------
 1 -   -   -        -   RAID6 Pdgd   N  27.285 TB dflt N  N   none N      
 1 0   -   -        -   RAID6 Dgrd   N  27.285 TB dflt N  N   none N      
 1 0   0   34:0     48  DRIVE Onln   N   2.728 TB dflt N  N   none -      
 1 0   1   34:1     49  DRIVE Onln   N   2.728 TB dflt N  N   none -      
 1 0   2   34:2     50  DRIVE Onln   N   2.728 TB dflt N  N   none -      
 1 0   3   34:3     51  DRIVE Onln   N   2.728 TB dflt N  N   none -      
 1 0   4   -        -   DRIVE Msng   -   2.728 TB -    -  -   -    -      
 1 0   5   34:5     53  DRIVE Onln   N   2.728 TB dflt N  N   none -      
 1 0   6   34:6     55  DRIVE Onln   N   2.728 TB dflt N  N   none -      
 1 0   7   34:7     54  DRIVE Onln   N   2.728 TB dflt N  N   none -      
 1 0   8   34:8     56  DRIVE Onln   N   2.728 TB dflt N  N   none -      
 1 0   9   34:9     57  DRIVE Onln   N   2.728 TB dflt N  N   none -      
 1 0   10  34:10    58  DRIVE Onln   N   2.728 TB dflt N  N   none -      
 1 0   11  34:11    59  DRIVE Onln   N   2.728 TB dflt N  N   none -  

从上面我们可以看到插槽 34:4 丢失,通过以下命令可以确认:

$ MegaCli -PdGetMissing -a0
                                     
    Adapter 0 - Missing Physical drives

    No.   Array   Row   Size Expected
    0     1       4     2861056 MB

当我尝试手动将此磁盘添加到其磁盘组时,出现以下错误:

$ MegaCli -PdReplaceMissing -PhysDrv [34:4] -Array1 -Row4 -a0
                                     
Adapter: 0: Failed to replace Missing PD at Array 1, Row 4.

FW error description: 
 The specified physical disk doesn't have enough capacity to complete the requested command.  

Exit Code: 0x0d

按照这个旧megaCLI 指南,上述错误代码是由于“驱动器太小,无法进行请求的操作”。

如果我比较storcli /c0/e34/s3,4 show all输出,替换磁盘具有相同的容量和扇区大小:

Drive /c0/e34/s3 Device attributes :                   <<<< working disk
==================================
WWN = 5000c50090fb1146
Firmware Revision = SN06
Raw size = 2.728 TB [0x15d50a3b0 Sectors]
Coerced size = 2.728 TB [0x15d400000 Sectors]
Non Coerced size = 2.728 TB [0x15d40a3b0 Sectors]
Device Speed = 6.0Gb/s
Link Speed = 6.0Gb/s
Logical Sector Size = 512B


Drive /c0/e34/s4 Device attributes :                  <<<< new disk to add
==================================
WWN = 5000c50074a7f9cf
Firmware Revision = SN04
Raw size = 2.728 TB [0x15d50a3b0 Sectors]
Coerced size = 2.728 TB [0x15d400000 Sectors]
Non Coerced size = 2.728 TB [0x15d40a3b0 Sectors]
Device Speed = 6.0Gb/s
Link Speed = 6.0Gb/s
Logical Sector Size = 512B
Physical Sector Size = 512B

当它们看起来完全相同时,知道为什么它会抱怨容量吗?


已编辑(基于@djdomi 和@U880D 的建议)

MegaCli -PDList -a0要查看所有磁盘的固件修订版本,请过滤以下输出:

$ MegaCli -PDList -a0 | awk '/^Enclosure Device ID/ {printf "%d", $4; next} /^Slot Number:/ {printf ":%d\t", $3; next} /Device Firmware Level/ {print $4}'
34:0    SN06
34:1    TN02
34:2    TN02
34:3    SN06
34:4    SN04
34:5    TN02
34:6    TN02
34:7    TN02
34:8    TN02
34:9    TN02
34:10   TN02
34:11   SN04

固件混合。磁盘 34:11 的固件 SN04 与 34:4 相同。想知道为什么它只影响磁盘 34:4?

答案1

使固件版本匹配

理想情况下,它们应该是控制器兼容性列表中标识为经过认证兼容的版本,但您要做的第一件事是将固件更新为驱动器之间相同的版本。

获取适合驱动器/序列的文件并将其用于storcli将固件下载到每个驱动器。

storcli64 /c0/e34/s3 download src=TN02.LOB
#                                 ^-- your firmware file here

它可能会解决这个问题——仅从我自己的卑微经验来看,它往往能解决很多其他怪异问题。我以前曾经为一个电信数据中心维护过数量惊人的服务器(当时 SAN 还很奇特,刀片服务器也越来越流行)——我们很少发现存储处于不同的固件级别,但当“某些服务器的驱动器阵列不稳定”时,它会频繁地解决不稳定问题,以至于“没有明显的其他因素/原因导致阵列中的驱动器进入故障状态”,并且我们注意到固件并不相同全部驱动器,我们将解决固件问题并将驱动器设置回“良好”/重建阵列。

就我个人而言,我有两个驱动器使用的是较旧但“经过认证兼容”的固件,还有三个驱动器使用的是较新的版本。这两个驱动器每隔几个月就会在重负载下掉线(一个接一个),但会恢复/重建/再撑一个月。我找不到任何现有驱动器固件的文件,所以我将所有驱动器都更新到最新版本(兼容性文档中未列出),阵列在被替换之前一直很可靠。

当固件/驱动器全部相同时

如果您足够幸运地排除上述问题,但不幸的是在尝试添加磁盘时仍然出现错误代码 13,我发现了导致该问题的另一个设置。

检查强制模式:

storcli64 /c0 show coercion

如果你有其他东西:

Controller Properties :
=====================

-----------------------
Ctrl_Prop     Value
-----------------------
Coercion Mode Disabled
-----------------------

您可能会发现将其设置为“已禁用”即可。此命令将处理该问题:

storcli64 /c0 set coercion=0

笔记:我不知道这是否会导致数据丢失,因为我正在处理的卷上没有我打算尝试访问的数据。

小提示

如果您认为所有内容都相同,并且想要确认控制器看到的内容,则运行以下命令(zsh)可能会让您发现识别罪魁祸首的差异:

diff --color=always -y =(storcli64 /c0/e34/s1 show all) =(storcli64 /c0/e34/s6 show all)
           # of drive working in array  ----^  # of drive refusing to add ---^

相关内容