Ako skontrolujem využitie inódov v HestiaCP? Čo spôsobuje neschopnosť zapisovať súbory, aj keď je na disku dostatok miesta?

Pred pár dňami mi neskoro v noci napísal kamarát, že mu spadol server.

Konkrétne príznaky boli obzvlášť bizarné: webová stránka zrazu začala vyhadzovať chyby, nebolo možné zapisovať protokoly a vytváranie nových súborov okamžite informovalo o plnom disku.

Keď to však skontroloval pomocou príkazu `df -h`, s šokom zistil, že disk má evidentne desiatky gigabajtov voľného miesta. Ako je možné, že je plný?

Hneď na mieste som mu povedal: „Brat, nemáš len plný úložného priestoru, ale aj preťažený tvoj inód.“

Odpovedal otáznikom: Čo je to vlastne inode?

V skutočnosti veľa ľudí reaguje presne rovnako ako on, keď prvýkrát padli do tejto pasce, pretože ich to nikto v škole nikdy nenaučil.

Najprv si objasníme, čo je to Inode.

Predstavte si to ako knižničnú kartičku a bude to ľahké pochopiť.

Priestor na disku je ako knižnica; koľko kníh na ňu môžete umiestniť, závisí od jej kapacity, čo je pre každého ľahko pochopiteľné.

Inode je ako indexová karta pre každú knihu, ktorá zaznamenáva jej názov, umiestnenie a kto ju presunul.

V Linuxe musí každý súbor a každý adresár obsadzovať inode, bez ohľadu na to, aký malý je súbor.

Aj keď je to prázdny súbor, systém preň aj tak spracuje indexovú kartu.

Systém má limit na celkový počet súborov, ktoré môže vytvoriť; tento limit je celkový počet vnútorných uzlov.

Keď sa inode vyčerpá, operačný systém odmietne vytvárať nové súbory, aj keď na disku stále zostávajú stovky gigabajtov voľného miesta.

Nemožno zapisovať protokoly, nemožno vytvárať vyrovnávaciu pamäť a webová stránka úplne zlyhá – to je tá bizarná scéna, ktorej ste svedkami.

Úprimne povedané, je to naozaj zložitá situácia, pretože chybové hlásenie sa odosiela z miesta, na ktoré sa nepozeráte.

Prvým trikom je použiť `df -i` na získanie úplného prehľadu.

V prostredí HestiaCP sa môžete jednoducho pripojiť k terminálu cez SSH a napísať tento riadok.

df -i

Zobrazí sa celkový počet uzlov, použitý počet a zostávajúci počet pre každý pripojený oddiel.

Vo výstupe sa nachádza stĺpec s názvom IUse%, čo je kľúčová metrika, na ktorú by ste mali dávať pozor.

Ak hodnota IUse% oddielu dosiahne 100 %, aj keď má tento oddiel stále dostatok miesta na disku, už nebude môcť vytvárať žiadne nové súbory ani protokoly.

Navrhol som kamarátovi, aby to najprv spustil, aby sa v priebehu sekundy dalo určiť, či je problém s inódom , čo by bolo oveľa rýchlejšie ako hádať.

Druhou metódou je použitie funkcie `find` na presné spočítanie konkrétneho používateľa.

Po potvrdení, že problém je s innode, je ďalším krokom zistiť, kto nadmerne využíva indexovú kartu.

HestiaCP má samostatný domovský adresár pre každého používateľa. Môžete jednoducho spočítať celkový počet súborov a adresárov v konkrétnom adresári webovej stránky.

find /home/用户名/web/你的域名/public_html | wc -l

Nahraďte „používateľské meno“ a „názov vašej domény“ skutočnou cestou. Čisté číslo vrátené terminálom je súčet všetkých súborov a priečinkov v danom adresári.

Každý súbor alebo adresár zodpovedá jednému inode, takže toto číslo predstavuje využitie inode.

