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


序幕:

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

大约18个月前,我将服务器从高级托管中心供应商转移到IV级数据中心的准系统机架式推送器。 (就在马路对面。)这种做法让我们自己做得更多 - 比如网络,存储和监控。

作为重大举措,为了取代我们租用的托管公司直接附加存储,我建立了一个9TB双节点NAS,基于SuperMicro机箱,3ware RAID卡,Ubuntu 10.04,二十几个SATA磁盘,DRBD和。这三篇博文都精心记录在案: 构建和测试新的9TB SATA RAID10 NFSv4 NAS: 第一部分第二部分 和 第三部分

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

没有这个,我不可能做到这一切 真棒  挤入    ServerFault。这是一次有趣的教育体验。我的老板很高兴 (我们节省了装载的$$$),我们的客户很高兴 (存储成本下降), 我很高兴 (有趣,有趣,有趣)

直到昨天。

停电和恢复:

午餐后的一段时间,我们开始收到应用程序性能低下的报告,这是一个按需流媒体CMS。大约在同一时间,我们的Cacti监控系统发送了大量电子邮件。其中一个更有说服力的警报是iostat等待的图表。

enter image description here

性能变得如此恶化,以至于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]:

所以我去检查数组中磁盘的Cacti图。在这里,我们看到,是的,磁盘7正在滑落,就像系统日志所说的那样。但我们也看到磁盘8的SMART Read Erros正在波动。

enter image description here

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

  • 磁盘8正在经历奇怪的硬件故障,导致间歇性的长操作时间。
  • 不知何故,磁盘上的这种故障情况是锁定整个阵列

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

问题

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

99
2017-11-16 11:14




另一个写得很好的问题,+1。总是很高兴阅读(但不幸的是在我的董事会之上甚至有一个想法)。 - tombull89
@daff:在此设置上购买预算,我们从惠普的可比数据中节省了66%。我们在这个盒子上放了一年的寿命,它不需要更长的时间。请记住,这是一个存储盒,成本同比下降。 - Stu Thompson
3Ware本身也不错。我在戴尔系统上的PERC卡上表现得很糟糕,这应该是不错的服务器硬件。 3Ware卡应该有板载电池等,所以我不会觉得这个决定太糟糕了。好吧,你可能会因为SAS与SATA的决定而受到抨击,但是你并没有丢失数据,而且你的问题听起来就像你有备份和监控,所以你做得很好:-) - Bart Silverstrim
@StuThompson:当然,预算和使用消费者硬件更便宜,而且大多数情况下它会表现得很好,特别是在你的情况下,它背后有一个很好的HA概念。但正如您所示,有些情况下,消费者硬件在发生不良事件时不会削减它。我几乎可以保证,好的PERC(戴尔)或SmartArray(HP)控制器上的单个故障SAS磁盘不会引起任何问题,除了支持调用以获得替换磁盘。多年来,我们在生产过程中已经拥有大量死亡的SAS磁盘,但从来没有让它们关闭服务器。 - daff
大多数SATA磁盘不支持TLER(时间限制错误恢复)。当一个典型的SATA磁盘遇到物理问题时,它会向磁盘子系统发送一个“当我处理此事件时保持”(通常按照它的说法)。然后,磁盘将在发现的每个错误上花费10-30秒(通常),直到达到“我已死”阈值。支持TLER的SAS磁盘和SATA磁盘由其HBA配置,告诉磁盘子系统“我遇到了问题,我该怎么办?”所以HBA可以基本上立即决定适当的行动。 (为简洁起见,简化) - Chris S


答案:


我不想在关键的生产环境中说“不要使用SATA”,但我经常看到这种情况。 SATA驱动器通常不适用于您描述的工作周期,尽管您做了规范 特别适用于24x7运行的驱动器 在你的设置中。我的经验是SATA驱动器可能以不可预测的方式发生故障,通常会影响整个存储阵列,即使在使用RAID 1 + 0时也是如此。有时驱动器会以可能使整个总线停止的方式发生故障。需要注意的一点是,您是否在设置中使用SAS扩展器。这可能会影响驱动器故障对剩余磁盘的影响。

但它可能更合理 中线/近线(7200 RPM)SAS驱动器 与SATA相比。与SATA相比价格略高,但驱动器的运行/故障可预测性更高。 SAS接口/协议中的纠错和报告功能比SATA设备更强大。所以即使有驱动器 其力学是一样的,SAS协议的差异可能会阻止您在驱动器故障期间遇到的痛苦。


47
2017-11-16 11:48



在我写这个问题的时候我就是这样 知道 我选择的SAS将会出现。 :/ IOPS和吞吐量完全在我的设置能力范围内。但我没有完全理解一些更微妙的差异。我们将3年的寿命放在这个盒子上。下次肯定会使用SAS。 - Stu Thompson
是的,这是下次要考虑的事情。我提到的近线SAS驱动器不一定比SATA更好,但它更像是SAS更易于管理的错误恢复和驱动器故障。我有一个带有6个控制器的Sun Fire x4540 48驱动器SATA存储系统,个别驱动器故障往往会锁定服务器。艰苦的教训。 - ewwhite
我的好朋友是在企业存储领域。他读了这一切并说 “这个家伙是对的。发生的事情是SATA被设计为表示完全失败,而间歇性的将重新询问总线而不会实现故障转移。通常这是从未见过的,因为大多数SATA配置是一个驱动器” - Stu Thompson
@StuThompson你有没有用近线SAS建造一个新盒子?我很想读你的经历。你的问题已经给了我很多帮助,我很可能会在不久的将来建立一个类似的盒子。 - chrishiestand
@chrishiestand不,我没有。我于1月13日离开公司;如果我留下来,我们会用近线建造替换箱。唉,NAS的存在与我自己的关系过于紧密,数据被转移到服务提供商的SAN。 - Stu Thompson


