Moje rozwiązanie dla Raspbian 8.0 (Jessie) oparte na logowaniu do pamięci RAM
Istnieje już pakiet Ramlog Debian i instrukcje instalacji do tego. Jednak to nie zadziałało (Uruchamiam ramlog-tmpfs 2.0.0: Błąd: / var / log jest używany ... [niepowodzenie]).
Używanie iotop -bktoqqq
Odkryłem najczęstszy dostęp do zapisu. Okazuje się, że często zapisuje się również / var / cache / samba /. Więc to również musi trafić do pamięci RAM oprócz / var / tmp /, gdzie będą nowe pliki dziennika.
1. Tworzenie ramdysku
Więc najpierw te dwa wpisy należy dodać do / etc / fstab
:
tmpfs / var / tmp tmpfs size = 10M, nodev, nosuid 0 0tmpfs / var / cache / samba tmpfs size = 5M, nodev, nosuid 0 0
2. Skrypt log2disk
Musimy zapisać ten skrypt w / usr / local / bin / log2disk
, który doda i usunie zawartość wszystkich plików dziennika w / var / tmp / log /
do plików w /var/log/
.
#! / bin / sh # Autor: Frank Breitling <frank.breitling @ gmx.de>DESC = "Przenoszenie zawartości z / var / tmp / log / do / var / log /" if [$ (id -u) -ne 0] then echo "Uruchom jako root" exitfiecho $ DESCexec >> / var / log /log2disk.log 2>&1datecd / var / tmp / for i in log / *; do basename $ i cat $ i >> / var / $ i > $ idone
i uczyń go wykonywalnym sudo chmod + x / usr / local / bin / log2disk
.
3. Dodawanie do crontab
Chcemy uruchamiać ten skrypt co 3 godziny i dodawać tę linię do systemu /etc/crontab
10 * / 3 * * * root / usr / local / bin / log2disk
(Nie zapomnij o ostatnim znaku nowej linii, który jest wymagany przez crontab.)
4. Instalowanie log2disk.service
Musimy stworzyć usługę systemd w /lib/systemd/system/log2disk.service
, która wykonuje ten skrypt przed zamknięciem i ponownym uruchomieniem, aby zawartość pliku dziennika została zachowana:
[Unit] Description = Zapisywanie plików dziennika do diskRequiresMountsFor = / Before = rsyslog.service [Service] Type = oneshotRemainAfterExit = trueExecStart = / bin / trueExecStop = / usr / local / bin / log2disk [Install] WantedBy = multi-user.target
i zainstaluj go z sudo systemctl włącz log2disk
.
5. Wybieranie plików dziennika dla pamięci RAM
Teraz możemy powiedzieć /etc/rsyslog.conf
, które pliki dziennika mają przechowywać w pamięci RAM. Te pliki to auth.log, syslog, daemon.log, user.log i messages
, a dla każdego z ich wpisów zastępujemy ścieżkę log /
przez tmp / log /
na przykład w ten sposób:
auth, authpriv. * /var/tmp/log/auth.log
Gotowe!
Po ponownym uruchomieniu system będzie teraz rejestrował najczęstsze wpisy dziennika w / var / tmp / log
i synchronizował je co 3 godziny, a przed zamknięciem.
Możemy ponownie użyć iotop
, aby znaleźć znacznie zmniejszoną aktywność zapisu, jednak nie powinniśmy się martwić o miganie zielonej diody ACT. Najwyraźniej nie jest to dobry wskaźnik dostępu do zapisu.