硬件 SATA RAID-10 阵列中的单个磁盘如何使整个阵列停止运行?

Stu*_*son 107 performance hard-drive sata sas hardware-raid

序幕:

我是一个代码猴子,越来越多地为我的小公司承担系统管理员的职责。我的代码就是我们的产品,而且我们越来越多地提供与 SaaS 相同的应用程序。

大约 18 个月前,我将我们的服务器从一家以优质托管为中心的供应商转移到了 IV 级数据中心的准系统机架推进器。(字面意思是在街对面。)这个人自己做的事情更多——比如网络、存储和监控。

作为重大举措的一部分,为了取代我们从托管公司租用的直连存储,我构建了一个基于 SuperMicro 机箱、3ware RAID 卡、Ubuntu 10.04、两打 SATA 磁盘、DRBD 和 . 三篇博文详细记录了这一切:构建和测试新的 9TB SATA RAID10 NFSv4 NAS:第一部分第二部分第三部分

我们还设置了一个 Cacit 监控系统。最近,我们添加了越来越多的数据点,例如 SMART 值。

我不能这样做这一切,而不真棒 挤入 ServerFault。这是一次有趣且有教育意义的经历。我的老板很高兴(我们节省了大量的美元),我们的客户很高兴(存储成本下降),我很高兴(有趣,有趣,有趣)

直到昨天。

中断和恢复:

午饭后一段时间,我们开始从我们的应用程序(一个按需流媒体 CMS)收到性能缓慢的报告。大约在同一时间,我们的 Cacti 监控系统发送了大量电子邮件。一个更有说服力的警报是 iostat await 的图表。

在此处输入图片说明

性能变得如此下降以至于 Pingdom 开始发送“服务器关闭”通知。整体负载适中,没有流量高峰。

在登录应用服务器、NAS 的 NFS 客户端后,我确认几乎所有东西都在经历高度间歇性和超长的 IO 等待时间。一旦我跳到主要 NAS 节点本身,在尝试导航问题阵列的文件系统时,同样的延迟很明显。

是时候进行故障转移了,一切顺利。在 20 分钟内,一切都被确认备份并完美运行。

验尸:

在任何和所有系统故障后,我都会进行事后分析以确定故障原因。我做的第一件事是 ssh 回到盒子里并开始查看日志。它完全离线。是时候去数据中心旅行了。硬件复位,备份并运行。

/var/syslog我发现这个可怕的条目:

Nov 15 06:49:44 umbilo smartd[2827]: Device: /dev/twa0 [3ware_disk_00], 6 Currently unreadable (pending) sectors
Nov 15 06:49:44 umbilo smartd[2827]: Device: /dev/twa0 [3ware_disk_07], SMART Prefailure Attribute: 1 Raw_Read_Error_Rate changed from 171 to 170
Nov 15 06:49:45 umbilo smartd[2827]: Device: /dev/twa0 [3ware_disk_10], 16 Currently unreadable (pending) sectors
Nov 15 06:49:45 umbilo smartd[2827]: Device: /dev/twa0 [3ware_disk_10], 4 Offline uncorrectable sectors
Nov 15 06:49:45 umbilo smartd[2827]: Num  Test_Description    Status                  Remaining  LifeTime(hours)  LBA_of_first_error
Nov 15 06:49:45 umbilo smartd[2827]: # 1  Short offline       Completed: read failure       90%      6576         3421766910
Nov 15 06:49:45 umbilo smartd[2827]: # 2  Short offline       Completed: read failure       90%      6087         3421766910
Nov 15 06:49:45 umbilo smartd[2827]: # 3  Short offline       Completed: read failure       10%      5901         656821791
Nov 15 06:49:45 umbilo smartd[2827]: # 4  Short offline       Completed: read failure       90%      5818         651637856
Nov 15 06:49:45 umbilo smartd[2827]:
Run Code Online (Sandbox Code Playgroud)

所以我去检查阵列中磁盘的仙人掌图。在这里我们看到,是的,磁盘 7 就像 syslog 所说的那样正在消失。但是我们也看到磁盘 8 的 SMART Read Erros 是波动的。

在此处输入图片说明

系统日志中没有关于磁盘 8 的消息。更有趣的是,磁盘 8 的波动值与高 IO 等待时间直接相关! 我的解释是:

  • 磁盘 8 遇到一个奇怪的硬件故障,导致间歇性运行时间过长。
  • 不知何故,磁盘上的这种故障条件锁定了整个阵列

