LINUX.ORG.RU

Использование zram для файловой системы с синхронизацией на носитель

 log2ram, ,


0

2

Есть ли тут люди, использующие для записи логов на всяких недокомпьютерах (роутеры, одноплатники итп) рамдиск с периодической синхронизацией этих логов на носитель (например, на SD-карточку)? Такая сложная схема нужна для того, чтобы продлить время жизни носителя, уменьшив количество перезаписей.

Как вам кажется, стоит ли овчинка выделки?

В армбиане подглядел armbian-ramlog & Co: создаём раздел на zram, монтируем его в /var/log, копируем на ФС карточки полученные логи по крону/системдшному таймеру перед логротейтом.

Но решение в армбиане не понравилось следующими вещами:

  1. по идее, на карточку логи нужно синхронизовать сразу в сжатом виде, чтобы уменьшить нагрузку на носитель
  2. Довольно развесистая система костылей и подпорок, выглядит overengineered. В интернетах полно возмущённых воплей разной степени актуальности о сбоях и о том, как отключить всё это счастье нафиг.
  3. Может быть, есть какие-то более индустриальные решения? Ну, например, выделить логи в какую-то файлуху, которая заведомо более подходит для постоянного потока мелких записей сомнительной ценности и вообще забыть про всю эту камасутру с zram-ом и скриптами? Или, например, оставить рамдиск, но только как слой над overlayfs/aufs/итп ?
★★★★★

Последнее исправление: AlexM (всего исправлений: 2)

может просто подключить задрипанный хдд и туда писать все ненужное? Я на малине вообще journal системды поставил на none.

Некоторые логи можно по сети сразу отправлять на нужную машину, но к этому случаю имеет косвенное отношение

monkdt
()
Последнее исправление: monkdt (всего исправлений: 1)
Ответ на: комментарий от monkdt

может просто подключить задрипанный хдд и туда писать все ненужное?

Да, я подумываю об этом.

Но это будет только когда я соберу где-нибудь NAS (например, в роутер воткну для nextcloud-а какого-нибудь).

Я на малине вообще journal системды поставил на none.

Да, это вариант. Но «рыбки иногда хочется»… Может быть, действительно стоит переформулировать задачу так, чтобы вся «рыбка», коль скоро она нужна, сразу репортилась в нужное место в нужном виде, а логи, как таковые, и не писались.

Некоторые логи можно по сети сразу отправлять на нужную машину, но к этому случаю имеет косвенное отношение

Именно. Но это как с вопросом зарождения жизни, сразу поднимает вопрос «а что на той, другой машине?» Там ведь тоже флэш-носитель, лимит по количеству перезаписей и вот это всё.

Вот и думал, может есть какое-то технологическое решение, позволяющее не насиловать флэшки.

AlexM ★★★★★
() автор топика
Ответ на: комментарий от AlexM

да, но и на таких девайсах как малина ram еще критичиней. Пусть даже все пережимается можно тупо забыть о логах пока все не повиснет. Но это только мои догадки. У меня к малине через хаб с внешним питанием подключен хдд и пара ssd и можно делать что угодно. Хаб стоил несколько евро

monkdt
()
Ответ на: комментарий от monkdt

да, но и на таких девайсах как малина ram еще критичиней.

Мне сын задарил 4b с 8 гигами. У жены на ноутбуке меньше :-)

Так что, пока я считаю, что хватит для всего :-)

AlexM ★★★★★
() автор топика
Ответ на: комментарий от drl

Да в том-то и дело, что

  1. большинство приложений требует, как минимум SIGHUP для того, чтобы отпустить (переоткрыть) файл лога, а некоторые, вроде постгреса — так и вообще рестарта.
  2. хочется поменьше, в идеале — ноль велосипедов
  3. «отправлять» — это писать на SD-карточку. Вариант сетевой пока не рассматриваем, т.к. в моих нынешних условиях это просто перенос места, где нужно будет что-то писать на SD-карточку.
