Tunel prestaje primati veze, servis se restartuje dva puta, a zatim se u njegovom logu ništa ne pojavljuje. Ta tišina je trag, jer log je ono što je napunilo disk i daemon nema gdje zapisati grešku koju čekate. Svaki dugotrajni servis može doći u to stanje, a brisanje direktorija zvanog logs to rijetko popravlja. Trajno rješenje je znati koje je skladište naraslo, ko posjeduje politiku njegovog zadržavanja i da li je pisac zaista pustio prostor.

Nađite skladište koje je naraslo i brzinu kojom je raslo

Počnite s dva broja koja se lako zaborave: slobodni blokovi i slobodni inode. Fajl sistem može prijaviti mnogo prostora i ipak odbiti upis jer mu nije ostao nijedan inode, a to se dešava kada servis stvara po jedan fajl za svaku sesiju. Zatražite oba očitanja na istom volumenu, jer se odgovori mogu razići istog popodneva. Uradite to dok je host zdrav, da brojevi opisuju normalan rad, a ne ispad.

df -h /var
df -i /var

Zatim pripišite rast vlasniku. Vlastita brojka potrošnje journala pokriva samo journal i nikada neće vidjeti daemon koji piše na putanju iz svoje konfiguracijske datoteke.

journalctl --disk-usage

Rast tokom vremena govori više od bilo kojeg pojedinačnog očitanja. Ostavljen nivo za otklanjanje grešaka, petlja ponovnih pokušaja koja bilježi svaki pokušaj ili datoteka snimka koju niko nije zaustavio: svako od toga može izgledati obično u jednom trenutku i zabrinjavajuće sat kasnije. Uzmite jedno očitanje, sačekajte kroz zauzet period, uzmite drugo i podijelite s intervalom. Brzina koju možete navesti pretvara kapacitet u odluku, a ne u požar.

Šta rotacija radi s otvorenom datotekom

Log datoteka je ime koje pokazuje na inode, a prostor se vraća tek kada se zatvori posljednji otvoreni rukovalac. Preimenujte datoteku i pisac nastavlja puniti isti inode; izbrišite je i pisac nastavlja puniti inode bez ikakvog imena. Zbog tog stanja rečenica „izbrisao sam datoteku, a disk je ostao pun“ opisuje datotečne deskriptore, a ne pokvaren fajl sistem. Restartovanje pisca ili izbor načina rotacije koji ponovo otvara datoteku vraća blokove.

lsof +L1 | head

Politika pripada komponenti koja piše datoteku. Journal nameće vlastita ograničenja skladištenja iz svoje konfiguracijske datoteke, dok se servis zasnovan na datotekama obično oslanja na logrotate, bilo s pravilom stvaranja i signalom za ponovno otvaranje, bilo s načinom skraćivanja na mjestu kada pisac ne može ponovo otvoriti. Prvo potvrdite odluku bez ikakvih promjena:

logrotate -d /etc/logrotate.conf

Gdje ograničenje pripada i koliko veliko treba biti

Postavite ograničenje tamo gdje je pisac konfigurisan, a ne na tački montiranja. Kvota na cijeli volumen štiti host, ali ne kaže koji servis prvi pada, a globalna skripta za čišćenje obično briše dokaze potrebne sljedećem incidentu. Ograničenje journala, broj rotacija s najvećom veličinom i zadržavanje na nivou aplikacije: svako ograničava jednog proizvođača. Zajedno ograničavaju ukupno; pojedinačno je svako nagađanje.

Odredite veličinu ograničenja prema roku zadržavanja koji možete braniti, a ne prema slobodnom prostoru. Ako je za pregled potrebna sedmica pokušaja povezivanja, journal mora držati sedmicu pri najzauzetijoj očekivanoj brzini, a ta brzina je broj izmjeren ranije.

Log za otklanjanje grešaka je privremeni način rada sa zabilježenim vremenom početka, a ne plan skladištenja. Držite pitanje privatnosti unutar iste odluke, jer logovi veza nose adrese i identifikatore. Duže zadržavanje je i izbor obrade podataka i treba ga donijeti neko ko poznaje oba ograničenja.

Provjerite ograničenje nakon restarta

Promjena zadržavanja koja traje do sljedećeg restarta nije promjena. Restartujte pisca, potvrdite da novo ograničenje vrijedi i provjerite da rotacija i dalje radi nakon toga. Za journal, jedan restart i jedno očitanje potrošnje odgovaraju na oba pitanja:

systemctl restart systemd-journald
journalctl --disk-usage

Za servis zasnovan na datotekama pokrenite rotaciju jednom ručno i potvrdite da je datoteka zamijenjena i deskriptor ponovo otvoren. Pisac koji drži stari rukovalac prolazi površnu provjeru i pada sljedeći put kada se volumen napuni. Gledajte slobodan prostor tokom testa, jer datoteka koja se smanjila dok se prostor nije vratio znači da se stari inode još drži.

Uporedite sljedeće očitanje s ovim

Vratite se nakon sedmice i uporedite brzinu rasta sa zabilježenom. Odgovarajuća brzina znači da ograničenje drži i da je opterećenje stabilno; udvostručena brzina znači da se nešto promijenilo, a korisno pitanje je šta. Prvo pročitajte sadržaj loga radi ponovljenih grešaka, jer je petlja ponovnih pokušaja istovremeno simptom i uzrok obima. Zatim provjerite sve novopokrenuto, uključujući nivoe za otklanjanje grešaka uključene tokom incidenta i nikada isključene.

Držite sigurnosne kopije van istog volumena ili prihvatite da jedan pun disk nosi kopiju sa sobom. Kopija zapisana na host koji štiti nije plan oporavka, a njeno zadržavanje traži vlastiti odgovor.

Zapišite šta se zadržava, gdje, koliko dugo i ko to uklanja. Ta rečenica je isporuka i jedini je dio ovog posla koji nadživi sljedeći restart.

Povezani članci