背景 链接到标题

因为公司提供的产品不单单是软件形式提供,还对应的提供一体机形式(服务器 & 相应软件)。正式工作2年多也接触到了一些硬件的坑,特此总结。

磁盘 链接到标题

因为公司主要提供的产品是分布式存储和虚拟化相关产品,最直接的影响也是产生范围最大的影响就是磁盘了,会直接导致存储出现单副本等问题,从而产生数据恢复,影响集群稳定性。

固件版本 链接到标题

数据中心级别磁盘,相比于性能的要求,稳定性才是重中之重。大部分厂商的磁盘均支持 S.M.A.R.T. 规范,也就是“Self-Monitoring Analysis and Reporting Technology”,即“自我监测、分析及报告技术”,是一种自动的硬盘状态检测与预警系统和规范。我们可以通过相应命令比如 smartctl 直接获取磁盘相应信息,或者对磁盘进行检测。

S.M.A.R.T. 存在两个问题:

  1. 大部分厂商支持,意味着一部分厂商不支持
  2. 不同厂商对于自家磁盘的关键字定义不同

针对上述两个问题,我们只能说做到尽量多的测试踩坑,防止出现意外情况。

介绍了 S.M.A.R.T. ,我们来看看这节标题,固件。磁盘固件版本可以通过 smartctl 或者 sg_utils 工具获取:

[root@node 07:47:14 ~]$smartctl -i /dev/sdc
smartctl 6.5 2016-05-07 r4318 [x86_64-linux-3.10.0-693.11.6.el7.smartx.1.x86_64] (local build)
Copyright (C) 2002-16, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF INFORMATION SECTION ===
Model Family:     Intel 730 and DC S35x0/3610/3700 Series SSDs
Device Model:     INTEL SSDSC2BA400G4
Serial Number:    BTHV518009D3400NGN
LU WWN Device Id: 5 5cd2e4 04c00728c
Firmware Version: G2010160
User Capacity:    400,088,457,216 bytes [400 GB]
Sector Sizes:     512 bytes logical, 4096 bytes physical
Rotation Rate:    Solid State Device
Form Factor:      2.5 inches
Device is:        In smartctl database [for details use: -P show]
ATA Version is:   ACS-3 T13/2161-D revision 5
SATA Version is:  SATA 3.1, 6.0 Gb/s (current: 6.0 Gb/s)
Local Time is:    Wed Sep 26 07:47:20 2018 CST
SMART support is: Available - device has SMART capability.
SMART support is: Enabled

[root@node 07:47:07 ~]$sg_inq /dev/sdc
standard INQUIRY:
  PQual=0  Device_type=0  RMB=0  version=0x05  [SPC-3]
  [AERC=0]  [TrmTsk=0]  NormACA=0  HiSUP=0  Resp_data_format=2
  SCCS=0  ACC=0  TPGS=0  3PC=0  Protect=0  [BQue=0]
  EncServ=0  MultiP=0  [MChngr=0]  [ACKREQQ=0]  Addr16=0
  [RelAdr=0]  WBus16=0  Sync=0  Linked=0  [TranDis=0]  CmdQue=0
  [SPI: Clocking=0x0  QAS=0  IUS=0]
    length=96 (0x60)   Peripheral device type: disk
 Vendor identification: ATA     
 Product identification: INTEL SSDSC2BA40
 Product revision level: 0160
 Unit serial number: BTHV518009D3400NGN  

可以看到上面这块磁盘 /dev/sdc 的固件版本就是 0160 。 我们日常看到的磁盘根据出厂时间的不同,对应的固件版本也不同,平时也都没有在意固件版本。但是某次在进行 POC 时,发现性能不稳定,在排除了存储系统问题后,直接对该磁盘进行 Fio 测试,发现确实是磁盘自身性能不稳定。这块磁盘是 Intel 当时的中高端产品 S3710 系列,理论上不应该存在问题,经过排查,最终确定是固件版本导致的,通过 Intel 提供的升级工具升级后,性能恢复正常。

存储控制器 链接到标题

blkdiscard ,用来清理磁盘扇区的操作。某天 POC 过程中发现当 SSD 进行 blkdiscard 时,直接导致该 SSD IO Error。

当时想法:

  • 第一想法是该磁盘有问题,不支持,结果发现是惠普 OEM Intel 的 S3520 SSD,应该是支持相关指令的;
  • 想到上面一节提到的固件版本问题,由于磁盘是 OEM 的原因,固件只能更新惠普提供的固件,当时去惠普官方网站查询发现已经是最新版本;

