Hvor VPN-serverens diskvækst kommer fra, og hvordan du begrænser den
Logvækst, en omdøbt inode og en journal uden loft ser alle ud som én fuld disk. Mål hastigheden, sæt et loft over skriveren, og verificér loftet efter en genstart.
Tunnelen holder op med at acceptere forbindelser, tjenesten genstarter to gange, og derefter vises der intet i dens log. Den tavshed er ledetråden, for loggen er det, der fyldte disken, og daemonen har ingen steder at skrive den fejl, du venter på. Enhver langvarig tjeneste kan nå den tilstand, og det hjælper sjældent at slette en mappe, der hedder logs. Den holdbare løsning er at vide, hvilket lager der voksede, hvem der ejer dets opbevaring, og om skriveren faktisk gav slip på pladsen.
Find det lager, der voksede, og den hastighed, det voksede med
Start med to tal, der er lette at glemme: frie blokke og frie inodes. Et filsystem kan rapportere masser af plads og alligevel afvise en skrivning, fordi det ikke har flere inodes tilbage, hvilket sker, når en tjeneste opretter én fil per session. Spørg efter begge aflæsninger på samme diskenhed, for svarene kan være uenige samme eftermiddag. Gør det, mens værten er sund, så tallene beskriver normal drift og ikke et udfald.
df -h /var
df -i /varTildel derefter væksten til en ejer. Journalens eget forbrugstal dækker kun journalen, og det vil aldrig se en daemon, der skriver til en sti fra sin konfigurationsfil.
journalctl --disk-usageVækst over tid siger mere end nogen enkelt aflæsning. Et debug-niveau, der blev ladt tændt, en genforsøgsløkke, der logger hvert forsøg, eller en capture-fil, som ingen stoppede: hver af dem kan se almindelig ud i ét øjeblik og alarmerende en time senere. Tag én aflæsning, vent gennem en travl periode, tag en anden, og divider med intervallet. En hastighed, du kan angive, gør kapacitet til en beslutning i stedet for en brand.
Hvad rotation gør ved en åben fil
En logfil er et navn, der peger på en inode, og pladsen kommer først tilbage, når det sidste åbne håndtag lukkes. Omdøb filen, og skriveren fortsætter med at fylde den samme inode; slet den, og skriveren fortsætter med at fylde en inode helt uden navn. Den tilstand er grunden til, at »jeg slettede filen, og disken blev ved med at være fuld« beskriver filbeskrivelser i stedet for et ødelagt filsystem. Genstart af skriveren eller valg af en rotationstilstand, der genåbner filen, er det, der faktisk giver blokkene tilbage.
lsof +L1 | headPolitikken tilhører den komponent, der skriver filen. Journalen håndhæver sine egne lagerbegrænsninger fra sin konfigurationsfil, mens en filbaseret tjeneste normalt stoler på logrotate med enten en oprettelsesregel plus et genåbningssignal eller en tilstand med afkortning på stedet, når skriveren ikke kan genåbne. Bekræft beslutningen, uden at ændre noget først:
logrotate -d /etc/logrotate.confHvor grænsen hører hjemme, og hvor stor den skal være
Sæt loftet der, hvor skriveren er konfigureret, ikke ved monteringspunktet. En kvote på hele diskenheden beskytter værten, men siger intet om, hvilken tjeneste der fejler først, og et globalt oprydningsscript har tendens til at slette de beviser, den næste hændelse har brug for. Et journal-loft, et rotationstal med en maksimal størrelse og applikationsopbevaring begrænser hver én producent. Sammen begrænser de totalen; alene er hver en gætning.
Dimensionér loftet ud fra den opbevaring, du kan forsvare, ikke ud fra den ledige plads. Hvis en gennemgang kræver en uges forbindelsesforsøg, skal journalen holde en uge ved den travleste forventede hastighed, og den hastighed er det tal, der blev målt tidligere.
Debug-logning er en midlertidig tilstand med et registreret starttidspunkt, ikke en lagerplan. Hold privatlivsspørgsmålet inde i samme beslutning, for forbindelseslogge bærer adresser og identifikatorer. Længere opbevaring er også et valg om databehandling og bør træffes af nogen, der kender begge begrænsninger.
Verificér loftet efter en genstart
En ændring af opbevaring, der holder indtil næste genstart, er ikke en ændring. Genstart skriveren, bekræft at den nye grænse gælder, og kontrollér at rotationen stadig kører bagefter. For journalen besvarer én genstart og én forbrugsaflæsning begge spørgsmål:
systemctl restart systemd-journald
journalctl --disk-usageFor en filbaseret tjeneste skal du køre rotationsjobbet én gang manuelt og bekræfte, at filen blev erstattet, og at filbeskrivelsen blev genåbnet. En skriver, der beholder det gamle håndtag, består en overfladisk kontrol og fejler næste gang, diskenheden fyldes. Hold øje med den ledige plads under testen, for en fil, der blev mindre, mens pladsen ikke kom tilbage, betyder, at den gamle inode stadig holdes.
Sammenlign den næste aflæsning med denne
Kom tilbage efter en uge og sammenlign væksthastigheden med den registrerede. En tilsvarende hastighed betyder, at loftet holder, og at belastningen er stabil; en fordoblet hastighed betyder, at noget ændrede sig, og det nyttige spørgsmål er hvad. Læs loggens indhold for gentagne fejl først, for en genforsøgsløkke er både et symptom og en årsag til volumen. Kontrollér derefter for alt nyligt aktiveret, inklusive debug-niveauer, der blev slået til under en hændelse og aldrig slået fra.
Hold sikkerhedskopier uden for samme diskenhed, eller accepter, at én fuld disk tager sikkerhedskopien med sig. En kopi skrevet til den vært, den beskytter, er ikke en gendannelsesplan, og dens opbevaring kræver sit eget svar.
Skriv ned, hvad der opbevares, hvor, hvor længe, og hvem der fjerner det. Den sætning er leverancen, og den er den eneste del af dette arbejde, der overlever den næste genstart.