FUSEはO_DIRECT/directI/Oをサポートしますか?

FUSEはO_DIRECT/directI/Oをサポートしますか?

こんにちはLinux FUSE(ユーザースペースのファイルシステム)はO_DIRECTをサポートしていますか?これは、Fioベンチマークを使用してヒューズをテストするために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をサポートせず、ヒューズは転送エラーのみを返します。 (これは、サーキットブレーカが実際にディスクのどこかにデータを保持している基本ファイルシステムに直接IO要求を渡すと仮定します。)
  3. ヒューズコードにはいくつかのバグがあります。 Linuxの直接IOは非常にユニークで気まぐれです。

関連情報