Kako da provjerim korištenje inode-a u HestiaCP-u? Šta uzrokuje nemogućnost pisanja datoteka čak i kada ima dovoljno prostora na disku?

Prije par dana, prijatelj mi je kasno noću poslao poruku u kojoj je rekao da mu se server srušio.

Specifični simptomi su bili posebno bizarni: web stranica je iznenada počela prijavljivati ​​greške, zapisivanje logova nije bilo moguće, a kreiranje novih datoteka bi odmah prikazivalo da je disk pun.

Ali kada je provjerio sa `df -h`, bio je šokiran kada je otkrio da disk očigledno ima desetine gigabajta slobodnog prostora. Kako je moguće da je pun?

Rekao sam mu odmah tada i na licu mjesta: "Brate, nisi samo pun prostora za pohranu, tvoj inode je preopterećen."

Odgovorio je upitnikom: Šta je tačno Inode?

U stvari, mnogi ljudi reaguju potpuno isto kao i on kada su prvi put upali u ovu zamku, jer ih niko u školi nikada nije naučio ovim stvarima.

Prvo da razjasnimo šta je Inode.

Zamislite to kao bibliotečku karticu i bit će lako razumjeti.

Prostor na disku je kao polica za knjige; koliko knjiga možete staviti na nju zavisi od njenog kapaciteta, što je svima lako razumljivo.

Inode je poput indeksne kartice za svaku knjigu, koja bilježi njeno ime, lokaciju i ko ju je premjestio.

U Linuxu , svaka datoteka i svaki direktorij moraju zauzimati inode, bez obzira koliko je datoteka mala.

Čak i ako je datoteka prazna, sistem će i dalje koristiti indeksnu karticu za nju.

Sistem ima ograničenje ukupnog broja datoteka koje može kreirati; ovo ograničenje je ukupan broj innode-ova.

Nakon što se inode iskoristi, čak i ako na disku još uvijek ima stotine gigabajta slobodnog prostora, operativni sistem će odbiti kreirati nove datoteke.

Zapisnici se ne mogu zapisivati, predmemorija se ne može kreirati, a web stranica se potpuno ruši - to je bizarna scena kojoj svjedočite.

Iskreno, ovo je zaista nezgodna situacija jer se poruka o grešci šalje s lokacije koju ne gledate.

Prvi trik je korištenje `df -i` za dobijanje kompletnog pregleda.

U HestiaCP okruženju, možete jednostavno SSH pristupiti terminalu i upisati ovu liniju.

df -i

Navest će ukupan broj unutarnjih čvorova, broj korištenih i broj preostalih za svaku montiranu particiju.

U izlazu se nalazi kolona pod nazivom IUse%, što je ključna metrika na koju biste trebali obratiti pažnju.

Ako IUse% particije dostigne 100%, čak i ako ta particija još uvijek ima dovoljno prostora na disku, više neće moći kreirati nove datoteke ili logove.

Predložio sam prijatelju da prvo pokrene ovo, kako bi se u trenu utvrdilo da li je problem u inodeu , što bi bilo mnogo brže od nagađanja.

Druga metoda je korištenje funkcije `find` za precizno brojanje određenog korisnika.

Nakon što se potvrdi da je problem u innode-u, sljedeći korak je otkriti ko prekomjerno koristi indeksnu karticu.

HestiaCP ima zaseban početni direktorij za svakog korisnika. Možete jednostavno prebrojati ukupan broj datoteka i direktorija unutar određenog direktorija web stranice.

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

Zamijenite "korisničko ime" i "naziv vaše domene" sa vašom stvarnom putanjom. Čisti broj koji vraća terminal je zbir svih datoteka i foldera u tom direktoriju.

Svaka datoteka ili direktorij odgovara jednom inodeu, tako da ovaj broj predstavlja korištenje inodea.

Kako da provjerim korištenje inode-a u HestiaCP-u? Šta uzrokuje nemogućnost pisanja datoteka čak i kada ima dovoljno prostora na disku?

Ako ste previše lijeni da provjeravate svaku pojedinačno i želite vidjeti distribuciju korištenja svih korisnika na cijeloj web stranici odjednom, postoji i naredba petlje.

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

Ova linija će ispisati ukupan broj datoteka u svakom korisničkom direktoriju pod /home, što olakšava uočavanje koji korisnički direktorij ima neuobičajeno velik broj datoteka.

Treća strategija je identificirati poddirektorije koji troše najviše joda.

Ponekad znate da web stranica ima smiješno visoke vrijednosti Inode-a, ali i dalje ne možete shvatiti šta nije u redu s ekranom punim datoteka.

U takvim slučajevima, potrebno je da se povučete za jedan nivo kako biste pronašli podmape koje sadrže veliki broj malih datoteka, kao što su direktoriji predmemorije, direktoriji sesija i direktoriji dnevnika - to su najproblematičnija područja.

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

Ova naredba će prikazati prvih 10 podfoldera koji koriste najviše datoteka.

Putanja na samom vrhu liste je mjesto gdje je grupiran veliki broj malih datoteka.

Rekao sam prijatelju da je vjerovatno neki dodatak za keširanje koji tajno generira male datoteke, i da bi pokretanje ove linije to u osnovi potvrdilo.

Četvrti savjet je provjera ograničenja kvote pomoću repquota.

Ako vaš server ima omogućene kvote Linux datotečnog sistema, problem možete sagledati iz drugačije perspektive.

repquota -a

Ova naredba će prikazati ograničenje broja datoteka i stvarnu upotrebu datoteka za sve korisnike.

Obratite posebnu pažnju na odjeljak Ograničenja datoteka u izlazu; kolona korišteno označava koliko je datoteka korišteno.

Kolone "mekano" i "tvrdo" predstavljaju pragove mekog i tvrdog ograničenja. Kada "korišteno" dostigne "tvrdo", sistem će direktno odbiti kreiranje novih datoteka.

Ovo je potpuno druga priča od toga koliko vam je prostora ostalo na disku.

Da zaključimo, povežemo tačke istrage.

Vratimo se na prijatelja koji je srušio server usred noći na početku.

Slijedio je četiri koraka koja sam opisao, počevši sa `df -i` kako bi potvrdio da je inod zaista pun.

Zatim, korištenjem metode find, pronađeno je da direktorij predmemorije napuštene stare web stranice generira male datoteke kao lude.

Konačno, provjera `repquota` potvrdila je da je zaista dostigla fiksni limit.

Nakon što je očistio tu hrpu smeća iz keša, web stranica je odmah oživjela.

Dakle, sljedeći put kada se suočite s ovom čudnom situacijom gdje "disk očito ima prostora, ali ne možete pisati datoteke", nemojte žuriti s dodavanjem tvrdog diska.

Prvo, koristite `df -i` da pogledate inode; istina bi vrlo lako mogla biti skrivena na toj indeksnoj kartici koju nikada prije niste primijetili.

Iskreno vjerujem da su ovi mali dijelovi zdravog razuma skriveni u srži sistema korisniji od pamćenja stotinu lista optimizacije.

Komentari

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

Dođite na vrh