FUSE是否支持O_DIRECT/directI/O

FUSE是否支持O_DIRECT/directI/O

你好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”选项。

我敢冒险可能会发生以下几件事之一:

  1. 您的熔断器版本不够新。
  2. 实际的底层文件系统不支持直接IO,fuse只是返回一个传递错误。 (这确实假设熔断器将直接 IO 请求传递到实际将数据保存在磁盘上某处的底层文件系统。)
  3. 保险丝代码中的某个错误。 Linux 上的直接 IO 可能非常特殊/古怪。

相关内容