안녕하세요 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" 옵션을 사례별로 설정할 수 있습니다.
나는 다음과 같은 몇 가지 일 중 하나가 일어날 수 있다고 생각합니다.
- 회로 차단기 버전이 충분히 새롭지 않습니다.
- 실제 기본 파일 시스템은 직접 IO를 지원하지 않으며 퓨즈는 전달 오류만 반환합니다. (이는 회로 차단기가 실제로 디스크 어딘가에 데이터를 보유하고 있는 기본 파일 시스템에 직접 IO 요청을 전달한다고 가정합니다.)
- 퓨즈 코드에 일부 버그가 있습니다. Linux의 직접 IO는 매우 독특하고 기발할 수 있습니다.