意外拔除 SAS 电缆

Zet*_*eta 1 raid sas megaraid jbod

在故障排除期间,我们不小心从活动的 AVAGO MegaRAID 控制器上拔下了 SAS 电缆。当我们重新连接SAS电缆后,RAID6磁盘阵列中的所有磁盘都报告为Frn-Bad并且虚拟驱动器消失了。

我们现在可以将所有驱动器更改为“未配置的良好”,然后创建一个新的虚拟驱动器,但 JBOD 上仍然有一些(非必要)数据。是否可以在不丢失数据的情况下重新创建磁盘配置,或者数据丢失后无法恢复?

Zet*_*eta 5

TL;DR:如果您不小心从服务器上拔下了 SAS 电缆,请安装storcli并运行

storecli /call show 
Run Code Online (Sandbox Code Playgroud)

记下正确的控制器和机柜以及 nrun

#!/bin/bash
# Use your values from above
CONTROLLER=
ENCLOSURE=

storcli /c$CONTROLLER /e$ENCLOSURE /sall set good
storcli /c$CONTROLLER /fall show

echo -n "Import all foreign drives? [y/n]" 
read yno

case $yno in
    [yY] | [yY][Ee][Ss] )
        storcli /c$CONTROLLER /fall import
        ;;
    *) echo "Skipping import"
        ;;
esac
Run Code Online (Sandbox Code Playgroud)

当您断开 SAS 电缆时,控制器注意到所有驱动器都已消失,因此可能处于不良状态。这就是为什么你会得到Bad. 此外,这些驱动器可能是新的,尚未包含在您的 RAID 设置中,这就是您得到的Frn结果Frn-Bad

为了解决此问题,您首先需要将所有驱动器标记为UGood(未知,但良好)。最简单的方法就是使用storcli从LSI下载)。首先查找所有驱动器

storcli /call show
Run Code Online (Sandbox Code Playgroud)

它将/call查找所有控制器,但您也可以使用/cX特定的控制器。所有Frn-Bad驱动器都将驻留在一个外壳中,例如

8:1  | drive information .... | Frn-Bad | ...
8:13 | drive information .... | Frn-Bad | ...
8:14 | drive information .... | Frn-Bad | ...
8:23 | drive information .... | Frn-Bad | ...
Run Code Online (Sandbox Code Playgroud)

冒号前面的常见数字是外壳。再次致电storcli并使用附件编号来验证您手头是否确实拥有正确的驱动器:

storcli /call /e8 /sall show
Run Code Online (Sandbox Code Playgroud)

现在将所有这些驱动器设置为良好

storcli /call /e8 /sall set good
Run Code Online (Sandbox Code Playgroud)

这会将驱动器标记为未知且良好。MEGARaid 控制器将配置保存在硬盘上。你可以用以下方式显示它

storcli /c0 /fall show
Run Code Online (Sandbox Code Playgroud)

然后导入它

storcli /c0 /fall import
Run Code Online (Sandbox Code Playgroud)

导入驱动器应该需要不到一分钟的时间。