FIO: всегда записывайте ошибку, когда direct = 1 и используйте libaio в mergerfs

#linux #ubuntu #fuse

#linux #ubuntu #предохранитель

Вопрос:

Linux FUSE (файловая система в пользовательском пространстве) поддерживает O_DIRECT? потому что я использую тест fio для тестирования 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. прочитал, но результатов seq нет. пишите. это показано ниже:

fio: ошибка io_u в файле xxxxx: недопустимый аргумент: write offset = 0, buflen = 1048576 Я пробовал каждый раз, и результаты те же, даже если я менял тестируемое устройство.

как так получилось?

большое спасибо

Ответ №1:

Это говорит о том, что по какой-либо причине файловой системе «понравилось» O_DIRECT при первоначальном открытии, но она отказалась что-либо делать, когда пришло время выполнить запись в 1 мегабайт O_DIRECT . Я бы предположил, что вы получите аналогичный результат, используя dd with oflag=direct bs=1M etc.

Комментарии:

1. @yayaya dd постигла та же участь?

2. да, кажется, это проблема mergerfs.