Tunel prestane prijímať spojenia, služba sa dvakrát reštartuje a potom sa v jej logu nič neobjaví. To ticho je stopa, pretože disk zaplnil práve log a démon nemá kam zapísať chybu, na ktorú čakáte. Do takého stavu sa môže dostať každá dlho bežiaca služba a zmazanie adresára s názvom logs to málokedy opraví. Trvalým riešením je vedieť, ktoré úložisko narástlo, kto vlastní politiku jeho uchovávania a či zapisovateľ priestor naozaj uvoľnil.

Nájdite úložisko, ktoré narástlo, a tempo, akým rástlo

Začnite dvoma číslami, na ktoré sa ľahko zabúda: voľné bloky a voľné inody. Súborový systém môže hlásiť dostatok miesta a napriek tomu odmietnuť zápis, pretože mu došli inody, čo sa stane, keď služba vytvára jeden súbor na reláciu. Pýtajte sa na oba údaje na tom istom zväzku, pretože odpovede sa môžu rozísť ešte v ten istý deň. Urobte to, kým je hostiteľ zdravý, aby čísla opisovali bežnú prevádzku a nie výpadok.

df -h /var
df -i /var

Potom rast priraďte vlastníkovi. Vlastný údaj o spotrebe journalu pokrýva len journal a nikdy neuvidí démona, ktorý zapisuje do cesty zo svojho konfiguračného súboru.

journalctl --disk-usage

Rast v čase povie viac ako akékoľvek jednotlivé meranie. Ponechaná úroveň ladenia, slučka opakovaní, ktorá loguje každý pokus, alebo zachytávací súbor, ktorý nikto nezastavil: každé z toho môže v jednej chvíli vyzerať obyčajne a o hodinu znepokojujúco. Urobte jedno meranie, počkajte cez rušné obdobie, urobte druhé a vydeľte intervalom. Tempo, ktoré viete pomenovať, mení kapacitu na rozhodnutie, nie na požiar.

Čo robí rotácia s otvoreným súborom

Logovací súbor je názov ukazujúci na inode a miesto sa vráti len vtedy, keď sa zatvorí posledný otvorený deskriptor. Premenujte súbor a zapisovateľ ďalej plní ten istý inode; zmažte ho a zapisovateľ ďalej plní inode úplne bez mena. Preto veta „zmazal som súbor a disk zostal plný“ opisuje deskriptory súborov, nie pokazený súborový systém. Reštart zapisovateľa alebo voľba režimu rotácie, ktorý súbor znovu otvorí, je to, čo bloky skutočne vráti.

lsof +L1 | head

Politika patrí komponentu, ktorý súbor zapisuje. Journal vynucuje svoje vlastné limity úložiska zo svojho konfiguračného súboru, zatiaľ čo služba založená na súboroch sa zvyčajne spolieha na logrotate, buď s pravidlom vytvorenia a signálom na znovuotvorenie, alebo s režimom skrátenia na mieste, keď zapisovateľ nemôže znovu otvoriť. Najprv rozhodnutie potvrďte bez toho, aby ste čokoľvek zmenili:

logrotate -d /etc/logrotate.conf

Kam limit patrí a aký veľký má byť

Umiestnite limit tam, kde je nakonfigurovaný zapisovateľ, nie do prípojného bodu. Kvóta na celý zväzok chráni hostiteľa, ale nehovorí, ktorá služba zlyhá prvá, a globálny čistiaci skript zvyčajne zmaže dôkazy, ktoré bude potrebovať ďalší incident. Limit journalu, počet rotácií s maximálnou veľkosťou a uchovávanie na úrovni aplikácie: každé obmedzuje jedného producenta. Spolu obmedzujú celok; samostatne je každé odhad.

Veľkosť limitu určte z doby uchovávania, ktorú viete obhájiť, nie z voľného miesta. Ak revízia potrebuje týždeň pokusov o pripojenie, journal musí udržať týždeň pri najsilnejšom očakávanom tempe, a to tempo je číslo zmerané skôr.

Ladiaci log je dočasný režim so zaznamenaným časom spustenia, nie plán úložiska. Otázku súkromia držte v tom istom rozhodnutí, pretože logy pripojení nesú adresy a identifikátory. Dlhšie uchovávanie je aj voľba nakladania s údajmi a mal by ju urobiť niekto, kto pozná obe obmedzenia.

Overte limit po reštarte

Zmena uchovávania, ktorá vydrží do ďalšieho reštartu, nie je zmena. Reštartujte zapisovateľa, potvrďte, že nový limit platí, a overte, že rotácia potom stále beží. Pri journale na obe otázky odpovie jeden reštart a jedno meranie spotreby:

systemctl restart systemd-journald
journalctl --disk-usage

Pri službe založenej na súboroch spustite rotáciu raz ručne a potvrďte, že súbor bol nahradený a deskriptor znovu otvorený. Zapisovateľ, ktorý drží starý deskriptor, prejde povrchnou kontrolou a zlyhá nabudúce, keď sa zväzok zaplní. Počas testu sledujte voľné miesto, pretože súbor, ktorý sa zmenšil, ale miesto sa nevrátilo, znamená, že starý inode sa stále drží.

Porovnajte ďalšie meranie s týmto

Vráťte sa po týždni a porovnajte tempo rastu so zaznamenaným. Zhodné tempo znamená, že limit drží a záťaž je stabilná; zdvojnásobené tempo znamená, že sa niečo zmenilo, a užitočná otázka je čo. Najprv si prečítajte obsah logu kvôli opakovaným zlyhaniam, pretože slučka opakovaní je zároveň príznakom aj príčinou objemu. Potom skontrolujte všetko novo zapnuté, vrátane úrovní ladenia zapnutých počas incidentu a nikdy nevypnutých.

Zálohy držte mimo toho istého zväzku, alebo prijmite, že jeden plný disk vezme zálohu so sebou. Kópia zapísaná na hostiteľa, ktorého chráni, nie je plán obnovy, a jej uchovávanie potrebuje vlastnú odpoveď.

Zapíšte, čo sa uchováva, kde, ako dlho a kto to odstraňuje. Tá veta je výstup a je jedinou časťou tejto práce, ktorá prežije ďalší reštart.

Súvisiace články