探测磁盘IO hang多久的工具iomaxtime

0    68    1

Tags:

👉 本文共约1437个字,系统预计阅读时间或需6分钟。

介绍

在我们测试存储路径切换、软Raid切换时,我们想知道切换过程中IO到底hang了多久,这时就可以使用此工具。此工具的原理是每隔一段时间,向某一个测试的块设备或文件发送一个读IO(或写IO,可以参数控制),然后看这个IO的响应时间是多少,然后每一秒打印一行,打印出最慢的那个IO的时间。如果IO hang住了,每秒打印的IO 时间是会不断的增加,最后增加到多长时间就表示hang了多久。

工具下载:https://gitee.com/osdba/iomaxtime

使用方法

使用的一个示例如下:

从上面可以看出,上面IO没有hang,原因是最慢的IO的响应时间没有一直增加。如果打印出的时间是下面这种,说明IO hang了:

不带任何参数运行这个工具,显示出这个工具的帮助:

各个参数说明:

  • mode: 可为0或1,0表示发送的探测IO为读IO,1表示发送的探测IO为写IO,注意如果设置为1,则会写一些数据到测试块设备或文件去,会破坏原有的数据。
  • blocksize: 指定发送的IO大小,可以带单位,如“8k”表示发送8K的IO大小。
  • filename: 指定要探测的块设备名或文件名
  • sleep_ms_per_io: 探测发IO时,每发一个IO,则sleep一段时间,单位为毫秒。如果不指定,则默认为100ms。
  • 最后一个参数指定IO的类型,不指定默认为O_DIRECT,对于文件还可以指定O_NOATIME。

使用场景的一个例子: 如果我们有一个做镜像的软Raid,底层的两个设备是由远程的两台机器上输出的iSCSI设备组成,如果这台机器与其中一台提供硬盘的机器网络中断,那么会导致软Raid降级,但降级是有一个过程的,软Raid检测降级的方法是发送到这个底层的IO出错时。如果IO一直没有返回,则软Raid还认为是正常的,这时发到这个软Raid的IO一直会hang,直到软Raid检测到此故障,IO才能恢复正常 。如果我们想获得这个hang的时间是多少,则可以使用我写的这个工具来完成。 测试过程为先建一个从其它两台机器上输过来的iSCSI设备。提供iSCSI设备的两台机器的IP为

把iSCSI设备挂过来的命令为:

我们使用iSCSI -m 3 -p 3可以看出挂过来的设备为/dev/sda和/dev/sdb,则建软Raid的过程为:

本人提供Oracle(OCP、OCM)、MySQL(OCP)、PostgreSQL(PGCA、PGCE、PGCM)等数据库的培训和考证业务,私聊QQ646634621或微信dbaup66,谢谢!
AiDBA后续精彩内容已被站长无情隐藏,请输入验证码解锁本文!
验证码:
获取验证码: 请先关注本站微信公众号,然后回复“验证码”,获取验证码。在微信里搜索“AiDBA”或者“dbaup6”或者微信扫描右侧二维码都可以关注本站微信公众号。

标签:

Avatar photo

小麦苗

学习或考证,均可联系麦老师,请加微信db_bao或QQ646634621

您可能还喜欢...

发表回复