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


103

序幕:

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

大约18个月前,我将服务器从以高级托管为中心的供应商转移到了IV级数据中心的准系统机架推动器中。(实际上是在街对面。)这项工作自己做得更多—诸如网络,存储和监视之类的事情。

作为一项重大举措,为了替代托管公司租赁的直接连接存储,我构建了一个9TB两节点NAS,该NAS基于SuperMicro机箱,3ware RAID卡,Ubuntu 10.04,两打SATA磁盘,DRBD和。这一切都在三篇博客文章中得到了详尽记录:建立和测试新的9TB SATA RAID10 NFSv4 NAS:第一部分第二部分第三部分

我们还建立了一个默认监视系统。最近,我们一直在添加越来越多的数据点,例如SMART值。

没有ServerFault 令人敬畏的 boffins 我无法完成所有这些工作。这是一次有趣的教育经历。我的老板很高兴(我们节省了$ 5的装箱费),我们的客户很高兴(存储成本降低了),我很开心(乐趣,有趣,有趣)

直到昨天

中断与恢复:

午餐后的一段时间,我们开始从我们的应用程序(按需流媒体CMS)中收到有关性能下降的报告。大约在同一时间,我们的仙人掌监测系统发送了大量电子邮件。更具说服力的警报之一是iostat等待图。

在此处输入图片说明

性能变得如此差,以致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]:

因此,我去检查了阵列中磁盘的仙人掌图。在这里,我们看到,是的,磁盘7就像syslog所说的那样滑落了。但是,我们还看到磁盘8的SMART Read Erros正在波动。

在此处输入图片说明

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

  • 磁盘8遇到奇怪的硬件故障,导致间歇性的长时间运行。
  • 磁盘上的这种故障情况以某种方式锁定了整个阵列

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

问题

  • 硬件SATA RAID-10阵列中的单个磁盘如何使整个阵列停止运转?
  • 我是否天真地认为RAI​​D卡应该已经解决了?
  • 如何防止单个行为异常的磁盘影响整个阵列?
  • 我想念什么吗?

11
您提出的另一个精心编写的问题+1。总是很乐于阅读(但不幸的是,我的董事会甚至无法对此有所了解)。
tombull89

1
@daff:购买此设置的持续预算,与HP的同类产品相比,我们节省了66%。我们在此盒子上放置了一年的使用寿命,不需要持续更长的时间。请记住,这是一个储物盒,成本逐年下降。
斯图·汤普森

2
3Ware本身还不错。我在Dell系统上的PERC卡上有过奇怪的行为,该系统应该是不错的服务器硬件。3Ware卡应该带有板载电池等,因此我对该决定不会感到太糟糕。好的,您可能会对SAS与SATA的决定感到震惊,但是您并没有丢失数据,因此从您的问题来看,您似乎已经做好了备份和监视的工作,所以您的表现还不错:-)
Bart Silverstrim

1
@StuThompson:当然,预算和使用消费类硬件会更便宜,并且大多数情况下它会运行良好,尤其是在您的情况下,有一个好的HA概念的情况下。但是,正如您所显示的,在某些情况下,当不良情况发生时,消费类硬件只是无法削减它。我可以向您保证,良好的PERC(Dell)或SmartArray(HP)控制器上的单个故障SAS磁盘不会给您带来任何问题,除了获得更换磁盘的支持电话外。多年来,我们在生产中已经拥有大量失效的SAS磁盘,但从未使它们停机。
daff

5
大多数SATA磁盘不支持TLER(限时错误恢复)。当典型的SATA磁盘遇到物理问题时,它会向磁盘子系统发送“我在进行此操作时保持”状态(通常是这样操作的)。然后,磁盘将继续在发现的每个错误上花费10-30秒(通常),直到达到“我死了”的阈值。支持TLER的SAS磁盘和SATA磁盘由其HBA配置为告诉磁盘子系统“我有问题,我该怎么办?” 因此HBA基本上可以立即决定采取适当的措施。(为简洁起见简化)
克里斯·S

Answers:


48

