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.

Otvorený pevný disk so striebornou platňou na svetlom podklade
Fotografia: Nick / Unsplash

Ú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.

Dokumentácia a ďalšie čítanie

Mgr. Martin Hlavaj, MBA

Softvérový inžinier

Všetky články

O výpadku sa dozviete včas.

Pridajte svoj web alebo API do UpBota a nastavte, komu príde upozornenie.

Začať monitorovať zadarmo