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는 매우 독특하고 기발할 수 있습니다.

관련 정보