我讨厌在关键的生产环境中说“不要使用SATA”,但是我经常看到这种情况。SATA驱动器通常不适合您所描述的占空比,尽管您在设置中做了专门为24x7全天候运行而设计的规格驱动器。我的经验是,即使您使用RAID 1 + 0,SATA驱动器也会以无法预测的方式发生故障,甚至常常影响整个存储阵列,即使您使用RAID 1 + 0。有时,驱动器会以使整个总线停顿的方式发生故障。要注意的一件事是您是否在设置中使用SAS扩展器。这可能会影响其余磁盘如何受到驱动器故障的影响。

但是,使用中线/近线(7200 RPM)SAS驱动器而不是SATA 可能更有意义。与SATA相比,价格略有溢价,但驱动器的运行/故障可预测性更高。SAS接口/协议中的错误纠正和报告功能比SATA集更强大。因此,即使在机械原理相同的驱动器中,SAS协议的不同也可以避免您在驱动器故障期间遭受的痛苦。


当我写这个问题时,我只是知道我会选择SAS。:/ IOPS和吞吐量都在我的设置范围内。但是我没有完全理解一些更细微的差异。我们在此盒子上放置了3年的使用寿命。下次一定会使用SAS。
斯图·汤普森

1
是的,下次需要考虑。我提到的近线SAS驱动器的性能不一定比SATA好,但是诸如错误恢复和驱动器故障之类的地方,SAS更易于管理。我有一个带有6个控制器的Sun Fire x4540 48驱动器SATA存储系统,单个驱动器故障往往会锁定服务器。刻苦的教训。
ewwhite 2011年

10
我的一个好伙伴是企业存储领域。他读完所有这些内容后说:“这家伙是对的。发生的事情是SATA设计为表示完全故障,并且间歇性故障将重新查询总线而没有执行故障转移。通常这是从未见过的,因为大多数SATA配置都是一个驱动器“
Stu Thompson

@StuThompson从那以后,您是否使用近线SAS构建了一个新包装?我很想阅读您的经历。您的问题已经对我有所帮助,在不久的将来我可能会建立一个类似的盒子。
chrishiestand

1
@chrishiestand不,我没有。我于1月13日离开公司;如果我留下来的话,我们会用近线建造替换盒。las,NAS的存在与我自己的联系太紧密了,数据被转移到了服务提供商的SAN中。
Stu Thompson

17

单个磁盘如何关闭阵列?答案是不应该的,但这取决于造成中断的原因。如果磁盘以某种正常方式消失,则不应将其拆除。但是,它有可能以控制器无法处理的“边缘情况”失败。

您是否天真地认为这不应该发生?不,我不这么认为。像这样的硬件RAID卡应该已经解决了大多数问题。

怎么预防呢?您无法预料到这种奇怪的情况。这是成为系统管理员的一部分...但是您可以制定恢复程序,以防止其影响您的业务。立即解决此问题的唯一方法是尝试使用另一张硬件卡(可能不太想要做)或将驱动器更改为SAS驱动器而不是SATA,以查看SAS是否更可靠。您也可以与RAID卡供应商联系,告诉他们发生了什么,然后看看他们怎么说。毕竟,他们是一家应该专门了解旋转驱动电子设备来龙去脉的公司。他们可能对驱动器的工作方式以及可靠性有更多的技术建议……如果您可以找到合适的人与之交谈。

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


1
是的...我们已经制定了新的替换政策,例如“如果读取错误发生波动,则取消它”。现在我考虑了一下,这些驱动器的故障率很高。18个月内有22个中的4个。嗯....
斯图汤普森

2
18个月内有4个驱动器?那是相当高的速度...虽然可能是驱动器不在规格范围内,但也可能存在冷却/气流问题。或控制器有些奇怪。只是有些想法...请留意原木。如果您能够与3Ware中的任何人联系并完成卡片上的实际工作而不仅仅是脚本,那么您可能希望由他们来运行它,并查看他们的意见。
巴特·

1
根据看到错误的位置,您还可以检查电缆是否也没有异常或边缘现象。如果错误似乎集中在同一端口上,则故障的发生可能并非偶然。
巴特·西尔弗斯

4
我刚刚看到,该烧录驱动器的SMART值在〜31°C的温度下运行,比所有其他驱动器高4°C。 让你走的东西……
Stu Thompson

2
@DanNeely:在14个驱动器(11个数据,3个系统)中,它是唯一一个温度较高的驱动器。我相当确定气流很好,但是明天会明确检查。
斯图·汤普森

10

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

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

