Как определить, записаны ли данные на диск или кэшированы?

Я изучаю вызовы операций с файлами в Linux. Функции read() и write() и многие другие используют кеш для повышения производительности, и я знаю, что fsync() может передавать данные из кеша на дисковое устройство.

Однако есть ли какие-либо команды или системные вызовы, которые могут определять, кэшируются ли данные или записываются на диск?

  • warning: Файловая система, похоже, смонтирована только для чтения
  • Отправка сообщения от одного пользователя терминала другому пользователю
  • Как разрешить пользователю OpenLDAP записывать данные в точку монтирования SSHFS?
  • Почему Debian предпочитает временный файл, заменяющий оригинал на изменение байтов в исходном файле?
  • Почему у / proc / self / fd / 0 нет бит записи в последовательном сеансе перед запуском оболочки?
  • 2 Solutions collect form web for “Как определить, записаны ли данные на диск или кэшированы?”

    Чтение данных (непосредственно) считывается из кеша только в том случае, если оно уже существует. Это подразумевает, что кэшированные данные ранее были обработаны процессом и хранились в кеше. Системного вызова или какого-либо метода для процесса не существует, чтобы узнать, находится ли какой-либо фрагмент данных в кеше или нет.

    С другой стороны, процесс может выбрать, хочет ли он, чтобы записанные данные были немедленно сохранены на диске или только после переменной задержки, которая является общим случаем. Это делается с помощью флага O_SYNC при открытии файла.

    Существует также флаг O_DIRECT, который при поддержке заставляет все входы / выходы обходить кеш чтения и записи и перейти непосредственно на диск.

    Наконец, сам жесткий диск может свободно реализовать свой собственный кеш, так что даже после того, как был вызван синхронный вызов записи, на дисковых планшетах нет никаких гарантийных данных.

    fsync уже делает это для рассматриваемого файла (напишите на диск), но это не гарантирует это для каталога. Для этого требуется дополнительный вызов fsync.

    Interesting Posts

    Почему Linux-приложения часто помещают язык, на котором он был написан в сводке?

    Как назначить задания на Arch Linux?

    Что делает dd, когда недостаточно свободного места

    Черный экран после установки драйвера Nvidia

    Изменения в /etc/security/limits.conf и /etc/security/limits.d/20-nproc.conf не влияют

    Как заставить AltGr + i, j, k, l работать правильно как клавиши курсора?

    Как использовать файл casper-rw для сохранения

    Rsync – измененный список изменений

    Почему скорость соединения ограничена 20-30 мбит / с в случае демона PPP?

    Как создать структурированный список всех файлов и каталогов в определенном каталоге (рекурсивно)?

    Поддерживает ли клавиатурная интерактивная аутентификация два последовательных пароля?

    Невозможно публиковать IP-адрес telnet на порту 80

    как использовать регулярное выражение в псевдониме?

    Как сделать изменение смены журнала

    Как разрешить пользователям монтировать общие ресурсы Windows

    Linux и Unix - лучшая ОС в мире.