Odkud roste obsazení disku VPN serveru a jak ho omezit
Růst logů, přejmenovaný inode a neomezený journal vypadají všechny jako jeden plný disk. Změřte tempo, omezte zapisovatele a limit ověřte po restartu.
Tunel přestane přijímat připojení, služba se dvakrát restartuje a pak se v jejím logu neobjeví nic. To ticho je stopa, protože disk zaplnil právě log a démon nemá kam zapsat chybu, na kterou čekáte. Do takového stavu se může dostat každá dlouho běžící služba a smazání adresáře jménem logs to málokdy opraví. Trvalé řešení je vědět, které úložiště narostlo, kdo vlastní politiku jeho uchovávání a zda zapisovatel prostor skutečně uvolnil.
Najděte úložiště, které narostlo, a tempo, jakým rostlo
Začněte dvěma čísly, na která se snadno zapomíná: volné bloky a volné inody. Souborový systém může hlásit dost místa a přesto odmítnout zápis, protože mu došly inody, což se stane, když služba vytváří jeden soubor na relaci. Ptejte se na oba údaje na stejném svazku, protože odpovědi se mohou rozejít ještě týž den. Udělejte to, dokud je hostitel zdravý, aby čísla popisovala běžný provoz, a ne výpadek.
df -h /var
df -i /varPotom růst přiřaďte vlastníkovi. Vlastní údaj o spotřebě journalu pokrývá jen journal a nikdy neuvidí démona, který zapisuje do cesty ze svého konfiguračního souboru.
journalctl --disk-usageRůst v čase řekne víc než jakékoli jednotlivé měření. Ponechaná úroveň ladění, smyčka opakování, která loguje každý pokus, nebo zachytávací soubor, který nikdo nezastavil: každé z toho může v jednu chvíli vypadat obyčejně a o hodinu později znepokojivě. Udělejte jedno měření, počkejte přes rušné období, udělejte druhé a vydělte intervalem. Tempo, které umíte vyjádřit, mění kapacitu v rozhodnutí, ne v požár.
Co rotace udělá s otevřeným souborem
Logovací soubor je jméno ukazující na inode a místo se vrátí jen tehdy, když se zavře poslední otevřený deskriptor. Přejmenujte soubor a zapisovatel dál plní stejný inode; smažte ho a zapisovatel dál plní inode úplně bez jména. Kvůli tomu věta „smazal jsem soubor a disk zůstal plný“ popisuje deskriptory souborů, ne rozbitý souborový systém. Restart zapisovatele nebo volba režimu rotace, který soubor znovu otevře, je to, co bloky skutečně vrátí.
lsof +L1 | headPolitika patří komponentě, která soubor zapisuje. Journal vynucuje své vlastní limity úložiště ze svého konfiguračního souboru, zatímco služba založená na souborech se obvykle spoléhá na logrotate, buď s pravidlem vytvoření a signálem pro znovuotevření, nebo s režimem zkrácení na místě, když zapisovatel nemůže znovu otevřít. Nejprve rozhodnutí potvrďte, aniž byste cokoli měnili:
logrotate -d /etc/logrotate.confKam limit patří a jak velký má být
Umístěte limit tam, kde je nakonfigurován zapisovatel, ne do přípojného bodu. Kvóta na celý svazek chrání hostitele, ale neříká, která služba selže první, a globální čistící skript obvykle smaže důkazy, které bude potřebovat příští incident. Limit journalu, počet rotací s maximální velikostí a uchovávání na úrovni aplikace: každé omezuje jednoho producenta. Dohromady omezují celek; samostatně je každé odhadem.
Velikost limitu určete z doby uchovávání, kterou umíte obhájit, ne z volného místa. Pokud revize potřebuje týden pokusů o připojení, journal musí udržet týden při nejsilnějším očekávaném tempu, a to tempo je číslo změřené dříve.
Ladicí log je dočasný režim se zaznamenaným časem spuštění, ne plán úložiště. Otázku soukromí držte uvnitř stejného rozhodnutí, protože logy připojení nesou adresy a identifikátory. Delší uchovávání je také volba nakládání s daty a měl by ji udělat někdo, kdo zná obě omezení.
Ověřte limit po restartu
Změna uchovávání, která vydrží do příštího restartu, není změna. Restartujte zapisovatele, potvrďte, že nový limit platí, a ověřte, že rotace potom stále běží. U journalu na obě otázky odpoví jeden restart a jedno měření spotřeby:
systemctl restart systemd-journald
journalctl --disk-usageU služby založené na souborech spusťte rotaci jednou ručně a potvrďte, že soubor byl nahrazen a deskriptor znovu otevřen. Zapisovatel, který drží starý popisovač, projde povrchní kontrolou a selže příště, až se svazek zaplní. Během testu sledujte volné místo, protože soubor, který se zmenšil, ale místo se nevrátilo, znamená, že starý inode je stále držen.
Porovnejte příští měření s tímto
Vraťte se po týdnu a porovnejte tempo růstu se zaznamenaným. Shodné tempo znamená, že limit drží a zátěž je stabilní; dvojnásobné tempo znamená, že se něco změnilo, a užitečná otázka je co. Nejprve si přečtěte obsah logu kvůli opakovaným selháním, protože smyčka opakování je zároveň příznakem i příčinou objemu. Potom zkontrolujte, co bylo nově zapnuto, včetně úrovní ladění zapnutých během incidentu a nikdy nevypnutých.
Držte zálohy mimo stejný svazek, nebo přijměte, že jeden plný disk vezme zálohu s sebou. Kopie zapsaná na hostitele, který chrání, není plán obnovy, a její uchovávání potřebuje vlastní odpověď.
Zapište, co se uchovává, kde, jak dlouho a kdo to odstraňuje. Ta věta je výstup a je jedinou částí této práce, která přežije příští restart.