У нас есть проект, в котором несколько узлов последовательно записывают данные в файл, а файл находится в NFS.
Раньше мы использовали синхронную NFS, поэтому сброс в файловые потоки работал нормально. Теперь у нас есть асинхронная NFS, и она не работает. Очевидно, что не работает в некотором смысле кэширование, и другие узлы не видят изменений, внесенных конкретным узлом.
Я хотел знать, есть ли способ принудительно сбросить данные из кеша на диск. Я знаю, что это неэффективно, но это заставит все работать, пока мы не получим реальное решение.
flush()
приведет к базовому вызовуfsync()
илиioctl()
. Может быть, запустить strace, чтобы убедиться, что это так? Если да, то возможноsync()
? Если нет, возможно, получить дескриптор файла отrdbuf()
и явно вызватьfsync()
илиioctl()
? - person Jason   schedule 23.10.2014