今天在工作的时候遇到了一个问题,现场的生产环境是一个集群,一共有6台服务器,其中数据库在第二台服务器上,但是这台服务器的读写不太给力,这个时候就像测试一下这台服务器硬盘的读写能力,首先要声明的是这台服务器的硬盘是机械的(撒死硬盘,不知道英文),然后就进行fio磁盘性能监测。
注意点:
1、监测的时候一定要注意,最好在集群或者服务器正式使用之前
2、尽量不要对系统盘进行测试,可能会导致数据丢失
1、首先判断你的服务器上有没有这个检测fio工具,以及异步io引擎libaio
fio --enghelp | grep libaio
有
没有
没有异步io引擎libaio
当有fio工具和异步io引擎libaio后就可以进行监测了
### 如下是在/data 目录下新建一个空目录进行测试
mkdir /data/performance_fio_test
###########################################################
directory:被测目录
ioengine:IO引擎
time_based:设置测试基于时间
rw: 测试方式read、write、randread、randwrite
direct:测试过程绕过机器自带的buffer,使得测试结果更真实
size:设置本次测试的空间大小
bs:单次io的块文件大小
numjobs:测试线程数
iodepth:io深度设置
runtime:运行时间设置
group_reporting:汇总每一个进程的信息
###########################################################
###
### 测试一个目录前请确保该目录起码超过20G,并做完一个测试项及时删除测试数据
### 100% 随机读
# 测试
fio -directory=/data/performance_fio_test -direct=1 -iodepth=128 -rw=randread -ioengine=libaio -bs=4k -size=10G -numjobs=1 -runtime=100 -group_reporting -name=fio_disk_seqread_4k
# 清空测试数据
rm -rf /data/performance_fio_test/fio_disk_seqread_4k
### 100% 随机写
# 测试
fio -directory=/data/performance_fio_test -direct=1 -iodepth=128 -rw=randwrite -ioengine=libaio -bs=4k -size=10G -numjobs=1 -runtime=100 -group_reporting -name=fio_disk_randwrite_4k
# 清空测试数据
rm -rf /data/performance_fio_test/fio_disk_randwrite_4k
### 100% 顺序读
# 测试
fio -directory=/data/performance_fio_test -direct=1 -iodepth=128 -rw=read -ioengine=libaio -bs=4k -size=10G -numjobs=1 -runtime=100 -group_reporting -name=fio_disk_seqread_4k
# 清空测试数据
rm -rf /data/performance_fio_test/fio_disk_seqread_4k
### 100% 顺序写
# 测试
fio -directory=/data/performance_fio_test -direct=1 -iodepth=128 -rw=write -ioengine=libaio -bs=4k -size=10G -numjobs=1 -runtime=100 -group_reporting -name=fio_disk_seqwrite_4k
# 清空测试数据
rm -rf /data/performance_fio_test/fio_disk_seqwrite_4k