Зберігання журналів 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
- розмір і файлову систему обирайте самостійно: їх там багато, але я зупинився на добре знайомій мені `tmpfs` (яка передбачає атрибути і swap при виході за межі `size`)
- при використанні `tmpfs`, фізична пам'ять використовується по мірі заповнення (тобто з 512M, більша її частина буде фактично вільною)
В рамках поточної сесії, змонтуватись можна командою:
mount -a
- інакше зміни застосуються після рестарту системи
- атрибут `nofail` - допоможе не брикнути завантажувач у разі помилки монтування або несправності носія (у цьому випадку - планки пам'яті)
Ініціація розташувань
Багато програм (в т.ч. і моїх) не створюють кінцеві точки журналювання, тому для них потрібно заздалегідь створити теки з відповідними правами:
# Тип Шлях Права Користувач Група Час_життя 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 -
- цей приклад я видер з ШІ, на перший погляд він ОК і після ребуту на Fedora 43 працює, але будьте уважні
- останні два пункти - це залежності мого юзерського софту, які я думаю перемістити до юніта systemd
Застосування змін:
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
- `USER` - поточний користувач
- `uid=1000,gid=1000` - дивимось командою `id USER`
На Wayland/Fedora, після цього в деяких програмах відпала клавіатура. Повернув її так:
Firefox
Актуально лише для старого ESR 115:
Мій форк i2pdbrowser для приватно-орієнтованого Веб
Exec=env MOZ_ENABLE_WAYLAND=1 firefox
Codium
Exec=/usr/share/codium/codium --ozone-platform=wayland %F
/uk/