Linux
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
我每次都嘗試過,即使我更換了測試設備,結果也是一樣的。
怎麼會這樣?
多謝
是的,從 2.4 版開始:
2.4 中的新功能
…
- 允許在打開時根據具體情況設置“direct_io”和“keep_cache”選項。
我會冒險可能發生的幾件事之一:
- 你的保險絲版本不夠新。
- 實際的底層文件系統不支持直接 IO,並且 fuse 只是返回一個傳遞錯誤。(這確實假設 fuse 將直接 IO 請求傳遞到底層文件系統,該文件系統實際上將數據保存在磁碟上的某處。)
- 保險絲程式碼中某處的錯誤。Linux 上的直接 IO 可能非常特殊/古怪。