序幕:
我是一个代码猴子,越来越多地为我的小公司承担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阵列中的单个磁盘如何使整个阵列停止运转?
- 我是否天真地认为RAID卡应该已经解决了?
- 如何防止单个行为异常的磁盘影响整个阵列?
- 我想念什么吗?