没有响应的 mdadm

没有响应的 mdadm

我在 Ubuntu 11 服务器上设置了一个 raid 5 mdadm raid 阵列,其中包含 6 个驱动器和一个热备用驱动器。驱动器上有几个 samba 共享,直到今天,它们都运行良好。

几个小时前,用户开始注意到他们的共享正在缓慢运行或根本没有连接,需要花费几分钟才能列出现有的文件。尝试复制文件大多数情况下会冻结连接并最终断开连接。我能够通过 ssh 顺利浏览挂载目录上的共享,但 samba 肯定有问题。我尝试重新启动 samba,但没有效果。

我运行了 mdadm --detail /dev/md2,结果……什么都没有。它没有输出任何内容,也没有返回我的提示,我不得不按 control-c 来恢复我的提示。/proc/mdstat 也是空的。但出于某种原因,我仍然可以浏览已安装的 raid 阵列,一切看起来都很好。回想起来,我应该尝试通过终端添加和删除文件……

检查进程监视器显示,每个用户的一堆 smbd 进程都处于 D 状态,我无法使用 kill 命令停止它们。我从未见过这样的事情,由于 mdadm 没有给出任何有用的信息,我尝试重新启动服务器。服务器也挂了。我祈祷好运,并告诉数据中心人员进行硬重置。

最后,raid 重建正常,所有驱动器都已启动。但我仍然不确定是什么原因导致 mdadm 如此冻结、断开所有 samba 连接并无响应。

我对这一切还很陌生,所以希望从那些可能以前遇到过类似问题的人那里获得一些帮助来调试问题。你会先去哪里?


编辑:: 根据 ACase 的建议,这里还有一些诊断信息:

/dev/md2(有问题的 RAID 驱动器)上的文件系统是 ext3

这是我的内核信息

2.6.35-22-server #33-Ubuntu SMP Sun Sep 19 20:48:58 UTC 2010 x86_64 GNU/Linux

查看 /var/log/messages 发现,在重新启动之前,当驱动器无法通过 samba 访问时,我遇到了一堆这样的错误(大约每 3 秒 15 个):

kernel: [17343195.826943] mptbase: ioc0: LogInfo(0x31123000): Originator={PL}, Code={Abort}, SubCode(0x3000)

通过谷歌搜索,似乎可能与通过 SAS 控制器使用 SATA 驱动器运行的 SMART 结果有关。服务器是集成了 SAS 6/iR 的 dell t610,因此这很可能就是导致我的问题的原因 - MDADM 尝试在驱动器上运行 Smart,然后冻结 IO 并出现所有错误。听起来对吗?您会运行哪些测试来确认这一点?如果可能的话,我宁愿不要再次关闭整个阵列,因为它正在被使用(显然是过早的)。重启后,该日志消息停止显示,然后 samba 再次运行,所以我很确定它们是相关的。这些消息之间没有显示任何消息 - 有没有办法打开更详细的内核日志记录到 /var/log/messages,这可能证明它们与 SMART 有关?

再次感谢。

答案1

查找/var/log/messages或中的错误/var/log/kernel。听起来内核无法写入和/或读取磁盘。这可以解释为什么它无法正常重启。

  • 您使用的是什么磁盘格式 (ext2、ext3、ext4、xfs 等)?日志式的吗?
  • 你使用的是什么内核?检查一下是否存在任何内核错误。
  • 发生这种情况时,请检查哪些分区(md[0-9])是可读/可写的
  • 使用该hdparm实用程序检查磁盘 I/O 速度和设置是否正确设置

我一般建议您在发生这种情况后在文件系统上运行 fsck。

此外,Linux 还有几个reboot选项可以让您忽略某些磁盘问题并强制系统重新启动,而无需打电话给您的 DC 人员进行硬重置(按严重程度从低到高排序):

   -f     Force halt or reboot, don’t call shutdown(8).

   -n     Don’t sync before reboot or halt. Note that the kernel and stor-
          age drivers may still sync.

这些都是比硬重置更安全的选择。

[编辑#1]:

检查输出以smartctl -a /dev/sd[a-z]查看是否有任何磁盘出现问题。

[编辑#2]:

我建议安排一些停机时间并升级固件。这往往可以修复很多错误。特别是 SAS 控制器和 BIOS。如果他们建议的话,也许还有其他的。

此外,由于这是 t610,它有 DRAC 接口吗?如果出现硬件故障,您通常可以在那里看到与硬件相关的日志。

相关内容