fio-数据不一致debug
1、盘信息
- nvme id-ns /dev/nvme0n1 -H
- nsze : 0x37e3e92b0
- 扇区数量(sector):0x37e3e92b0=15002931888
- LBA Format 0 : Metadata Size: 0 bytes - Data Size: 512 bytes - Relative Performance: 0 Best (in use)
- 扇区大小:512 bytes
- nsze : 0x37e3e92b0
- 总容量:扇区数量 * 扇区大小=7681501126656 bytes
- fio版本:fio-3.19
2、写盘
- fio -rw=write -verify=md5 -numjobs=1 -direct=1 -filename=/dev/nvme0n1 -verify_pattern=1310 -bs=256k -ioengine=libaio -iodepth=128 -name=test1-rw -size=2% -offset=73%
| 开始位置(bs=256k、lbaf=512 Byte) | 结束位置(bs=256k、lbaf=512 Byte) |
|
73% * 15002931888(扇区数量) = 10952140278.24 |
75% * 15002931888 (扇区数量)= 11,252,198,916 |
|
默认对齐到bs、实际起始位置:10952140288(往后递增,刚好能整除bs) 实际起始位置、Byte:5607495827456 = 10952140288 * 512 = 0x 51998cc0000 = 扇区数量 * 扇区大小 |
默认对齐到bs、实际结束位置:11,252,198,912(往前递减,刚好能整除bs) 实际结束位置、Byte:11,252,198,912 * 512 = 5,761,125,842,944 |
|
|

- 重写部分区域:fio -rw=write -numjobs=1 -direct=1 -filename=/dev/nvme0n1 -verify_pattern=1212 -bs=256k -ioengine=libaio -iodepth=128 -name=test2-rw -size=1% -offset=74%
| 开始位置(bs=256k、lbaf=512 Byte) | 结束位置(bs=256k、lbaf=512 Byte) |
| 0.74 * 15002931888 = 11,102,169,597.12 | 75% * 15002931888 (扇区数量)= 11,252,198,916 |
|
实际开始位置:11,102,169,600 转换为Byte:5,684,310,835,200 |
实际结束位置:11,252,198,912 转换为Byte:5,761,125,842,944 |
|
hexdump -C -n 512 -s 5684310835200 /dev/nvme0n1 hexdump -C -n 512 -s 5684310834688 /dev/nvme0n1(前1个lba) |
hexdump -C -n 512 -s 5761125842944 /dev/nvme0n1 hexdump -C -n 512 -s 5761125842432 /dev/nvme0n1(前1个lba) |
2、读盘
- fio -rw=read -verify=md5 -numjobs=1 -direct=1 -filename=/dev/nvme0n1 -bs=256k -ioengine=libaio -iodepth=128 -name=test3-rw -size=2% -offset=73%
md5: verify failed at file /dev/nvme0n1 offset 5684310835200, length 262144 (requested block: offset=5684310835200, length=262144)
Expected CRC: bc04bc04bc04bc04bc04bc04bc04bc04
Received CRC: 4d5f70ead34343c58f0729f3f5282cc7
fio: verify type mismatch (17 media, 2 given)
- Expected CRC: bc04bc04bc04bc04bc04bc04bc04bc04
- 从header中读取(对于md5算法,从第41Byte 到 第56Byte)
- hexdump -C -n 262144 -s 5684310835200 /dev/nvme0n1

- Received CRC: 4d5f70ead34343c58f0729f3f5282cc7
- 由data部分计算得到(对于md5算法,是从第57Byte 到256KB)
- 导出整个bs:dd if=/dev/nvme0n1 of=/tmp/block.bin bs=262144 count=1 skip=21683925 iflag=direct
- 21,683,925 = 5684310835200 / 262144
- 跳过header部分:dd if=/tmp/block.bin bs=1 skip=40 count=262104 2>/dev/null | md5sum
- 4d5f70ead34343c58f0729f3f5282cc7 -
- 第40个Byte开始为数据部分(bc 04 不断重复)
生成:md5sum ./rumenz.img > list.md5
检查:md5sum -c list.md5
3、crc32c算法
- Expected CRC: 2b7dd2cd(从第41Byte 到 第44Byte)

- Received CRC: 不同工具实现不一致、难以与 fio 对齐,待后续补充手动计算方法
hexdump -C -n 262144 -s 5684310835200 /dev/nvme0n1
dd if=/dev/nvme0n1 of=/tmp/block.bin bs=262144 count=1 skip=21683925 iflag=direct
本文来自博客园,作者:Fēngwèi,转载请注明原文链接:https://www.cnblogs.com/fengwei-blogs/p/20249142

浙公网安备 33010602011771号