也许有更准确或更正确的描述,但最终结果是一个磁盘影响了整个阵列的性能。

问题

  • 硬件 SATA RAID-10 阵列中的单个磁盘如何使整个阵列停止运行?
  • 我是否天真地认为 RAID 卡应该处理这个问题?
  • 如何防止单个行为异常的磁盘影响整个阵列?
  • 我错过了什么吗?

eww*_*ite 50

我讨厌在关键的生产环境中说“不要使用 SATA”,但我经常看到这种情况。SATA 驱动器通常并不适用于您描述的占空比,尽管您在设置中使用了专门针对 24x7 操作额定值的驱动器。我的经验是 SATA 驱动器可能会以不可预测的方式发生故障,通常会影响整个存储阵列,即使在使用 RAID 1+0 时也是如此,正如您所做的那样。有时驱动器会以一种可能导致整个总线停顿的方式发生故障。需要注意的一件事是您是否在设置中使用 SAS 扩展器。这会对剩余磁盘如何受到驱动器故障的影响产生影响。

但与 SATA 相比,使用中线/近线 (7200 RPM) SAS 驱动器可能更有意义。与 SATA 相比,价格略高,但驱动器的运行/故障更可预测。SAS 接口/协议中的纠错和报告比 SATA 集更强大。因此,即使驱动器的机制相同,SAS 协议的差异也可能避免了您在驱动器故障期间所经历的痛苦。

  • 我的一个好朋友在企业存储领域。他阅读了所有这些并说 *“这个人是对的。发生的情况是 SATA 旨在表示完全故障,而间歇性故障将重新查询总线,而无需执行故障转移。通常这是从未见过的,因为大多数 SATA 配置都是一个驾驶”* (10认同)

Bar*_*rim 16

单个磁盘如何关闭阵列?答案是不应该,但这在某种程度上取决于导致中断的原因。如果磁盘以某种行为方式消亡,则不应将其取下。但是它可能会以控制器无法处理的“边缘情况”方式失败。

你天真地认为这不应该发生吗?不,我不这么认为。像这样的硬件 RAID 卡应该可以处理大多数问题。

如何预防?你不能预料到像这样的奇怪的边缘情况。这是成为系统管理员的一部分……但是您可以制定恢复程序以防止它影响您的业务。现在尝试解决此问题的唯一方法是尝试另一个硬件卡(可能不是您想要做的)或将驱动器更改为 SAS 驱动器而不是 SATA,以查看 SAS 是否更强大。你也可以联系你的RAID卡供应商,告诉他们发生了什么,看看他们怎么说;毕竟,他们是一家应该专门了解不稳定驱动电子产品的来龙去脉的公司。他们可能对驱动器的工作方式和可靠性有更多的技术建议……如果你能找到合适的人与之交谈。

你错过了什么吗?如果要验证驱动器是否存在边缘情况故障,请将其从阵列中拉出。阵列将降级,但您不应该有更多奇怪的减速和错误(除了降级的阵列状态)。你说现在它似乎工作正常,但如果它有磁盘读取错误,你应该尽可能更换驱动器。大容量驱动器有时会出现 URE 错误(不运行 RAID 5 的最佳理由,旁注),直到另一个驱动器发生故障时才会出现。如果您遇到来自该驱动器的边缘情况行为,您不希望损坏的数据迁移到阵列中的其他驱动器。

  • 我刚刚看到这个烧毁驱动器的 SMART 值在 ~31°C 下运行,或者比所有其他驱动器高 4°C。*让你去的东西嗯....* (4认同)
  • 18 个月内 4 个驱动器?这是一个相当大的速度......虽然可能是驱动器不符合规格,但也可能存在冷却/气流问题。或者控制器可能有些奇怪。只是一些想法...留意日志。如果您能够联系 3Ware 中的任何人在卡片上进行实际工作,而不仅仅是脚本,您可能希望由他们运行它并看看他们怎么说。 (2认同)
  • @DanNeely:在 14 个驱动器(11 个数据,3 个系统)中,它是唯一一个温度较高的驱动器。我相当确定气流很好,但明天会明确检查。 (2认同)

gro*_*wse 10

我不是专家,但根据我在 RAID 控制器和存储阵列方面的经验,我将在黑暗中大胆尝试。

