Fio工具业余性研究(二)

2018-03-23  本文已影响410人  Stansosleepy

1、背景

fio在做verify的时候到底下发了什么数据,又验证了什么数据呢?

1.1 hexdump

要查看块设备上的数据,有一个工具比较实用,hexdump,使用这个工具可以去查看文件的原始数据。现在用fio去写一些数据,jobfile如下


image.png

可以看到这一次是顺序写:

现在使用hexdump来查看一下块设备的前1024字节的数据:


image.png

可以看到每个bs开始前会有一部分以acca开始的header数据,然后剩下的bs里面全部填充了jobfile指定的pattern

2、verify的header数据

在每个bs前面填充的数据是在fio的verify.c中定义的:



header的大小是40个字节,他记录了这个写下来的io的相关信息

2.1 verify=meta

如果使用默认的方式来verify,那就是只verify header的crc32校验,不去verify后面的data区域,这是执行最快的一种verify。


image.png

另外,在data区域,fio会写随机的数据

2.2 verify = crc32

如果使用verify=crc32,整个4kb的数据会分为两个部分:

在verify的时候,header是默认校验的,就是校验header的内容和header的crc校验,如果指定的verify=crc32,那么在校验header之后,还会校验data区域内容和data区域的crc。

image.png

2.3 其他的verify方式

使用hexdump可以去调试其他各种verify的方式下发的数据内容,对于fio工具有一种方式可以在代码中输出log——dprint函数。


image.png

可以看到调用dprint函数的时候需要输入FD_VERIFY,这是verify log类型的标识,其实还有别的log类型。
在执行fio是使用命令:

 #指定查看verify的log
 ./fio --debug=verify   /tmp/jobfile1 

log如下:


image.png

第一个block的校验值是3093347643-->B860 BD38
正好对应到dump出来的data区域的crc32校验。


上一篇 下一篇

猜你喜欢

热点阅读