一、iostat命令
iostat命令可以用于监测系统每个CPU和I/O设备的状态。使用iostat命令可以获取CPU的利用率、I/O设备的读写速率和繁忙度等信息。
$ iostat -x 1
-x参数表示以扩展模式显示统计信息。1表示每秒更新一次数据。
iostat命令输出的结果中,%util参数表示设备的繁忙度,await参数表示I/O请求等待时间。
二、hdparm命令
hdparm命令可以用于显示和修改硬盘的设置。其中最有用的命令是-T和-t参数。
$ hdparm -Tt /dev/sda
-T参数表示测试硬盘的缓存读取速度,-t参数表示测试硬盘的读取速度。
通过hdparm命令可以调节硬盘的读写缓存大小,从而提高硬盘的I/O性能。
$ hdparm -W 1 /dev/sda
-W参数表示使硬盘启用写缓存,1表示启用写缓存。
三、iotop命令
iotop命令可以用于查看系统中繁忙的I/O进程。
$ iotop -P
-P参数表示只显示繁忙的进程。
iotop命令输出的结果中,D表示进程的I/O等待时间,R表示I/O请求大小,W表示I/O请求数量。
四、dd命令
dd命令可以用于测试硬盘的读写性能。其中if参数表示输入文件,of参数表示输出文件,bs参数表示每次读写的块大小,count参数表示读写块的数量。
$ dd if=/dev/zero of=/tmp/test bs=1M count=1024 conv=fdatasync $ dd if=/tmp/test of=/dev/null bs=1M count=1024
第一条命令测试写入速度,第二条命令测试读取速度。
五、sync命令
sync命令可以用于将系统内存中的数据写入硬盘。
$ sync
调用sync命令,可以让所有缓存中的数据写入硬盘,避免数据丢失。
六、fio命令
fio命令是一个灵活的I/O测试工具,可以测试各种不同的测试场景。
$ fio --filename=/dev/sda --direct=1 --rw=randwrite --bs=4k --size=1G --numjobs=16 --runtime=120 --group_reporting --name=mytest
上述命令表示使用/dev/sda作为测试文件,使用随机写入方式,块大小为4KB,测试数据大小为1GB,16个并发进程,执行120秒,结果使用组合报告方式输出。
通过调整不同参数的值,可以进行不同类型、不同场景的I/O测试。