Straipsnių katalogas
Prieš porą dienų vėlai vakare draugas man parašė žinutę, kad sugedo jo serveris.
Konkretūs simptomai buvo ypač keisti: svetainė staiga pradėjo rodyti klaidas, nebuvo galima rašyti žurnalų, o kuriant naujus failus iš karto buvo pranešama, kad diskas pilnas.
Bet patikrinęs su komanda `df -h`, jis buvo šokiruotas pamatęs, kad diske aiškiai yra dešimtys gigabaitų laisvos vietos. Kaip jis gali būti pilnas?
Aš jam tuoj pat pasakiau: „Broli, tu ne tik neturi daug vietos saugykloje, tavo Inode'as perkrautas.“
Jis atsakė su klaustuku: Kas tiksliai yra inodas?
Iš tiesų daugelis žmonių reaguoja lygiai taip pat, kaip jis, kai pirmą kartą pateko į šiuos spąstus, nes mokykloje jų niekas to nemokė.
Pirmiausia paaiškinkime, kas yra Inode.
Įsivaizduokite tai kaip bibliotekos rodyklės kortelę ir bus lengva suprasti.
Disko vieta yra kaip knygų lentyna; kiek knygų galite joje sudėti, priklauso nuo jos talpos, o tai lengvai suprantama visiems.
Inode yra tarsi kiekvienos knygos indekso kortelė, kurioje įrašomas jos pavadinimas, vieta ir kas ją perkėlė.
„Linux“ sistemoje kiekvienas failas ir kiekvienas katalogas turi užimti inodą, nesvarbu, koks mažas failas.
Net jei tai tuščias failas, sistema vis tiek sunaudos jam skirtą indekso kortelę.
Sistema turi ribą, kiek failų ji gali sukurti; ši riba yra bendras innodų skaičius.
Kai inodas bus panaudotas, net jei diske vis dar bus šimtai gigabaitų laisvos vietos, operacinė sistema atsisakys kurti naujus failus.
Žurnalų negalima rašyti, talpyklos negalima sukurti, o svetainė visiškai užstringa – štai keistas vaizdas, kurį matote.
Sąžiningai, tai tikrai kebli situacija, nes klaidos pranešimas siunčiamas iš vietos, į kurią nežiūrite.
Pirmas triukas – naudoti `df -i`, kad gautumėte greitą apžvalgą.
„HestiaCP“ aplinkoje galite tiesiog prisijungti prie terminalo per SSH ir įvesti šią eilutę.
df -iJame bus nurodytas bendras prijungtų skaidinių skaičius, panaudotų mazgų skaičius ir likęs mazgų skaičius.
Išvestyje yra stulpelis pavadinimu „IUse%“ – tai pagrindinė metrika, į kurią turėtumėte atkreipti dėmesį.
Jei skaidinio IUse% pasiekia 100 %, net jei tame skaidinyje vis dar yra daug vietos diske, jis nebegalės kurti jokių naujų failų ar žurnalų.
Pasiūliau draugui pirmiausia paleisti šį sprendimą, kad per sekundę būtų galima nustatyti, ar problema yra inode , o tai būtų daug greičiau nei spėlioti.
Antrasis metodas yra naudoti funkciją „find“, norint tiksliai suskaičiuoti konkretų vartotoją.
Patvirtinus, kad problema yra su innode, kitas žingsnis yra išsiaiškinti, kas pernelyg naudoja indekso kortelę.
„HestiaCP“ kiekvienam vartotojui turi atskirą pagrindinį katalogą. Galite tiesiog suskaičiuoti bendrą failų ir katalogų skaičių konkrečiame svetainės kataloge.
find /home/用户名/web/你的域名/public_html | wc -lPakeiskite „vartotojo vardą“ ir „jūsų domeno vardą“ savo tikruoju keliu. Terminalo grąžinamas grynas skaičius yra visų failų ir aplankų tame kataloge suma.
Kiekvienas failas arba katalogas atitinka vieną inodą, todėl šis skaičius rodo inodo naudojimą.

