Imenik članaka
Prije par dana, prijatelj mi je kasno navečer poslao poruku da mu se server srušio.
Specifični simptomi bili su posebno bizarni: web stranica je odjednom počela izbacivati greške, zapisivanje logova nije bilo moguće, a stvaranje novih datoteka odmah bi prikazivalo da je disk pun.
Ali kada je provjerio s `df -h`, bio je šokiran kad je otkrio da disk očito ima desetke gigabajta slobodnog prostora. Kako je moguće da je pun?
Rekao sam mu odmah tada i tamo: "Brate, nisi samo pun prostora za pohranu, tvoj inode je preopterećen."
Odgovorio je upitnikom: Što je točno Inode?
Zapravo, mnogi ljudi reagiraju potpuno isto kao i on kada su prvi put upali u ovu zamku, jer ih nitko u školi nikada nije naučio tim stvarima.
Prvo razjasnimo što je Inode.
Zamislite to kao indeksnu karticu knjižnice i bit će lako razumjeti.
Prostor na disku je poput police za knjige; koliko knjiga možete staviti na nju ovisi o njezinom kapacitetu, što je svima lako razumjeti.
Inode je poput indeksne kartice za svaku knjigu, koja bilježi njezino ime, lokaciju i tko 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, sustav će i dalje koristiti indeksnu karticu za nju.
Sustav ima ograničenje ukupnog broja datoteka koje može stvoriti; to ograničenje je ukupan broj innode-ova.
Nakon što se inode potroši, čak i ako na disku još uvijek ima stotine gigabajta slobodnog prostora, operativni sustav će odbiti stvaranje novih datoteka.
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 stvarno nezgodna situacija jer se poruka o pogrešci šalje s lokacije koju ne gledate.
Prvi trik je korištenje `df -i` za brzi pregled.
U HestiaCP okruženju, možete se jednostavno prijaviti u terminal putem SSH-a i upisati ovaj redak.
df -iNavest će ukupan broj unutarnjih čvorova, korišteni broj i preostali broj za svaku montiranu particiju.
U izlazu se nalazi stupac pod nazivom IUse%, što je ključna metrika na koju biste trebali paziti.
Ako IUse% particije dosegne 100%, čak i ako ta particija još uvijek ima dovoljno prostora na disku, više neće moći stvarati nove datoteke ili zapisnike.
Predložio sam prijatelju da prvo pokrene ovo, kako bi se u trenu utvrdilo je li problem s inodeom , što bi bilo puno 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 s innode-om, sljedeći korak je otkriti tko 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 -lZamijenite "korisničko ime" i "naziv vaše domene" svojom stvarnom putanjom. Čisti broj koji vraća terminal je zbroj svih datoteka i mapa u tom direktoriju.
Svaka datoteka ili direktorij odgovara jednom inodeu, tako da ovaj broj predstavlja korištenje inodea.

Ako ste previše lijeni da biste provjeravali svaku pojedinačno i želite vidjeti raspodjelu korištenja svih korisnika na cijeloj web stranici odjednom, postoji i jedna naredba petlje.
for d in /home/*; do echo -n "$d: "; find "$d" 2>/dev/null | wc -l; doneOvaj redak ć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 koje troše najviše joda.
Ponekad znate da web stranica ima smiješno visoke vrijednosti Inode-a, ali i dalje ne možete shvatiti što nije u redu s ekranom punim datoteka.
U takvim slučajevima morate se pomaknuti jednu razinu niže kako biste pronašli podmape koje sadrže veliki broj malih datoteka, kao što su direktoriji predmemorije, direktoriji sesija i direktoriji zapisnika - 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 10Ova naredba će navesti 10 podmapa koje troše najviše datoteka.
Put na samom vrhu popisa je mjesto gdje je grupiran veliki broj malih datoteka.
Rekao sam prijatelju da je vjerojatno neki dodatak za predmemoriranje koji potajno generira male datoteke, a pokretanje ove linije bi to u osnovi potvrdilo.
Četvrti savjet je provjeriti ograničenje kvote pomoću repquota.
Ako vaš poslužitelj ima omogućene kvote Linux datotečnog sustava, problem možete sagledati iz drugačije perspektive.
repquota -aOva naredba će prikazati ograničenje datoteke i stvarnu upotrebu datoteka za sve korisnike.
Obratite posebnu pozornost na odjeljak Ograničenja datoteka u izlazu; stupac korišteno označava koliko je datoteka korišteno.
Stupci "meko" i "tvrdo" predstavljaju pragove mekog i tvrdog ograničenja. Nakon što "korišteno" dosegne "tvrdo", sustav će izravno odbiti stvaranje novih datoteka.
Ovo je potpuno druga priča od toga koliko vam je prostora ostalo na disku.
Za kraj, povežimo točke istrage.
Vratimo se prijatelju koji je srušio server usred noći na početku.
Slijedio je četiri koraka koja sam opisao, počevši s `df -i` kako bi potvrdio da je inod doista pun.
Zatim smo, koristeći find, pronašli direktorij predmemorije napuštene stare web stranice koja je generirala male datoteke kao luda.
Konačno, provjera `repquota` potvrdila je da je doista dosegnuta fiksna granica.
Nakon što je očistio tu hrpu smeća iz predmemorije, web stranica se odmah vratila u život.
Stoga sljedeći put kada se suočite s ovom čudnom situacijom u kojoj "disk očito ima prostora, ali ne možete pisati datoteke", nemojte žuriti s dodavanjem tvrdog diska.
Prvo, upotrijebite `df -i` da pogledate inode; istina bi vrlo vjerojatno 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 sustava korisniji od pamćenja stotinu popisa za optimizaciju.
Nadam se da će vam članak "Kako provjeriti korištenje Inode-a u HestiaCP-u? Krivac za dostupnost prostora na disku, ali nemogućnost pisanja datoteka" podijeljen na Chen Weiliangovom blogu ( https://www.chenweiliang.com/ ) biti koristan.
Slobodno podijelite poveznicu na ovaj članak: https://www.chenweiliang.com/cwl-34619.html