Ako skontrolujem využitie inódov v HestiaCP? Čo spôsobuje neschopnosť zapisovať súbory, aj keď je na disku dostatok miesta?

Ak ste príliš leniví kontrolovať každý jednotlivo a chcete vidieť rozloženie používania všetkých používateľov na celom webe naraz, existuje aj príkaz s jedným cyklusom.

for d in /home/*; do echo -n "$d: "; find "$d" 2>/dev/null | wc -l; done

Tento riadok vypíše celkový počet súborov v každom používateľskom adresári v /home, čo uľahčí zistenie, ktorý používateľský adresár má abnormálne vysoký počet súborov.

Treťou stratégiou je identifikovať podadresáre, ktoré spotrebúvajú najviac jódu.

Niekedy viete, že webová stránka má smiešne vysoké hodnoty inódov, ale stále neviete zistiť, čo je zle s obrazovkou plnou súborov.

V takýchto prípadoch je potrebné prejsť o jednu úroveň nižšie, aby ste našli podpriečinky, ktoré obsahujú veľké množstvo malých súborov, ako sú adresáre vyrovnávacej pamäte, adresáre relácií a adresáre protokolov – to sú najproblematickejšie oblasti.

find /home/用户名/web/你的域名/public_html -type d -exec sh -c 'echo -n "{}: "; find "{}" -maxdepth 1 | wc -l' \; | sort -n -r -k 2 | head -n 10

Tento príkaz zobrazí zoznam 10 podpriečinkov, ktoré spotrebúvajú najviac súborov.

Cesta na samom vrchu zoznamu je miesto, kde je zoskupených veľké množstvo malých súborov.

Povedal som kamarátovi, že je to pravdepodobne nejaký doplnok do vyrovnávacej pamäte, ktorý tajne generuje malé súbory, a spustenie tohto riadku by to v podstate potvrdilo.

Štvrtým tipom je skontrolovať limit kvóty pomocou repquota.

Ak má váš server povolené kvóty súborového systému Linux, môžete sa na problém pozrieť z inej perspektívy.

repquota -a

Tento príkaz zobrazí limit súborov a skutočné využitie súborov pre všetkých používateľov.

Venujte zvýšenú pozornosť sekcii Limity súborov vo výstupe; stĺpec „Použité“ označuje, koľko súborov bolo použitých.

Stĺpce „mäkký“ a „tvrdý“ predstavujú prahové hodnoty mäkkého a tvrdého limitu. Keď „použité“ dosiahne hodnotu „tvrdý“, systém okamžite odmietne vytvárať nové súbory.

Toto je úplne iný príbeh, než koľko miesta vám ešte zostalo na disku.

Aby sme to zhrnuli, spojme si body vyšetrovania.

Vráťme sa k kamarátovi, ktorému na začiatku uprostred noci spadol server.

Postupoval podľa štyroch krokov, ktoré som opísal, počnúc príkazom `df -i`, aby potvrdil, že inód je skutočne plný.

Potom sme pomocou funkcie find našli adresár vyrovnávacej pamäte opustenej starej webovej stránky, ktorá generovala malé súbory ako šialená.

Nakoniec kontrola funkcie `repquota` potvrdila, že skutočne dosiahla pevný limit.

Po vyčistení tejto kopy nevyžiadanej vyrovnávacej pamäte sa webová stránka okamžite obnovila.

Takže keď nabudúce narazíte na túto zvláštnu situáciu, kde „disk má evidentne miesto, ale nemôžete zapisovať súbory“, neponáhľajte sa s pridávaním pevného disku.

Najprv použite `df -i` na pohľad na inode; pravda sa môže skrývať na tej indexovej karte, ktorú ste si predtým nikdy nevšimli.

Úprimne verím, že tieto malé kúsky zdravého rozumu skryté v jadre systému sú užitočnejšie ako memorovanie stovky optimalizačných zoznamov.

发表 评论

您的邮箱地址不会被公开。必填项已用*标注

Prejdite na začiatok