Много временных файлов в журналируемой файловой системе?

Много временных файлов в журналируемой файловой системе?

Быстрая запись и удаление большого количества файлов

Я собираюсь записывать много временных файлов в секунду в течение длительного периода. Каждый будет удален через несколько миллисекунд.

Допустим, у нас есть программное обеспечение для обработки изображений, которое работает с частичными кадрами с быстрой камеры, около 2000 в секунду. Каждый из них записывается в файл, затем файл немного изменяется, снова считывается и удаляется, за те же самые пару миллисекунд.

В настоящее время это работает на tmpfsфайловой системе, но давайте предположим, что это невозможно.
И нет, я не могу"просто исправь это, сделав это", это необходимо для некоторой интеграции устаревших версий.

Как справляется файловая система?

Я хотел бы понять, как это взаимодействует с параметрами файловой системы. В частности, я не могу понять, как журнал файловой системы взаимодействует с этим.

Наивно было бы надеяться, что данные никогда не коснутся диска, и даже метаданные не коснутся; после создания файла и его удаления данные остаются теми же, верно? И после записи и удаления имени в каталоге каталог тоже остается тем же, верно?

Удивительные эффекты

Без ошибок.

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

Но могу ли я сделать так, чтобы это не было записано один раз для каждой из четырех операций? И что насчет журнала? Попадут ли мои временные данные в журнал? Могу ли я предотвратить это?

Один вопрос: о чем мне следует позаботиться или что следует иметь в виду при этом?

решение1

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

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

Есть немноговарианты креплениячто я бы предложил рассмотреть. Вы можете сделать эти моменты контрольных точек произвольно редкими, увеличив интервал, но они все равно будут происходить. Также отложенное распределение имеет побочный эффект в виде сохранения данных, отправленных на диск, по причинам, которые я не могу объяснить. Я не помню, где я об этом читал.

  • commit=nrsec (синхронизация всех данных и метаданных каждые nrsec секунд. Значение по умолчанию — 5 секунд. Ноль означает значение по умолчанию.) на Ext3
  • delalloc (Отсрочка выделения блока до времени записи.) на Ext4

Предлагаемое решение:используйте файловую систему в памяти. Таким образом вы можете быть уверены, что на диске ничего не окажется. Будь то tmpfs или ramfs, есть некоторые различия, например, может ли он подкачиваться, расширяться сверх указанной емкости. Я знаю, что это в основном то, что вы используете прямо сейчас. Это не обязательно должен быть /tmp, вы можете создать новую файловую систему такого типа в любом каталоге.

http://www.thegeekstuff.com/2008/11/overview-of-ramfs-and-tmpfs-on-linux/

Связанный контент