Inoded
Antud blogipostitus on 131 kuud vana ning ei pruugi olla enam ajakohane.
Inode ehk index node on UNIX failisüsteemides kasutatav andmestruktuur, mis säilitab informatsiooni failisüsteemi objektide kohta nagu failid, kataloogid, soklid jne. Inodes säilitatkse infot selle kohta, kes on faili omanik, millised on faili õigused, suurus jne. Iga faili, kataloogi ja muu objekti kohta on seega failisüsteemis olemas objekti meta-andmeid säilitav inode. Failisüsteemi objektide arvu üle arvestuse pidamine ei ole normaalolukorras vajalik. Vaevalt, et keegi meist jälgib, palju meie tööarvutis, sülearvutis või nutitelefonis parajasti inodesid kasutusel on. Küll aga tuleb sellega arvestada suuremates serverikeskkondades, sest failisüsteemi objektide arv võib mõjutada serverite töö kvaliteeti märkimisväärselt.
Peamiseks põhjuseks failisüsteemi objektide raiskamisele on halvasti disainitud või bugine tarkvara, mis “lekib” faile programmeerija hoolimatusest või laiskusest (näiteks luuakse ajutisi faile või sessioonifaile mida rakenduse tegutsemise järel ei kustutata). Teiseks põhjuseks on tarkvara, mis disaini järgselt mõeldud pigem väikese hulga andmete säilitamiseks, kuid on leidnud mittesihtpärast kasutust suure hulga andmete töötlemisel, näiteks e-pood, mis säilitab infot kauba kohta flat-failides ja teeb iga pildi kohta neli erinevas resolutsioonis varianti failisüsteemi. Kui sellist rakendust kasutada väikse poe puhul ei ole probleeme, kuid suure poe puhul võib see tekitada miljoneid objekte.
Raiskamisega kaasnevad aga mitmed probleemid, mis mõjutavad teenuse kvaliteeti. Kujutlege näiteks ette olukorda, et klient ise või tema rakendus üritab saada failide nimekirja kataloogist, kus on miljon objekti – kogemus näitab, et see ei õnnestu. Selline kataloog on muutunud sisuliselt tavavahenditega hallatamatuks. Sealt ei saa veebi haldaja tihti isegi faile kustutatud. Süsteemi haldaja jaoks on ebameeldiv olukord, kus sellisest kataloogist on vaja teha varukoopiat või mis veel hullem, taastada seda varukoopiast, see võtab tohutult palju aega ja mõjutab seega otseselt kliendile (või jagatud süsteemi puhul paljudele klientidele) pakutava teenuse kvaliteeti. Veel üks lihtsamini illustreeritav stsenaarium: kui antiviirus kontrollib pidevalt süsteemis olevate failide võimalikku nakatumist viirustega, siis sellisesse miljoni failiga kataloogi sattumisel on viirusetõrje jaoks olukord võrreldav Onu Remuse jutust pärit tõrvanuku külge kinni jäämisega.
Lühidalt taandub võimalik inodede hulga probleem veebilahenduse hügieeni puudumisele ja selle mõjule teenusepakkuja poolsele teenuse kvaliteedile.
Varem oleme Zones inodede probleemidega tegelenud sporaadiliselt, avalikke limiite pole justkui olnud ja oleme igale silma jäänud juhtumile lähenenud individuaalselt – võtnud kliendiga ühendust, nõustanud jne. Selge oli aga see, et ühel hetkel tuleb midagi konkreetsemat ette võtta.
Alustasime Pilveserveritega, mille väljatoomisel sai klientidele kehtestatud konkreetsed inode kasutuse piirangud. Ajutise lahendusena pakkusime klientidele välja võimaluse inodesid nö “juurde osta”, lootuses et väike kulu distsiplineerib ja paneb oma rakenduse hügieeni olulisusele mõtlema. Kogemus oli positiivne. Seetõttu otsustasime, et järgmine kord kui teenuspakette uuendame, lisame inode piirangu suuri probleeme ennetava meetmena ka virtuaalserverile.
Viimase teenuspakettide uuendusega lisasimegi virtuaalserveritele ka inode piirangu, mis esimeses paketis on 150 000, teises 300 000 ja kolmandas 450 000 ühikut. Piirangu eesmärk on panna kliente mõtlema lahenduse ökonoomsele ülesehitusele. Juurdeostmise hinnaks aga määrasime 500 000 inode kohta 10€ + km. Inodede puudus mõjutab sellisel juhul potentsiaalselt vaid umbes 0,4% meie klientidest, mis näitab et raiskamine ei ole õnneks valdav.