mile米乐M6

    服务器 2024-11-15

    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