fio Trickery

· 309 words · 1 minute read

遇到一个需要测试大量创建文件的场景。毫无疑问,一定能通过 fio 解决。查看了一下 man 手册,有个 filecreate 引擎,折腾了几分钟也只能创建一个文件。Deepseek-Coder-128k 给的答案同样是使用 filecreate:

[global]
ioengine=filecreate
filesize=1M
create_on_open=1
create_only=1
create_fsync=1
create_trim=1
create_zero=1
directory=/path/to/your/directory

[job1]
filename=file{1..1000}

但是,我的环境中并不工作。fio-3.19 报错:

Bad option <create_trim=1>
Did you mean create_only?
Bad option <create_zero=1>
Did you mean create_only?
fio: job global dropped.

去掉 create_trimcreate_zero 后:

munmap_chunk(): invalid pointer
fio: pid=6464, got signal=6

最后通过搜索引擎得到的可工作的结果:

[global]
filesize=4k
create_only=1
#create_fsync=1   # default=1

[job1]
#size=4k
#rw=write
nrfiles=100
directory=/data/foo

[job2]
nrfiles=100
directory=/data/bar

直接用命令行,就是类似:

$ fio --name=test --directory=/data/foo --filesize=4k \
	--create_only=1 --nrfiles=100

通过指定 --create_only=1 可以让 fio 预先创建好所有文件,然后就退出 (并不做 I/O 测试)。因此,测试过程中会输出类似以下信息:

test: Laying out IO files (100 files / total 0MiB)

如果还需要对创建的文件进行 I/O 测试,则设置:

create_only=0
size=
rw=

参考:Re: How to create multiple files with FIO?

comments powered by Disqus