背景 链接到标题
因为公司提供的产品不单单是软件形式提供,还对应的提供一体机形式(服务器 & 相应软件)。正式工作2年多也接触到了一些硬件的坑,特此总结。
磁盘 链接到标题
因为公司主要提供的产品是分布式存储和虚拟化相关产品,最直接的影响也是产生范围最大的影响就是磁盘了,会直接导致存储出现单副本等问题,从而产生数据恢复,影响集群稳定性。
固件版本 链接到标题
数据中心级别磁盘,相比于性能的要求,稳定性才是重中之重。大部分厂商的磁盘均支持 S.M.A.R.T. 规范,也就是“Self-Monitoring Analysis and Reporting Technology”,即“自我监测、分析及报告技术”,是一种自动的硬盘状态检测与预警系统和规范。我们可以通过相应命令比如 smartctl
直接获取磁盘相应信息,或者对磁盘进行检测。
S.M.A.R.T. 存在两个问题:
- 大部分厂商支持,意味着一部分厂商不支持
- 不同厂商对于自家磁盘的关键字定义不同
针对上述两个问题,我们只能说做到尽量多的测试踩坑,防止出现意外情况。
介绍了 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 的控制器。检查该控制器固件,查询官网,发现不是最新版本,于是下载更新,控制器固件版本更新方式有两种:
- DOS 更新
- 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 更新网线故障