Jei esate per tingus tikrinti kiekvieną atskirai ir norite vienu metu matyti visų vartotojų naudojimo pasiskirstymą visoje svetainėje, taip pat yra vieno ciklo komanda.
for d in /home/*; do echo -n "$d: "; find "$d" 2>/dev/null | wc -l; doneŠioje eilutėje bus atspausdintas bendras failų skaičius kiekviename vartotojo kataloge, esančiame /home aplanke, todėl bus lengva pastebėti, kuriame vartotojo kataloge yra neįprastai daug failų.
Trečioji strategija – nustatyti pakatalogius, kurie sunaudoja daugiausia jodo.
Kartais žinote, kad svetainė turi juokingai dideles inode reikšmes, bet vis tiek negalite suprasti, kas negerai, kai ekranas pilnas failų.
Tokiais atvejais reikia įsigilinti vienu lygiu žemyn, kad rastumėte poaplankius, kuriuose yra daug mažų failų, pvz., talpyklos katalogus, sesijų katalogus ir žurnalų katalogus – tai yra problemiškiausios sritys.
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Ši komanda išvardins 10 populiariausių poaplankių, kuriuose yra daugiausia failų.
Kelias pačiame sąrašo viršuje yra vieta, kur sugrupuota daug mažų failų.
Pasakiau draugui, kad tai tikriausiai koks nors talpyklos įskiepis, slapta generuojantis mažus failus, ir šios eilutės paleidimas iš esmės tai patvirtintų.
Ketvirtas patarimas – patikrinti kvotos limitą naudojant „repquota“.
Jei jūsų serveryje įjungtos „Linux“ failų sistemos kvotos, problemą galite pažvelgti iš kitos perspektyvos.
repquota -aŠi komanda parodys visų naudotojų failų limitą ir faktinį failų naudojimą.
Atidžiai atkreipkite dėmesį į išvesties skyrių „Failų limitai“; stulpelis „naudotas“ nurodo, kiek failų buvo panaudota.
Stulpeliuose „soft“ ir „hard“ nurodytos programinės įrangos ribos. Kai „used“ pasiekia „hard“, sistema iš karto atsisakys kurti naujus failus.
Tai visiškai kita istorija nei tai, kiek vietos liko diske.
Apibendrindami, sujungkime tyrimo taškus.
Grįžkime prie draugo, kuris pradžioje vidury nakties sugedo serveryje.
Jis atliko keturis mano aprašytus veiksmus, pradėdamas nuo `df -i`, kad patvirtintų, jog inodas iš tiesų pilnas.
Tada, naudojant „find“ metodą, buvo nustatyta, kad apleistos senos svetainės talpyklos katalogas beprotiškai generuoja mažus failus.
Galiausiai, patikrinus „repquota“, buvo patvirtinta, kad jis iš tiesų pasiekė griežtą ribą.
Išvalius tą šlamšto talpyklos krūvą, svetainė iškart atgijo.
Taigi, kitą kartą susidurdami su šia keista situacija, kai „diske aiškiai yra vietos, bet negalite įrašyti failų“, neskubėkite pridėti standžiojo disko.
Pirmiausia, naudokite `df -i`, kad pažvelgtumėte į inodą; tiesa gali būti paslėpta toje indekso kortelėje, kurios anksčiau nepastebėjote.
Aš nuoširdžiai tikiu, kad šie maži sveiko proto kruopelytės, paslėptos sistemos branduolyje, yra naudingesnės nei šimto optimizavimo sąrašų įsiminimas.
Tikiuosi, kad jums bus naudingas straipsnis „Kaip patikrinti inodo naudojimą HestiaCP? Disko vietos prieinamumo, bet nesugebėjimo rašyti failų priežastis“, pasidalintas Chen Weiliang tinklaraštyje ( https://www.chenweiliang.com/ ).
Nedvejodami pasidalinkite šio straipsnio nuoroda: https://www.chenweiliang.com/cwl-34619.html