AlexM ★★★★★
() автор топика
Ответ на: комментарий от AlexM

nginx есть компрессия логов, возможно и у других прог тоже, в настройках.
Но соглашусь если их много по дефолту не сжатых, то лучше сделать zram для всего, но пережатие же.

drl
()
Последнее исправление: drl (всего исправлений: 2)
Ответ на: комментарий от AlexM

ну так вот как в запросе написано так и работает, причём из коробки, для одноплатников и иже с ними очень удобно
https://wiki.alpinelinux.org/wiki/Installation
https://thiagowfx.github.io/2022/01/alpine-linux-on-raspberry-pi-diskless-mode-with-persistent-storage/

z0idator
()

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

если такого не требуется, то вообще все просто - смонтируй /var/log через nfs smb и иже с ними и лей логи сразу по сети на целевую машину. кеш записи сетевой фс аккурат и будет твой zram.

опять же вспоминаем syslog который шлет все сообщения по сети на удаленку.
причем настройку по сливанию логов на удаленный syslogd видел даже в бытовом зюксель кинетике.

зачем мудрить еще один костыль, когда имеющихся ужо выше крышечки создано допилено и апробировано в многолетней работе ??

п.с. последовательная планомерная запись с логов с редким удалением для флеш-накопителя ИМХО самый нестрашный режим работы :) просто поставь размерчик поболее.
по сравнению к примеру с кучей записей, перезаписей и стираний в файле активной базы данных.

pfg ★★★★★
()
Последнее исправление: pfg (всего исправлений: 1)
Ответ на: комментарий от pfg

Перенос логов «на другую машину» — это перенос задачи на ту самую «другую машину».

Из постоянно включенного оборудования у меня дома роутер, в котором, внезапно, пока нет носителя. Можно воткнуть SD- или флэшку в роутер, но потом всё равно придётся решать вопрос — а как не убить эту флэшку постоянным потоком мелких изменений.

Поэтому, собственно, идея о ремоутных логах и не рассматривается, решения задачи она не даёт.

AlexM ★★★★★
() автор топика
Ответ на: комментарий от AlexM

потоком последовательных записей с редким удлаением ты ее не убьешь. ибо каждая ячейка будет записана один раз и очень редко будет очищена - обрезка логов к примеру раз в неделю. это даст неделю * жизнеспособность ячейки в 10 000 записей = ~10 000 недель жизнеспособности флешки а это 190 лет жизни.
для флешки этот режим очень хорош и даже система распределения износа ячеек по объему не сильно понадобится.

а вот активное использование ее под кеш, где данные записались и через пару минут опять перезаписались, очень быстро ресурс отправит по реке стикс.

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

pfg ★★★★★
()
Последнее исправление: pfg (всего исправлений: 1)
Ответ на: комментарий от pfg

Ok, благодарю. Тогда всё выглядит, что логи можно писать прямо на SD-карточку, не заморачиваясь со сложными конструкциями. Ну, разве что убедиться, что где-то на пути данных есть кэш и каждая последовательная 100-байтная запись в лог не приводит к новой перезаписи всего блока.

AlexM ★★★★★
() автор топика
Ответ на: комментарий от AlexM

дозаписывать данные в места, которые еще не были записаны в блоке можно.
проблема что ячейку нельзя перезаписать т.е нельзя вторично записать данные в ту же ячейку.
вместо этого блок должен быть «сброшен» и только после этого можно сделать запись, однократную. а блок делают большим, в сотни килобайт, поэтому измененные данные пишутся в новый блок, а оставшиеся просто отмечаются «мусорными» «для удаления» и такой мусор начинается забивать свободное место.
при очистки блоки, когда часть блока «мусор», а часть «живо» и начинают гемороить - чтобы очистить надо оставшуюся часть обрезков переместить в новый блок, а это лишние записи, лишние операции…

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

pfg ★★★★★
()
Последнее исправление: pfg (всего исправлений: 1)