Требуется более медленная/кэшированная файловая система Linux

Требуется более медленная/кэшированная файловая система Linux

Я знаю, это звучит странно, но мне нужна более медленная или кэшированная файловая система.

У меня есть много брандмауэров, которые отправляют свои данные в системный журнал на пару виртуальных машин Linux, которые записывают эти файлы на свои «локальные» (на самом деле подключенные к FC SAN) диски в формате ext3, а также пересылают сообщения на наши серверы Splunk.

Проблема в том, что сервер syslog записывает эти сообщения syslog в виде сотен, а иногда и тысяч крошечных записей по ~4К в секунду обратно в нашу FC SAN, которая сейчас может справиться с такой нагрузкой, но наш трафик FW вырастет как минимум на 5000% (реально) в ближайшие месяцы, и это будет проблемой для SAN. Я хочу устранить основную причину, прежде чем она станет проблемой.

Поэтому мне нужна помощь в поиске способа кэширования или задержки этих записей на «физических» дисках, чтобы виртуальные машины выполняли более крупные, но менее частые записи. Избежать этих записей невозможно, но и нет необходимости делать так много мелких записей.

Я рассмотрел различные параметры ext3, устанавливал noatime и nodiratime, но это не сильно помогло в решении проблемы. Очевидно, я изучаю другие файловые системы, но подумал, что стоит выбросить это на случай, если у других возникнет та же проблема в будущем.

О, и я не могу просто переслать эти сообщения в Splunk, наша команда по брандмауэру настаивает на том, чтобы они были в исходном формате в целях диагностики.

решение1

Возможно, commitвам поможет опция монтирования ext3? Например, commit=60она будет сбрасывать все данные и метаданные только раз в минуту.

Обязательное предупреждение: это может привести к потере данных объемом до одной минуты (если вы передадите значение commit=60).

решение2

Файловая система: отключите барьеры записи, если ваши устройства их используют, и отключите обновления atime для всех устройств.

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

Примеры директив из syslog-ng(которые могут не совпадать с тем, что вы используете):

  • flush_lines()Указывает, сколько строк сбрасывается в пункт назначения за раз. Syslog-ng ждет, пока накопится это количество строк, и отправляет их одним пакетом.

  • flush_timeout()Указывает время, в течение которого syslog-ng ждет накопления строк в своем выходном буфере. Для получения дополнительной информации см. опцию flush_lines.

Местом назначения в данном случае является файл на диске.

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