上面两个原因都不是,当时没有什么其他的想法,我司售前文工提到,有没有可能是存储控制器的原因? 检查当时的存储控制器,是惠普的一块型号为 Smart Array P440ar Controller 的控制器。检查该控制器固件,查询官网,发现不是最新版本,于是下载更新,控制器固件版本更新方式有两种:

  1. DOS 更新
  2. UEFI 更新

两种方式都是将固件文件放置到 U盘 或者其他存储介质中,然后启动 OS,进行更新。由于现在新款服务器均带 UEFI ,那么方式 2 会简单一些。

更新固件后,发现磁盘执行 blkdiscard 无报错,检查命令返回值($?)也是 0 ,问题解决。

电源 链接到标题

通常服务器配置双路电源,避免单一故障,此为前提。

导致 CPU 频率过低 链接到标题

某次测试,由于上架偷懒,只连接了单路电源就开始进行测试。开始功能测试一切正常,到了性能测试,发现相同物理设备下,这台机器性能比之前验证结果低 20%,发现 CPU 频率过低,查看 /proc/cpuinfo 发现部分 core 低于标准主频数。

查看 IPMI & BIOS 配置,并无异常配置,咨询服务器厂商 400,提示是否是由于电源供电不足导致的,插上第二个电源后,CPU 频率稳定,sysbench 运行结果符合标准,问题解决。

磁盘闪断 链接到标题

在服务器正常运行过程中,磁盘的任何故障都会导致业务受到严重影响,哪怕是分布式存储,采用副本机制,如果同时有多个服务器出现磁盘闪断,后果也是极为严重的。

现在各大服务器厂商出货量较多的均为高密度服务器,也就是我们见到的一个机箱内部同时存在多个节点,比如:

  • 四子星就是一个机箱内部有4个节点,如果前置面板磁盘插槽(2.5 寸)为 24 的话,那么每个节点可以连接磁盘数为 6,;
  • 双子星就是一个机箱内部有 2 个节点,如果前置面板为 3.5 寸磁盘的话,那么每个节点连接磁盘数为 6;
  • 双子星如果前置面板为 2.5 的话,那么每个节点连接磁盘数为 12。

这样的服务器好处就是在同一个机箱中,可以放置更多的 CPU内存,成本低,功耗低。但是它的缺点同样明显:多个节点采用同一电源,若电源出现故障,会导致整个机箱内的所有节点出现故障。

最近发现某个机器频繁出现整个节点的磁盘同时断开再连接的场景,由于是双子星,也就是两个节点共用同一电源,影响较大。

最开始这种涉及到整个节点所有磁盘的故障,想法是这样的:

  • 节点操作系统日志只有磁盘连接断开的日志,无特殊问题
  • 整个节点所有磁盘故障,应该不是单一磁盘问题,估计是控制器问题
  • 检查控制器日志,没有发现报错
  • 检查控制器固件版本,已为最新版本
  • 检查控制器连线,连线正常

想法到这里就断了,只能求助服务器厂商了,厂商检查后发现是电源背板问题,由于电源背板故障,导致供电不足,磁盘连接一直处于连接断开重复状态。

网线 链接到标题

最近遇到了一个用户求助,POC 的过程中发现产品不工作了,我远程查看发现是在进行数据写入的时候失败了,其实也不能说是失败了,而是写入的很慢很慢。

最初以为是磁盘问题,先通过 iostat 查看磁盘状态,但是磁盘是健康的,并且也没有任何压力,那么就开始排查其他原因。

因为是分布式存储,在数据无法写入时,除了本地需要写入副本,远端也会同时写入副本,保证数据可用性,那么有没有可能是网络问题呢?

通过 iperf 测试发现,节点间的 10GbE 网络,带宽只有 30kb 左右,在系统内部检查网卡状态健康,尝试通过更换节点间网线,发现是10GbE 网线故障,导致网络异常,最终通过更换网线解决。

写到这里突然想起随着 10GbE 的普及,现在大部分用户已经不能得到满足,开始尝试 25GbE,40GbE,甚至 100GbE,但是带来的负面影响是对网络设备的兼容性要求越来越高,甚至很多不同厂商的网线与交换机存在不兼容的情况,使用过程中要注意。

总结 链接到标题

暂时总结了印象比较深的几次硬件故障,由于大家现在都是只做软件,对硬件了解仅限于概念,随着云计算的兴起,很多同学可能没见过真正的服务器,更别提遇到这些诡异的故障。

硬件故障特别难定位,如果没有一定的相关经验,估计会像我一样捉瞎。希望这篇文章对大家有所帮助。

更新记录 链接到标题

  • 2018-09-27 初稿
  • 2019-09-06 更新网线故障