单个磁盘如何降低阵列?答案是它不应该,但它取决于导致停机的原因。如果磁盘以某种行为方式死亡,它就不应该将其关闭。但它有可能以控制器无法处理的“边缘情况”方式失败。

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

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

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


17
2017-11-16 11:58



是的......我们已经制定了新的替代政策 “如果读取错误波动,那么就把它拉出来”。现在我考虑一下,我们在这些驱动器上的故障率相当高。在18个月中的22个中的4个。嗯.... - Stu Thompson
18个月内有4个驱动器?这是一个相当高的速度......虽然它可能是不符合规格的驱动器,但是可能存在冷却/气流问题。或者控制器可能有些奇怪。只是一些想法......密切注意日志。如果您能够通过卡上的实际工作而不仅仅是脚本联系3Ware中的任何人,您可能希望由他们运行它并查看他们所说的内容。 - Bart Silverstrim
根据您看到错误的位置,您还可以检查电缆是否存在不稳定或边缘的情况。如果错误似乎集中在同一个端口上,那么您可能会遇到一系列巧合。 - Bart Silverstrim
我刚刚看到这个烧伤驱动器的SMART值在~31°C运行,或者比所有其他驱动器高4°C。 让你去的事情嗯.... - Stu Thompson
@DanNeely:在14个驱动器中(11个数据,3个系统),它是唯一具有更高温度的驱动器。我相当肯定气流很好,但明天会明确检查。 - Stu Thompson


我不是专家,但根据我对RAID控制器和存储阵列的经验,我将在黑暗中疯狂拍摄。

磁盘以许多不同的方式失败。遗憾的是,磁盘可能会因其性能受到严重影响而失败或出现故障,但RAID控制器并未将其视为故障。

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

我的建议是立即更换故障磁盘。在那之后,我会看一下你的RAID卡的配置(它是3ware,我认为它们非常好),并找出它认为是故障磁盘的原因。

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


10
2017-11-16 11:57



一旦我连接了点,我首先想到的是从阵列中移除磁盘;填写的热备件。那是昨晚。今天我拿起了磁盘和RMA。违规驱动器: geekomatic.ch/images/wd-re4-flux-read-error.jpg - Stu Thompson
我认为每个关键任务系统都需要有一张能够进行数据清理的卡的原因之一。我已经看过这么多次了,特别是在SATA阵列上,然而,已知更高端的SAS磁盘在没有触发控制器的情况下会失败。 - Jens Ehrich


您需要企业级存储设备的功能。具体而言,WD RE 4企业级硬盘具有防止RAID阵列中出现此行为所需的两项功能。下面列出的第一项技术可防止旋转谐波振动对硬盘驱动器机械组件造成不必要的磨损。第二种技术是什么引起了你的问题,SATA协议没有这个功能。要获得这些功能,您需要SAS,如果您坚持使用SATA驱动器,则可以购买SAS到SATA Interposer卡,例如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 Document深入解释错误恢复过程。 WD Caviar RAID Edition串行ATA硬盘驱动器中的错误恢复防辐射:

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


7
2018-02-25 19:34





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


6
2017-11-16 13:30



非常可能。如果是这样,这绝对不是很酷,因为它们被称为“RAID版”单元。 :| - Stu Thompson
绝对不酷,因为该设置是“RAID版”的定义:) - Simon Richter


我在黑暗中的镜头:

  • 驱动器7失败了。它有一些失败的窗口,它不可用。

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

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

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

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

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

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


6
2017-11-16 14:11



驱动器8是导致服务中断的原因,我已经把它拉了下来。驱动器7,虽然已经失去了一些sektors,因为已经处于这种状态一段时间,并且仍然表现良好。不,他们的驱动器是不同的对。 (这是我考虑的事情,以及我的Cacti / SNMP查询可能未对齐。)  该卡有16个端口,4根电缆,每个电缆4个端口进入后窗格。如果问题是卡,电缆或背板,我很快就会知道插入驱动器8的更换时间。 - Stu Thompson


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

我最近经历了同样的命运并找到了这个主题。整体男高音是SAS 协议 因为SATA缺乏功能,所以比SATA更适合RAID。这就是为什么相同的物理驱动器配备SAS控制器,然后作为Nearline SAS出售。

进一步搜索,我发现:

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

我正在研究用一批这些来升级我的一个存储。目前,3 TB SATA与SAS之间的价格差异为400%(香草价格,同一品牌,规格和商店,德国)。我显然无法判断这种策略是否运作良好,但值得一试。

评论非常欢迎:-)


3
2018-02-22 19:12



好理论。收集一些信息后,只有存储托盘制造商可以集成这些板并添加它们并不一定意味着更好的错误处理。 - korkman