已经稳定运行了很长一段时间的黑群晖 DSM 6.2.3,最近在一起停电事故之后开始了诡异的丢盘现象。
首先先介绍一下黑群晖所在服务器的情况:
- 虚拟机:ESXi 6.7u3
- 存储卡:LSI 9207-8i + IBM SAS Expander,通过 PCIe 直通交给虚拟机使用
- 硬盘:8 x SAS + 2 x SATA,均为 2TB
- 存储池设置:SHR2(两块盘冗余),9 块盘组成阵列,1 块盘做热备份
问题一开始很简单,丢了两块 SAS 硬盘。停电丢硬盘很正常,既然已经有 1 块盘做热备份,再加一块 2TB 硬盘就完全修复了存储池。
没过几天,又丢了两块 SAS 硬盘。还好使用了 SHR2,没有造成数据丢失。但是家里没有多余的硬盘了,只能赶紧下单,硬着头皮等硬盘到货。
在几次重启之后,居然丢掉的 4 块硬盘回来了!只是带有错误“无法访问系统分区”。然后再重启,又丢失了。这 4 块硬盘就进入了薛定谔状态。
为了排解故障,我还特意把整个虚拟机迁移到另一台服务器上,将 IBM SAS Expander 换成了 Supermicro BPN-SAS-836EL1,结果也一样,4 块薛定谔硬盘随机消失。而且我还注意到了 ESXi 在启动的时候会在加载 lsi_msgpt2/mpt2sas 模块时卡很长时间。后来证明这是 Supermicro BPN-SAS-836EL1 的问题(在混用 SAS 和 SATA 硬盘时会出现卡死),再换到 BPN-SAS-836TQ,虽然走线麻烦,但是这个背板提供从 HBA 到硬盘的直接连接,少了一个扩展卡就少了一个可能出现故障的地方。然后,为了能挂多于 8 块硬盘,我还多加了一块 LSI 9211-8i,将 3 块 SATA 硬盘连到上面,也设置好 PCIe 直通。
重启之后,故障依旧。居然将 SAS 硬盘和 SATA 硬盘区别对待之后,还是一样的故障,证明不是扩展卡问题,HBA 出问题的可能性也不大。最有可能出问题的就是系统了。
这时,我想起来 XPEnology 论坛上,IG-88 大神曾经在他的自制驱动贴子里面提到过,DS918+ 可能缺少组件,导致 mpt2sas 无法正常工作,不管是官方的驱动,还是大神自编译的驱动,都是残血状态,有各种各样的问题(比如开了硬盘休眠就会掉盘之类的)。
于是灵机一动,把 PCIe 直通给撤了,改用 RDM 硬盘直通,并且挂载到虚拟 SATA 控制器上。
开机,4 块硬盘稳稳地归队了,并且再也没有掉过队。至此,问题完美的解决了……一半。
而另外一半问题,就是如何找出 DSM 里面列出的硬盘,到底跟物理硬盘是怎么样的对应关系(换句话说,就是如何找出是哪 4 块硬盘进入了薛定谔状态)
补充说明一下,为了证实确实是 DSM 系统中 mpt2sas 驱动的问题,我尝试将 RDM 硬盘挂载到虚拟 SCSI 控制器上,模式选成 LSI SAS,那 4 块硬盘又进入了薛定谔状态。
目前还不确定到底是 DSM 在驱动 HBA 时就有问题,还是只是在挂载 SAS 硬盘的时候出的问题。如果是前者的话,就算挂载 SATA 硬盘,也会有隐患。可能,最终最完美的解决办法,就是将 DS918+ 换成 DS3617xs。