磁盘以多种不同的方式出现故障。不幸的是,磁盘可能会发生故障或出现故障,其性能会受到严重影响,但 RAID 控制器并未将其视为故障。

如果磁盘以明显的方式出现故障,任何 RAID 控制器软件都应该能够很好地检测磁盘缺乏响​​应,将其从池中删除并发出任何通知。但是,我对这里发生的事情的猜测是磁盘遇到了异常故障,由于某种原因,它不会在控制器端触发故障。因此,当控制器执行写入刷新或从受影响的磁盘读取时,需要很长时间才能返回,从而导致整个 IO 操作以及阵列挂起。无论出于何种原因,这都不足以让 RAID 控制器“啊,磁盘故障”,可能是因为数据最终会返回。

我的建议是立即更换故障磁盘。之后,我会查看您的 RAID 卡的配置(它是 3ware,我认为它们非常好)并找出它认为故障磁盘是什么。

PS 将 SMART 导入仙人掌的好主意。


Sim*_*ter 6

只是猜测:硬盘配置为重试读取错误而不是报告错误。虽然这是桌面设置中的理想行为,但它在 RAID 中适得其反(控制器应该重写任何从其他磁盘读取失败的扇区,以便驱动器可以重新映射它)。


Jav*_*ier 6

我在黑暗中的镜头:

  • 驱动器 7 出现故障。它有一些不可用的故障窗口。

  • 驱动器 8 也有一些“较轻”的错误;通过重试更正。

  • RAID10 通常是“多个 RAID1 对的 RAID0”,驱动器 7 和驱动器 8 是同一对的成员吗?

如果是这样,那么您似乎遇到了同一对上的两个磁盘故障的“不应该发生”的情况。几乎唯一可以杀死RAID10的东西。不幸的是,如果您的所有驱动器都来自同一个运输批次,则可能会发生这种情况,因此它们同时死机的可能性略高。

我猜想在驱动器 7 发生故障期间,控制器将所有读取重定向到驱动器 8,因此任何错误重试都会导致大延迟,从而导致大量冻结任务,暂时降低性能。

你很幸运,驱动器 8 似乎还没有死,所以你应该能够在不丢失数据的情况下进行修复。

我会先更换两个驱动器,不要忘记检查布线。连接松动可能会导致这种情况,如果布线不牢固,则更有可能发生在相邻的驱动器中。此外,一些多端口卡有多个二端口连接器,如果驱动器 7 和驱动器 8 在同一个驱动器上,它可能是您麻烦的根源。

  • 驱动器 8 是导致服务中断的原因,我已经拉了它。驱动器 7,虽然它已经失去了一些 sektor,但在这种状态下已经有一段时间了,并且总体上仍然表现良好。不,它们的驱动器是不同的对。*(这是我考虑过的事情,以及我的 Cacti/SNMP 查询可能未对齐。)* 该卡有 16 个端口,4 根电缆,每根电缆有 4 个端口连接到后面板。如果问题是卡、电缆或背板,当我插入驱动器 8 的替换件时,我很快就会知道。 (3认同)

小智 6

您需要企业级存储设备的功能。具体来说,WD RE 4 企业驱动器需要两个功能来防止 RAID 阵列中的这种行为。下面列出的第一种技术可防止旋转谐波振动对硬盘驱动器机械组件造成不必要的磨损。第二种技术是导致您出现问题的原因,SATA 协议没有此功能。要获得这些功能,您需要 SAS,如果您坚持使用 SATA 驱动器,您可以购买 SAS 转 SATA 转接卡,例如 LSISS9252。

增强的 RAFF 技术 精密的电子设备监控驱动器并实时校正线性和旋转振动。结果是与上一代驱动器相比,在高振动环境中的性能显着提高。

特定于 RAID 的限时错误恢复 (TLER) 防止因台式机驱动器常见的扩展硬盘驱动器错误恢复过程而导致的驱动器故障。

http://en.wikipedia.org/wiki/Error_recovery_control#Overview

另请参阅以下链接:

http://en.wikipedia.org/wiki/Error_recovery_control#Raid_Controllers

另请参阅:Western Digital TLER 文档,详细解释了错误恢复过程。WD Caviar RAID 版串行 ATA 硬盘中的错误恢复故障预防:

http://www.3dfxzone.it/public/files/2579-001098.pdf


归档时间:

查看次数:

21390 次

最近记录:

12 年,6 月 前