Tunnelen sluttar å ta imot tilkoplingar, tenesta startar på nytt to gonger, og deretter viser det seg ingenting i loggen hennar. Den stilla er sporet, for det er loggen som fylte disken, og daemonen har ingen stad å skrive feilen du ventar på. Kvar langvarig teneste kan nå den tilstanden, og det hjelper sjeldan å sletta ein katalog som heiter logs. Den varige løysinga er å vita kva lager som voks, kven som eig oppbevaringspolitikken, og om skrivaren faktisk sleppte plassen.

Finn lageret som voks, og raten det voks med

Start med to tal som er lette å gløyme: ledige blokker og ledige inodar. Eit filsystem kan rapportere god plass og likevel nekte ei skriving fordi det ikkje har fleire inodar att, noko som skjer når ei teneste opprettar éi fil per økt. Spør etter båe avlesingane på same volumet, for svara kan vere usamde same ettermiddag. Gjer det medan verten er frisk, slik at tala skildrar normal drift og ikkje eit avbrot.

df -h /var
df -i /var

Tildel deretter veksten til ein eigar. Journalen sitt eige forbrukstal dekkjer berre journalen, og det kjem aldri til å sjå ein daemon som skriv til ein sti frå konfigurasjonsfila si.

journalctl --disk-usage

Vekst over tid seier meir enn noka einskild avlesing. Eit debug-nivå som vart ståande på, ei gjentakingsløkke som loggar kvart forsøk, eller ei opptaksfil ingen stoppa: kvar av dei kan sjå vanleg ut i eit augneblink og alarmarande ein time seinare. Ta éi avlesing, vent gjennom ein travel periode, ta ei ny, og del på intervallet. Ein rate du kan oppgje gjer kapasitet til ei avgjerd i staden for ein brann.

Kva rotasjon gjer med ei open fil

Ei loggfil er eit namn som peikar på ein inode, og plassen kjem først attende når det siste opne handtaket blir lukka. Gi fila nytt namn, og skrivaren held fram med å fylle same inode; slett ho, og skrivaren held fram med å fylle ein inode heilt utan namn. Den tilstanden er grunnen til at «eg sletta fila, og disken vart verande full» skildrar filskildringar og ikkje eit øydelagt filsystem. Å starte skrivaren på nytt, eller velje ein rotasjonsmodus som opnar fila på nytt, er det som faktisk gir blokkene attende.

lsof +L1 | head

Policyen høyrer til komponenten som skriv fila. Journalen handhevar sine eigne lagergrenser frå konfigurasjonsfila si, medan ei filbasert teneste vanlegvis stolar på logrotate, anten med ein opprettingsregel og eit gjenopningssignal eller med ein modus som kuttar på staden når skrivaren ikkje kan gjenopne. Stadfest avgjerda utan å endre noko først:

logrotate -d /etc/logrotate.conf

Kvar grensa høyrer heime, og kor stor ho bør vere

Set taket der skrivaren er konfigurert, ikkje ved monteringspunktet. Ein kvote på heile volumet vernar verten, men seier ingenting om kva teneste som feilar først, og eit globalt oppryddingsskript har ein tendens til å slette prova neste hending treng. Eit journaltak, eit rotasjonstal med ei maksimal storleik og oppbevaring på applikasjonsnivå avgrensar kvar sin produsent. Saman avgrensar dei totalen; åleine er kvar ei gjetning.

Dimensjoner taket ut frå oppbevaringa du kan forsvare, ikkje frå den ledige plassen. Viss ein gjennomgang treng ei veke med tilkoplingsforsøk, må journalen halde ei veke ved den travlaste forventa raten, og den raten er talet som vart målt tidlegare.

Debug-loggføring er ein mellombels modus med eit registrert starttidspunkt, ikkje ein lagerplan. Hald personvernspørsmålet inne i same avgjerda, for tilkoplingsloggar ber adresser og identifikatorar. Lengre oppbevaring er også eit val om databehandling, og det bør takast av nokon som kjenner båe avgrensingane.

Stadfest taket etter ein omstart

Ei endring i oppbevaring som varer til neste omstart, er ikkje ei endring. Start skrivaren på nytt, stadfest at den nye grensa gjeld, og sjekk at rotasjonen framleis køyrer etterpå. For journalen svarar éin omstart og éi forbruksavlesing på båe spørsmåla:

systemctl restart systemd-journald
journalctl --disk-usage

For ei filbasert teneste, køyr rotasjonsjobben éin gong for hand og stadfest at fila vart erstatta og filskildringa gjenopna. Ein skrivar som held på det gamle handtaket, går gjennom ein overflatisk kontroll og feilar neste gong volumet blir fylt. Følg med på ledig plass under testen, for ei fil som krympa medan plassen ikkje kom attende, tyder på at den gamle inoden framleis blir halden.

Samanlikn neste avlesing med denne

Kom attende etter ei veke og samanlikn vekstraten med den registrerte. Ein tilsvarande rate tyder på at taket held og arbeidsbelastninga er stabil; ein dobla rate tyder på at noko endra seg, og det nyttige spørsmålet er kva. Les logginnhaldet for gjentekne feil først, for ei gjentakingsløkke er både eit symptom og ein årsak til volum. Sjekk deretter for alt som nyleg er slått på, inkludert debug-nivå som vart slått på under ei hending og aldri slått av.

Hald sikkerheitskopiar utanfor same volumet, eller godta at éin full disk tar kopien med seg. Ein kopi skriven til verten han vernar om, er ikkje ein gjenopprettingsplan, og oppbevaringa treng sitt eige svar.

Skriv ned kva som blir oppbevart, kvar, kor lenge og kven som fjernar det. Den setninga er leveransen, og ho er den einaste delen av dette arbeidet som overlever neste omstart.

Relaterte artiklar