Plný disk na serveri: ako obnoviť zápis bez straty dát
Kde hľadať príčinu, keď služba prestane zapisovať. Voľné miesto, inody, otvorené zmazané súbory a opatrný postup pri PostgreSQL.

Úvodná stránka sa ešte načíta, ale aplikácia neuloží formulár a úloha na pozadí zlyhá pri zápise. Jednou z príčin môže byť vyčerpané úložisko. Zmazanie náhodného veľkého súboru môže priniesť len krátku úľavu alebo odstrániť údaje potrebné na obnovu. Najprv zistite, kam služba zapisuje a čo na danom súborovom systéme došlo. Nasledujúce kontroly sú určené pre linuxový server s GNU nástrojmi.
Skontrolujte miesto aj inody na správnom zväzku
Začnite cestou, pri ktorej zápis zlyhal. Pre adresár s logmi môže kontrola vyzerať ako df -h /var/log; pri databáze použite jej skutočný dátový adresár. Výpis ukáže dostupné miesto na súborovom systéme, ktorý danú cestu obsahuje. Voľný priestor na inom zväzku problém nevyrieši.
Doplňte df -i pre tú istú cestu. Súborový systém môže mať voľné bloky, ale vyčerpané inody, teda záznamy s metadátami súborov. Veľké množstvo drobných súborov potom bráni vytvoreniu ďalších. Ak sú oba výpisy v poriadku, pokračujte kontrolou kvót, oprávnení a presnej chyby aplikácie.
Nájdite, čo rastie a kto to drží otvorené
Na GNU systéme pomôže napríklad du -x -h --max-depth=1 /var: zobrazí súčty po adresároch a neprejde na iný súborový systém. Pri nedostatku inodov použite du --inodes --max-depth=1 pre problémový adresár. Cestu prispôsobte výsledku prvej kontroly. Prehľadávajte cielene; veľký strom súborov môže počas incidentu zbytočne zaťažiť úložisko.
Ak df hlási výrazne viac obsadeného miesta, než vysvetľuje du, skontrolujte aj otvorené zmazané súbory cez lsof +L1. Odstránený názov súboru ešte nemusí uvoľniť miesto, ak súbor drží proces. Zistite vlastníka a podľa dokumentácie služby naplánujte znovuotvorenie logu alebo riadený reštart.
Pri databáze chráňte podklady na obnovu
PostgreSQL upozorňuje, že zaplnenie disku s WAL môže viesť k panike a vypnutiu databázového servera. WAL zaznamenáva zmeny potrebné na obnovu po páde. Obsah pg_wal preto ručne nemažte ako bežnú cache.
Praktický postup je dočasne obmedziť nepotrebné dávkové zápisy, uvoľniť overené nepotrebné súbory mimo databázového adresára alebo bezpečne rozšíriť kapacitu. Pri logoch dodržte retenčnú politiku a zachovajte záznamy potrebné na vyšetrenie. Pred odstránením záloh overte, ktoré sú stále potrebné na obnovu a aké ďalšie kópie máte.
Overte zápis a sledujte ďalší rast
Po zásahu znovu zmerajte miesto aj inody. Overte bezpečnú testovaciu operáciu, ktorá skutočne zapisuje, a skontrolujte logy, stav databázy aj čakajúce úlohy. Fungujúca úvodná stránka sama nepotvrdí, že sa obnovilo ukladanie dát.
Upozornenie nastavte podľa času potrebného na zásah a rýchlosti rastu. Rovnaké percento obsadenosti môže pri rôznych objemoch zápisov znamenať odlišnú naliehavosť. Pri každom hlásení má byť zrejmé, ktorého zväzku sa týka a kto vie situáciu riešiť.
- Zistite presnú cestu a chybu pri zápise.
- Skontrolujte voľné bloky aj inody.
- Identifikujte rastúce adresáre a otvorené zmazané súbory.
- Po zásahu overte zápis a nastavte sledovanie ďalšieho rastu.
Čo si odniesť
Pri plnom disku najprv odlíšte nedostatok miesta od vyčerpaných inodov a zistite pôvod rastu. Úspešný zásah obnoví zápis, zachová možnosť obnovy dát a poskytne čas na vyriešenie príčiny.


