Зберігання журналів Linux в RAM


Я тут недавно вимкнув SELinux і був не очікувано здивований приростом швидкості системи - адже цей "захист" постійно індексує ноди файлової системи і якщо на SSD цим можна знехтувати, то на HDD це перетворюється в пекло, особливо під час активної роботи з масивними репозиторіями Git.


Детальніше про вимкнення (на фоні енергетичної кризи) я описував одному з пунктів матеріалу:

Оптимізація швидкодії та енергоефективності GNOME / Linux


Отже, свій комп'ютер я оптимізував доволі фундаментально, HDD перестав фонити (звук якого для мене став найкращим індикатором того, що з системою щось в біса не так) а на іншому компі - SSD матиме довший термін служби. Тим не менше, залишився ще один момент, про який я знав, але довго відкладав. Ось коротенька довідка що я робив для перенесення журналів до оперативної пам'яті: бо на десктопі - переглядаю ці логи хіба в рамках поточної сесії.


В сучасній Fedora / Linux є два базові різновиди журналів:


journald


Сучасний, бінарний формат журналювання. Переноситься в пам'ять відносно просто:


[Journal]
Storage=volatile
RuntimeMaxUse=512M

Застосування змін:


sudo systemctl restart systemd-journald

rsyslog


Класичний варіант текстових журналів. Тут я підміняю системний /var/log на змонтований в нього tmpfs:

https://en.wikipedia.org/wiki/Tmpfs



tmpfs /var/log tmpfs defaults,noatime,nofail,mode=0777,size=512M 0 0

В рамках поточної сесії, змонтуватись можна командою:


mount -a

Ініціація розташувань


Багато програм (в т.ч. і моїх) не створюють кінцеві точки журналювання, тому для них потрібно заздалегідь створити теки з відповідними правами:


# Тип  Шлях                       Права  Користувач  Група                   Час_життя
d      /var/log/audit             0750   root        root                    -
d      /var/log/dbus              0755   root        root                    -
d      /var/log/gdm               0711   root        gdm                     -
d      /var/log/journal           0755   root        systemd-journal         -
d      /var/log/lastlog           0664   root        utmp                    -
d      /var/log/libvirt           0755   root        root                    -
d      /var/log/lightdm           0711   root        root                    -
d      /var/log/ppp               0750   root        root                    -
d      /var/log/samba             0755   root        root                    -
d      /var/log/sssd              0750   root        root                    -
d      /var/log/swtpm             0750   tss         tss                     -
d      /var/log/glusterfs         0755   root        root                    -

# Створення порожніх файлів для системних звітів
f      /var/log/wtmp              0664   root        utmp                    -
f      /var/log/btmp              0660   root        utmp                    -
f      /var/log/lastlog           0664   root        utmp                    -

# Інше
d      /var/log/psocks     0755   psocks             psocks                  -
d      /var/log/ytd        0755   ytd                ytd                     -

Застосування змін:


sudo systemd-tmpfiles --create

Бонус


По аналогії, можна відправити в пам'ять будь яку теку: наприклад як мені нагадали, `~/.cache`

https://devzone.org.ua/post/zberihannia-zurnaliv-linux-v-ram#comment-448


На мою думку, її варто робити тимчасовою вибірково - адже деякі програми будуть надмірно навантажувати CPU при генерації індексів, прев'ю зображень та іншого кешу після рестарту системи. До того ж тека займає чимало місця і може потребувати від 5-20G RAM, інакше дані все одно підуть на диск, зповільнивши роботу основних програм.


Кому цікавий такий напрямок:


tmpfs /home/USER/.cache tmpfs defaults,noatime,nofail,mode=0700,uid=1000,gid=1000,size=4G 0 0

На Wayland/Fedora, після цього в деяких програмах відпала клавіатура. Повернув її так:


Firefox


Актуально лише для старого ESR 115:

Мій форк i2pdbrowser для приватно-орієнтованого Веб


Exec=env MOZ_ENABLE_WAYLAND=1 firefox

Codium


Exec=/usr/share/codium/codium --ozone-platform=wayland %F


/uk/