服务器 2022-04-20

KunTai R522服务器硬盘读写速率慢

一 、现网描述

1.1 环境描述

设备型号:KunTai R522

硬件配置:2块机械硬盘做raid1用来安装操作系统

RAID卡:3152 raid卡

OS:麒麟操作系统V3  UniKylin 3.3

内核版本:Kernel 4.19.90-2003.4.0.0036.ky3.kb3.aarch64 Release

1.2 故障现象

现场三台服务器通过dd命令测试硬盘的写入速率慢,同样的命令其他设备测试速率正常

image.png 

image.png 

 

二 、问题分析

2.1 排查思路

1.BMC上只有PSU2告警信息,无硬盘和raid卡相关告警,询问现场工程师,只插了PSU1电源,此告警是因为电源模块没插导致,所以无需关注。

image.png 

2.在系统侧查看硬盘状态,首先通过dmesg工具,确认一下硬盘的设备符号,然后确认硬盘是否打开了SMART支持smartctl -i /dev/sda,然后通过smartctl -H /dev/sda查看硬盘健康状态。(如果硬盘smart未启用通过smartctl --smart=on --offlineauto=on --saveauto=on /dev/sda 开启)

image.png image.png image.png image.png 

3.远程测试

image.png image.png image.png 

4.参考正常服务器BIOS配置,发现故障服务器bios配置Controller Cache处于禁用状态image.png  

5.在bios开启缓存配置进入系统重新测试,速率达到正常。

image.png image.png image.png 

2.2 原因分析

创建阵列时需要将Controller Cache参数启用image.png 

Acceleration method

设置LD所采用的加速方法。

l SSD I/O Bypass(只有当LD由SSD组成时,该选项有效)

l Controller cache(同时使用读Cache和写Cache)

l None(禁用加速,表示既不使用SSD I/O Bypass,也不使用Controller Cache,即无任何加速。)

 

三 、问题解决

3.1 解决办法

在BIOS的阵列配置中同时使用读写cache,开启Controller cache

3.2 分析总结

用于测试硬盘读写速率的dd命令:

1.dd bs=64k count=4k if=/dev/zero of=test

没有加任何参数,dd默认的方式不包括“同步(sync)”命令。也就是说,dd命令完成前并没有让系统真正把文件写到磁盘上。所以以上命令只是单纯地把这128MB的数据读到内存缓冲当中(写缓存[write cache])。

实际运行结果:268435456 bytes (268 MB) copied, 1.3529 seconds, 198 MB/s

 

2.dd bs=64k count=4k if=/dev/zero of=test conv=fdatasync

加入这个参数后,dd命令执行到最后会真正执行一次“同步(sync)”操作,所以这时候得到的是读取这128M数据到内存并写入到磁盘上所需的时间,这样算出来的时间才是比较符合实际使用结果的。

实际运行结果:268435456 bytes (268 MB) copied, 2.8046 seconds, 95.7 MB/s

 

3.dd bs=64k count=4k if=/dev/zero of=test oflag=dsync

加入这个参数后,dd在执行时每次都会进行同步写入操作。也就是说,这条命令每次读取64k后就要先把这64k写入磁盘,然后再读取下面这64k,一共重复128次。

实际运行结果:268435456 bytes (268 MB) copied, 3.40069 seconds, 78.9 MB/s