你好Linux FUSE(用户空间中的文件系统)支持O_DIRECT吗?因为我使用fio benchmark来测试fuse,但是当我使用directIO时它总是显示错误
我的机器是 Ubuntu 4.4.0-38 x86_64 fio_version = 2.14 下面是我的配置文件
[global]
ioengine=libaio
**direct=1**
time_based
runtime=60
ramp_time=30
size=64g
group_reporting
[S_100RW_1M_R]
rw=read
numjobs=1
iodepth=32
bs=1m
stonewall
[S_100RW_1M_W]
rw=write
numjobs=1
iodepth=32
bs=1m
stonewall
当我执行 :sudo fio fio.cfg
并完成时,它显示了 seq 的结果。无需序列号即可读取。写。它显示如下:
fio: io_u error on file xxxxx : Invalid argument: write offset=0, buflen=1048576
我每次都尝试过,即使更换了测试设备,结果也是一样。
怎么会发生这样的事?
多谢
答案1
是的,从2.4版本开始:
2.4 中有什么新内容
...
- 允许在打开时根据具体情况设置“direct_io”和“keep_cache”选项。
我敢冒险可能会发生以下几件事之一:
- 您的熔断器版本不够新。
- 实际的底层文件系统不支持直接IO,fuse只是返回一个传递错误。 (这确实假设熔断器将直接 IO 请求传递到实际将数据保存在磁盘上某处的底层文件系统。)
- 保险丝代码中的某个错误。 Linux 上的直接 IO 可能非常特殊/古怪。