2. Kõik on fail

Põhiteadmiste käsiraamatus tutvustasime juba faili omaniku ja õiguste kontseptsioone, aga UNIX® failisüsteemi (see käib ka Linuxi failisüsteemide kohta) täielikuks mõistmiseks on vaja uuesti defineerida vastus küsimusele “Mis on fail?

Siinkohal tähendab “kõiktõepoolest kõike. Kõvaketas, kõvaketta partitsioon, paralleelport, ühendus veebisaidiga, Ethernet-kaart - kõik need on failid. Isegi kataloogid on failid. Linux tunnistab lisaks tavapärastele failidele ja kataloogidele veel paljusid failitüüpe. Pange tähele, et failitüübi all ei mõtle me antud juhul mitte faili sisu tüüpi: GNU/Linuxile ja õigupoolest igale UNIX® süsteemile on fail, olgu see siis PNG-pilt, binaarfail või mis tahes muu fail, lihtsalt baidijada. Failide eristamine sisu järgi on rakenduste mure.

2.1. Erinevad failitüübid

Käsku ls -l andes näete enne kasutamisõigusi sümbolit, mis tähistab failitüüpi. Me oleme juba puutunud kokku kaht tüüpi failidega: tavalised failid (-) ja kataloogid (d). Kui Te failipuus ringi liigute ja kataloogide sisu endale ette lasete näidata, leiate ka muud tüüpi faile:

  1. Sümbolseade: kas spetsiaalsed failid (näiteks /dev/null, millega me juba tutvusime) või välisseadmed (jada- või paralleelpordid), millele on ühine see, et nende sisu (kui neil seda üldse on) ei puhverdata (see tähendab, ei hoita mälus). Selliseid faile tähistatakse tähega c.

  2. Plokkseade: välisseadmed, mille sisu erinevalt sümbolseadmetest alati puhverdatakse. Mõned selle kategooria failid on näiteks kõvakettad, kõvaketta partitsioonid, disketiseadmed, CD-ROM-seadmed ja nii edasi. Plokkseadmed on näiteks /dev/hda ja /dev/sda5. Selliseid faile tähistatakse tähega b.

  3. Nimeviidad: neid faile kasutatakse väga palju Mandriva Linuxi süsteemi käivitamisprotseduurides (vt. Peatükk 11, Käivitusfailid: init sysv). Nagu nimi ütleb, on nende ülesanne linkida failide nimesid, mis tähendab, et nende sisuks ongi viit mingile teisele failile. Nad ei pruugi tingimata viidata olemasolevale failile. Sageli nimetatakse neid pehmeteks linkideks ning neid tähistatakse tähega l.

  4. Nimega torud: kui Te huvi tunnete, siis jah, need on väga sarnased torudele, mida kasutavad shelli käsud, aga neid eristabki just see, et neil on nimed. Siiski on nad haruldased ja on üpris väheusutav, et Te retkel failipuus neid üldse kohtate. Selliseid faile tähistatakse tähega p. Vt. Sektsioon 4, ““Anonüümsed” torud ja nimega torud”.

  5. Soklid: see on kõigi võrguühenduste failitüüp, aga ainult mõnel neist on oma nimi. Pealegi on erinevat tüüpi sokleid ja ainult üht tüüpi soklit saab linkida, aga selle käsitlemine väljub käesoleva käsiraamatu raamest. Selliseid faile tähistatakse tähega s.

Toome iga faili kohta näite:

$ ls -l /dev/null /dev/sda  /etc/rc.d/rc3.d/S20random /proc/554/maps \
/tmp/ssh-queen/ssh-510-agent
crw-rw-rw-    1 root     root       1,   3 May  5  1998 /dev/null
brw-rw----    1 root     disk       8,   0 May  5  1998 /dev/sda
lrwxrwxrwx    1 root     root           16 Dec  9 19:12 /etc/rc.d/rc3.d/
  S20random -> ../init.d/random*
pr--r--r--    1 queen  queen         0 Dec 10 20:23 /proc/554/maps|
srwx------    1 queen  queen         0 Dec 10 20:08 /tmp/ssh-queen/
  ssh-510-agent=
$

2.2. Infosõlmed

Infosõlmed (inode) on kõrvuti paradigmaga “Kõik on fail” veel üks UNIX® failisüsteemi fundamentaalse tähtsusega osa. Sõna infosõlm ehk inode on lühend sõnadest “Information NODE”, mis otsetõlkes tähendabki infosõlme.

Infosõlmed salvestatakse kettale infosõlmetabelina. Need on olemas igat tüüpi failidele, mida saab failisüsteemis salvestada, sealhulgas kataloogidele, nimega torudele, sümbolseadmetele jne. See toob meid teise kuulsa lause juurde: “Infosõlm on fail”. Infosõlmedega identifitseerib UNIX® unikaalselt kõik failid.

Jah, Te saite kõigest õigesti au: UNIX® korral ei identifitseerita faile mitte nime järgi, vaid nende infosõlmenumbri järgi[4]. Selle põhjuseks on asjaolu, et ühel failil võib olla mitu nime või siis ei pruugi tal üldse nime olla. UNIX® korral on failinimi lihtsalt kirje kataloogi infosõlmes. Sellist kirjet nimetatakse lingiks. Vaatame nüüd linke lähemalt.



[4] Oluline: pange tähele, et infosõlmenumbrid on unikaalsed failisüsteemi sees, mis tähendab, et sama numbriga infosõlm võib esineda mõnes muus failisüsteemis. Siin tasub tähele panna erinevusi ketta-infosõlmede ja mälu-infosõlmede vahel. Kui kahel ketta-infosõlmel võib olla ühesugune number, kui nad asuvad erinevas failisüsteemis, siis mälu-infosõlmel on unikaalne number failisüsteemist sõltumata kogu süsteemis. Üks viis unikaalsuse saavutamiseks on näiteks räsida ketta-infosõlmede numbrid plokkseadmete identifikaatoritega.