设备型号:KunTai R522
硬件配置:2块机械硬盘做raid1用来安装操作系统
RAID卡:3152 raid卡
OS:麒麟操作系统V3 UniKylin 3.3
内核版本:Kernel 4.19.90-2003.4.0.0036.ky3.kb3.aarch64 Release
现场三台服务器通过dd命令测试硬盘的写入速率慢,同样的命令其他设备测试速率正常
1.BMC上只有PSU2告警信息,无硬盘和raid卡相关告警,询问现场工程师,只插了PSU1电源,此告警是因为电源模块没插导致,所以无需关注。
2.在系统侧查看硬盘状态,首先通过dmesg工具,确认一下硬盘的设备符号,然后确认硬盘是否打开了SMART支持smartctl -i /dev/sda,然后通过smartctl -H /dev/sda查看硬盘健康状态。(如果硬盘smart未启用通过smartctl --smart=on --offlineauto=on --saveauto=on /dev/sda 开启)
3.远程测试
4.参考正常服务器BIOS配置,发现故障服务器bios配置Controller Cache处于禁用状态
5.在bios开启缓存配置进入系统重新测试,速率达到正常。
创建阵列时需要将Controller Cache参数启用
Acceleration method | 设置LD所采用的加速方法。 l SSD I/O Bypass(只有当LD由SSD组成时,该选项有效) l Controller cache(同时使用读Cache和写Cache) l None(禁用加速,表示既不使用SSD I/O Bypass,也不使用Controller Cache,即无任何加速。) |
在BIOS的阵列配置中同时使用读写cache,开启Controller cache
用于测试硬盘读写速率的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