如果磁盘以明显的方式发生故障,则任何RAID控制器软件都应该非常擅长检测磁盘响应不足,将其从池中删除并发出任何通知。但是,我对这里发生的情况的猜测是磁盘遇到了异常故障,由于某种原因,该异常不会触发控制器端的故障。因此,当控制器执行写刷新或从受影响的磁盘读取数据时,要花很长时间才能恢复过来,从而挂起了整个IO操作并因此挂起了阵列。不管出于什么原因,这还不足以使RAID控制器“出现故障的磁盘”,这可能是因为数据最终最终返回了。

我的建议是立即更换发生故障的磁盘。在那之后,我将看一下您的RAID卡的配置(它是3ware,我认为它们还不错),并找出它认为故障磁盘的含义。

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


一旦连接好点,我首先想到的是从阵列中删除磁盘。充满了热备用。那是昨晚。今天,我拉出磁盘并进行RMA处理。令人讨厌的驱动器:geekomatic.ch/images/wd-re4-flux-read-error.jpg
Stu Thompson

我认为每个关键任务系统都需要有一块进行数据清理的卡,这是原因之一。我已经看过太多次了,尤其是在SATA阵列上,但是,即使没有触发控制器,高端SAS磁盘也会发生故障。
詹斯·埃里希

7

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

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

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

http://en.wikipedia.org/wiki/Error_recovery_control#概述

另请参见下面的链接:

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

另请参阅:Western Digital TLER文档,深入解释错误恢复过程。WD Caviar RAID Edition串行ATA硬盘驱动器中的错误恢复辐射防护:

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


6

只是一个猜测:硬盘配置为重试读取错误,而不是报告错误。尽管这在桌面环境中是理想的行为,但在RAID中却适得其反(在RAID中,控制器应重写无法从其他磁盘读取的任何扇区,以便驱动器可以对其进行重新映射)。


很有可能。如果是这样,这绝对不是一件很酷的事情,因为它们被指定为“ RAID版本”单元。:|
斯图·汤普森

绝对不酷,因为该设置正是“ RAID版本”的定义:)
Simon Richter

6

我在黑暗中的镜头:

  • 驱动器7发生故障。它有一些无法使用的故障窗口。

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

  • RAID10通常是“几个RAID1对中的一个RAID0”,驱动器7和8属于同一对吗?

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

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

您很幸运,驱动器8似乎还没死,因此您应该能够修复而不会造成数据丢失。

我将从更换两个驱动器开始,并且不要忘记检查电缆。松动的连接可能会导致这种情况,如果布线不牢固,则很有可能在相邻驱动器中发生。同样,某些多端口卡具有多个两个端口的连接器,如果驱动器7和驱动器8位于同一端口上,则可能是造成麻烦的原因。


3
驱动器8是导致服务中断的原因,我已经将其拉出。驱动器7,虽然已经失去了一些性能,但处于这种状态已经有一段时间了,并且总体上仍然表现良好。不,它们的驱动器成对出现。 (这是我考虑过的问题,还有我的Cacti / SNMP查询可能未对齐的问题。) 该卡有16个端口,4条电缆,每条电缆有4个端口进入后面板。如果问题是卡,电缆或背板,则在插入驱动器8的替换件后,我很快就会知道。
斯图·汤普森

3

SATA插入器卡是另一种解决方案。

我最近经历了同样的命运,并找到了这个线索。总的来说,因为SATA缺乏功能,所以SAS 协议比SATA更适合RAID。这就是为什么相同的物理驱动器都装有SAS控制器,然后以Nearline SAS的形式出售的原因。

进一步搜索,我发现:

http://www.lsi.com/products/storagecomponents/Pages/LSISS9252.aspx

我正在研究使用其中一批存储来升级我的存储。目前,3 TB SATA与SAS之间的价格差为400%(原始价格,相同品牌,规格和商店,德国)。我显然无法确定这种策略是否奏效,但是值得一试。

评论非常欢迎:-)


1
很好的理论。在收集了一些信息之后,只有存储托盘制造商才能集成这些板,添加它们并不一定意味着更好的错误处理。
korkman'3

2

我见过SATA磁盘上的电子设备坏了,这确实将Areca 12的固件初始化牢牢地固定住了,无法访问BIOS,更不用说从任何介质启动计算机了,直到通过从二进制中拉出磁盘找到有问题的硬盘驱动器为止。搜索时尚。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.