Korkean tason keskustelu Linux-tiedostojärjestelmän käsitteistä

Tämä artikkeli on tarkoitettu hyvin korkean tason keskusteluksi Linux-tiedostojärjestelmän käsitteistä. Sen ei ole tarkoitus olla matalan tason kuvaus siitä, miten tietty tiedostojärjestelmätyyppi, kuten EXT4, toimii, eikä sen ole tarkoitus olla opetusohjelma tiedostojärjestelmäkomennoista.

Jokainen yleiskäyttöinen tietokone joutuu tallentamaan erityyppisiä tietoja kiintolevylle (HDD) tai jollekin muulle vastaavalle, kuten USB-muistitikulle. Tähän on pari syytä. Ensinnäkin RAM-muisti menettää sisältönsä, kun tietokone sammutetaan. On olemassa haihtumattomia RAM-muistityyppejä, jotka voivat säilyttää sinne tallennetut tiedot virran katkaisun jälkeen (kuten flash-muisti, jota käytetään USB-muistitikuissa ja solid state -asemissa), mutta flash-muisti on paljon kalliimpaa kuin tavallinen haihtuva RAM-muisti, kuten DDR3-muisti ja muut samantyyppiset muistitikut.

Toinen syy siihen, että tiedot on tallennettava kiintolevyille, on se, että tavallinenkin RAM-muisti on edelleen kalliimpaa kuin levytila. Sekä RAM-muistin että levyn kustannukset ovat laskeneet nopeasti, mutta RAM-muisti on edelleen kärjessä tavukohtaisten kustannusten suhteen. Nopea laskelma tavukohtaisista kustannuksista, joka perustuu 16 Gt:n RAM-muistin ja 2 Tt:n kiintolevyn kustannuksiin, osoittaa, että RAM-muisti on noin 71 kertaa kalliimpi yksikköä kohti kuin kiintolevy. Tyypillinen RAM-muistin hinta on nykyään noin 0,00000000000043743750 dollaria tavua kohti.

Nopea historiallinen huomautus nykyisten RAM-muistikustannusten suhteuttamiseksi: tietojenkäsittelyn alkuaikoina eräs muistityyppi perustui kuvaputkinäytön pisteisiin. Tämä oli hyvin kallista, noin 1,00 dollaria per bitti!

Määritelmät

Saatat kuulla ihmisten puhuvan tiedostojärjestelmistä monella eri ja hämmentävällä tavalla. Sanalla itsellään voi olla useita merkityksiä, ja saatat joutua erottamaan oikean merkityksen keskustelun tai asiakirjan asiayhteydestä.

Yritän määritellä sanan ”tiedostojärjestelmä” eri merkitykset sen perusteella, miten olen havainnut sitä käytettävän eri tilanteissa. Huomaa, että vaikka pyrin noudattamaan ”virallisia” standardimerkityksiä, tarkoitukseni on määritellä termi sen eri käyttötapojen perusteella. Näitä merkityksiä käsitellään tarkemmin tämän artikkelin seuraavissa osissa.

  1. Koko Linuxin hakemistorakenne alkaen ylimmästä (/) juurihakemistosta.
  2. Tietyntyyppinen datan tallennusmuoto, kuten EXT3, EXT4, BTRFS, XFS ja niin edelleen. Linux tukee lähes 100 erilaista tiedostojärjestelmätyyppiä, mukaan lukien joitakin hyvin vanhoja sekä joitakin uusimpia. Kukin näistä tiedostojärjestelmätyypeistä käyttää omia metatietorakenteitaan määrittelemään, miten dataa tallennetaan ja miten sitä käytetään.
  3. Tietyllä tiedostojärjestelmätyypillä muotoiltu osio tai looginen tilavuus, joka voidaan asentaa tiettyyn Linuxin tiedostojärjestelmän kiinnityspisteeseen.

Tiedostojärjestelmän perustoiminnot

Levyjen tallennus on välttämättömyys, joka tuo mukanaan mielenkiintoisia ja väistämättömiä yksityiskohtia. On selvää, että tiedostojärjestelmä on suunniteltu tarjoamaan tilaa tietojen haihtumattomalle tallennukselle; se on sen perimmäinen tehtävä. Tästä vaatimuksesta seuraa kuitenkin monia muita tärkeitä toimintoja.

Kaikkien tiedostojärjestelmien on tarjottava nimiavaruus eli nimeämis- ja organisointimenetelmä. Tämä määrittelee, miten tiedosto voidaan nimetä, erityisesti tiedostonimen pituuden ja sen merkkien osajoukon, jota voidaan käyttää tiedostonimissä kaikista käytettävissä olevista merkeistä. Se määrittelee myös levyllä olevan datan loogisen rakenteen, kuten hakemistojen käytön tiedostojen järjestämiseen sen sijaan, että ne vain niputettaisiin yhteen yhdeksi valtavaksi tiedostojen konglomeraatioksi.

Nimiavaruuden määrittelyn jälkeen tarvitaan metatietorakenne, joka muodostaa nimiavaruuden loogisen perustan. Siihen kuuluvat hierarkkisen hakemistorakenteen tukemiseen tarvittavat tietorakenteet; rakenteet, joiden avulla määritetään, mitkä levyn tilalohkot ovat käytössä ja mitkä vapaana; rakenteet, jotka mahdollistavat tiedostojen ja hakemistojen nimien ylläpidon; tiedot tiedostoista, kuten niiden koko ja luomis-, muokkaus- tai viimeisimmän käyttökerran ajankohdat; sekä tiedostoon kuuluvan tiedon sijainti tai sijainnit levyllä. Muita metatietoja käytetään tallentamaan korkean tason tietoja levyn osa-alueista, kuten loogisista volyymistä ja osioista. Tämä korkeamman tason metatieto ja sen edustamat rakenteet sisältävät asemalle tai osiolle tallennettua tiedostojärjestelmää kuvaavaa tietoa, mutta ovat erillisiä ja riippumattomia tiedostojärjestelmän metatiedoista.

Tiedostojärjestelmät vaativat myös sovellusohjelmointirajapinnan (Application Programming Interface, API), joka tarjoaa pääsyn järjestelmätoimintokutsuihin, jotka käsittelevät tiedostojärjestelmän objekteja, kuten tiedostoja ja hakemistoja. API:t mahdollistavat esimerkiksi tiedostojen luomisen, siirtämisen ja poistamisen. Se tarjoaa myös algoritmeja, jotka määrittävät esimerkiksi sen, mihin tiedosto sijoitetaan tiedostojärjestelmässä. Tällaiset algoritmit voivat ottaa huomioon sellaisia tavoitteita kuin nopeus tai levyn pirstaloitumisen minimointi.

Nykyaikaiset tiedostojärjestelmät tarjoavat myös suojausmallin, joka on järjestelmä tiedostojen ja hakemistojen käyttöoikeuksien määrittelyyn. Linux-tiedostojärjestelmän turvamalli auttaa varmistamaan, että käyttäjillä on pääsy vain omiin tiedostoihinsa eikä muiden tai itse käyttöjärjestelmän tiedostoihin.

Viimeinen rakennuspalikka on kaikkien näiden toimintojen toteuttamiseen tarvittava ohjelmisto. Linux käyttää kaksiosaista ohjelmistototeutusta keinona parantaa sekä järjestelmän että ohjelmoijan tehokkuutta.


Kuva 1: Linuxin kaksiosainen tiedostojärjestelmän ohjelmistototeutus.

Kaksiosaisen toteutuksen ensimmäinen osa on Linuxin virtuaalinen tiedostojärjestelmä. Tämä virtuaalinen tiedostojärjestelmä tarjoaa ytimelle ja kehittäjille yhden komentosarjan, jolla voidaan käyttää kaikentyyppisiä tiedostojärjestelmiä. Virtuaalitiedostojärjestelmäohjelmisto kutsuu erityisiä laiteajureita, joita tarvitaan erityyppisten tiedostojärjestelmien käyttämiseen. Tiedostojärjestelmäkohtaiset laiteajurit ovat toteutuksen toinen osa. Laiteajuri tulkitsee vakiomuotoiset tiedostojärjestelmäkomennot osiossa tai loogisessa tietueessa olevan tiedostojärjestelmän tyypille ominaisiksi komennoiksi.

Hakemistorakenne

Kuten yleensä hyvin järjestäytynyt Neitsyt, pidän siitä, että asiat tallennetaan mieluummin pienempiin, järjestettyihin ryhmiin kuin yhteen suureen ämpäriin. Hakemistojen käyttö auttaa minua tallentamaan ja sitten löytämään haluamani tiedostot, kun etsin niitä. Hakemistot tunnetaan myös nimellä kansiot, koska niitä voidaan ajatella kansioina, joissa tiedostoja säilytetään eräänlaisessa fyysisen työpöydän analogiassa.

Linuxissa ja monissa muissa käyttöjärjestelmissä hakemistot voidaan jäsentää puumaiseen hierarkiaan. Linuxin hakemistorakenne on hyvin määritelty ja dokumentoitu Linux Filesystem Hierarchy Standard (FHS) -standardissa. Näihin hakemistoihin viitataan niitä käytettäessä käyttämällä peräkkäin syvempiä hakemistojen nimiä, jotka on yhdistetty vinoviivoilla (/), kuten /var/log ja /var/spool/mail. Näitä kutsutaan poluiksi.

Seuraavassa taulukossa on hyvin lyhyt luettelo Linuxin vakiomuotoisista, tunnetuista ja määritellyistä ylimmän tason hakemistoista ja niiden käyttötarkoituksista.

Hakemisto Kuvaus
/ (juuritiedostojärjestelmä) Juuritiedostojärjestelmä eli root-tiedostojärjestelmä (root filesystem)
/ (juuritiedostojärjestelmä) Juuritiedostojärjestelmä (juuritiedostojärjestelmä, root filesystem) on tiedostojärjestelmän ylin hakemistotaso. Sen on sisällettävä kaikki tiedostot, joita tarvitaan Linux-järjestelmän käynnistämiseen, ennen kuin muut tiedostojärjestelmät asennetaan. Sen on sisällettävä kaikki tarvittavat suoritettavat tiedostot ja kirjastot, joita tarvitaan muiden tiedostojärjestelmien käynnistämiseen. Kun järjestelmä on käynnistetty, kaikki muut tiedostojärjestelmät asennetaan vakiomuotoisiin, hyvin määriteltyihin kiinnityspisteisiin juuritiedostojärjestelmän alihakemistoina.
/bin Hakemisto /bin sisältää käyttäjän suoritettavia tiedostoja.
/boot Sisältää Linux-tietokoneen käynnistämiseen tarvittavat staattisen käynnistyslataimen ja ytimen suoritus- ja konfigurointitiedostot.
/dev Tämä hakemisto sisältää laitetiedostot jokaisesta järjestelmään liitetystä laitteistosta. Nämä eivät ole laiteajureita, vaan tiedostoja, jotka edustavat kutakin tietokoneen laitetta ja helpottavat pääsyä näihin laitteisiin.
/etc Sisältää isäntätietokoneen paikalliset järjestelmäkonfiguraatiotiedostot.
/home Kotihakemistoon tallennetaan käyttäjätiedostot. Jokaisella käyttäjällä on alihakemisto /home.
/lib Sisältää jaettuja kirjastotiedostoja, joita tarvitaan järjestelmän käynnistämiseen.
/media Sijaintipaikka ulkoisille irrotettaville medialaitteille, kuten USB-muistitikuille, jotka saatetaan liittää isäntäkoneeseen.
/mnt Tavanomaisten tiedostojärjestelmien (ei siis irrotettavien tietovälineiden) väliaikainen kiinnityspiste, jota voidaan käyttää, kun järjestelmänvalvoja korjaa tai työstää tiedostojärjestelmää.
/opt Vaihtoehtoiset tiedostot, kuten valmistajan toimittamat sovellusohjelmat, tulisi sijoittaa tähän.
/root Tämä ei ole päätiedostojärjestelmä (/). Se on pääkäyttäjän kotihakemisto.
/sbin Järjestelmän binääritiedostot. Nämä ovat järjestelmän hallinnassa käytettäviä suoritettavia ohjelmia.
/tmp Väliaikainen hakemisto. Käyttöjärjestelmän ja monien ohjelmien käyttämä väliaikaisten tiedostojen tallentamiseen. Myös käyttäjät voivat tallentaa tiedostoja tilapäisesti tänne. Huomaa, että tänne tallennetut tiedostot voidaan poistaa milloin tahansa ilman ennakkoilmoitusta.
/usr Täällä säilytetään jaettavissa olevia, vain lukemiseen tarkoitettuja tiedostoja, kuten suoritettavia binääritiedostoja ja kirjastoja, man-tiedostoja ja muita dokumentaatiotyyppejä.
/var Täällä säilytetään muuttuvia tiedostoja. Näitä voivat olla esimerkiksi lokitiedostot, MySQL- ja muut tietokantatiedostot, web-palvelimen datatiedostot, sähköpostin sisääntulotiedostot ja paljon muuta.

Taulukko 1: Linuxin tiedostojärjestelmän ylimmän tason hierarkia.

Taulukossa 1 esitettyjä hakemistoja ja niiden alahakemistoja sekä niiden alahakemistoja, joilla on tiilenpunainen tausta, pidetään juuritiedostojärjestelmän erottamattomana osana. Toisin sanoen niitä ei voida luoda erillisenä tiedostojärjestelmänä ja asentaa käynnistyksen yhteydessä. Tämä johtuu siitä, että niiden (tarkemmin sanottuna niiden sisällön) on oltava läsnä käynnistyshetkellä, jotta järjestelmä käynnistyy kunnolla.

Hakemistot /media ja /mnt ovat osa juuritiedostojärjestelmää, mutta ne eivät saa koskaan sisältää mitään tietoja. Pikemminkin ne ovat vain väliaikaisia kiinnityspisteitä.

Taulukossa 1 ilman taustaväriä olevat muut hakemistot eivät tarvitse olla läsnä käynnistyssekvenssin aikana, vaan ne kiinnitetään myöhemmin, käynnistyssekvenssin aikana, joka valmistelee isäntäkoneen suorittamaan hyödyllistä työtä.

Ole hyvä ja tutustu Linuxin viralliseen tiedostojärjestelmähierarkiastandardin (Filesystem Hierarchy Standard, FHS) WWW-sivuun saadaksesi yksityiskohtaisia tietoja jokaisesta näistä hakemistoista ja niiden lukuisista alikansioista. Wikipediassa on myös hyvä kuvaus FHS:stä. Tätä standardia tulisi noudattaa mahdollisimman tarkasti toiminnallisen ja toiminnallisen yhdenmukaisuuden varmistamiseksi. Riippumatta siitä, mitä tiedostojärjestelmätyyppejä isäntätietokoneessa käytetään, tämä hierarkkinen hakemistorakenne on sama.

Linuxin yhtenäinen hakemistorakenne

Joissain PC-käyttöjärjestelmissä, jotka eivät ole Linux-käyttöjärjestelmiä, jos fyysisiä kiintolevyjä tai osioita on useita, kullekin levylle tai osiolle annetaan asemakirjain. On tarpeen tietää, millä kiintolevyllä tiedosto tai ohjelma sijaitsee, esimerkiksi C: tai D:. Sitten annat aseman kirjaimen komentona, esimerkiksi D: vaihtaaksesi asemalle D:, ja sitten vaihdat cd-komennolla oikeaan hakemistoon halutun tiedoston löytämiseksi. Jokaisella kiintolevyllä on oma erillinen ja täydellinen hakemistopuunsa.

Linuxin tiedostojärjestelmä yhdistää kaikki fyysiset kiintolevyt ja osiot yhdeksi hakemistorakenteeksi. Kaikki alkaa huipulta – juurihakemistosta (/). Kaikki muut hakemistot ja niiden alihakemistot sijaitsevat Linuxin yhden juurihakemiston alla. Tämä tarkoittaa, että on vain yksi ainoa hakemistopuu, josta voi etsiä tiedostoja ja ohjelmia.

Tämä voi toimia vain siksi, että tiedostojärjestelmä, kuten /home, /tmp, /var, /opt tai /usr, voidaan luoda erillisille fyysisille kiintolevyille, eri osiolle tai eri loogiselle volyymille kuin /-(juuri-)tiedostojärjestelmä, ja sen jälkeen se voidaan liittää liitäntäpisteeseen (hakemistoon) osana juuritiedostojärjestelmän puuta. Jopa irrotettavat asemat, kuten USB-muistitikku tai ulkoinen USB- tai ESATA-kiintolevy, asennetaan juuritiedostojärjestelmään ja niistä tulee kiinteä osa tuota hakemistopuuta.

Yksi hyvä syy tähän on ilmeinen päivitettäessä Linux-jakelun versiosta toiseen tai vaihdettaessa jakelusta toiseen. Yleisesti ottaen ja lukuun ottamatta päivitysapuohjelmia, kuten dnf-upgrade Fedorassa, on viisasta ajoittain alustaa käyttöjärjestelmän sisältävä kiintolevy tai kiintolevyt uudelleen päivityksen aikana, jotta voidaan poistaa positiivisesti kaikki ajan mittaan kertynyt roska. Jos /home on osa juuritiedostojärjestelmää, myös se alustetaan uudelleen, ja se on sitten palautettava varmuuskopiosta. Jos /home on erillinen tiedostojärjestelmä, se on asennusohjelman tiedossa erillisenä tiedostojärjestelmänä, ja sen alustaminen voidaan ohittaa. Tämä voi koskea myös /var-tiedostoa, johon tallennetaan tietokanta, sähköpostilaatikot, verkkosivut ja muut muuttuvat käyttäjä- ja järjestelmätiedot.

On muitakin syitä pitää tietyt Linuxin hakemistopuun osat erillisinä tiedostojärjestelminä. Esimerkiksi kauan sitten, kun en vielä ollut tietoinen mahdollisista ongelmista, jotka liittyvät siihen, että kaikki tarvittavat Linux-hakemistot ovat osa / (juuri-)tiedostojärjestelmää, onnistuin täyttämään kotihakemistoni suurella määrällä erittäin suuria tiedostoja. Koska /home-hakemisto ja /tmp-hakemisto eivät olleet erillisiä tiedostojärjestelmiä vaan yksinkertaisesti root-tiedostojärjestelmän alihakemistoja, koko root-tiedostojärjestelmä täyttyi. Käyttöjärjestelmälle ei jäänyt tilaa luoda väliaikaisia tiedostoja tai laajentaa olemassa olevia datatiedostoja. Ensin sovellusohjelmat alkoivat valittaa, että tiedostojen tallentamiseen ei ollut tilaa, ja sitten itse käyttöjärjestelmä alkoi käyttäytyä hyvin oudosti. Kun käynnistin tietokoneen yhden käyttäjän tilaan ja tyhjensin kotihakemistostani haitalliset tiedostot, pääsin taas vauhtiin. Sen jälkeen asensin Linuxin uudelleen käyttäen melko tavallista monitiedostojärjestelmäasetusta ja pystyin estämään järjestelmän täydellisen kaatumisen uudelleen.

Minulla oli kerran tilanne, jossa Linux-isäntä jatkoi toimintaansa, mutta esti käyttäjää kirjautumasta sisään GUI-työpöydän avulla. Pystyin kirjautumaan sisään komentorivikäyttöliittymän (CLI) avulla paikallisesti käyttämällä yhtä virtuaalikonsolia ja etänä SSH:n avulla. Ongelmana oli, että /tmp-tiedostojärjestelmä oli täyttynyt, eikä joitakin GUI-työpöydän tarvitsemia väliaikaisia tiedostoja voitu luoda kirjautumishetkellä. Koska CLI-kirjautuminen ei edellyttänyt tiedostojen luomista tiedostoon /tmp, tilan puute siellä ei estänyt minua kirjautumasta sisään CLI:n avulla. Tässä tapauksessa /tmp-hakemisto oli erillinen tiedostojärjestelmä, ja /tmp-logisen aseman sisältämässä asemaryhmässä oli runsaasti tilaa. Laajensin yksinkertaisesti /tmp-logisen tilavuuden kokoon, joka vastasi uutta käsitystäni kyseisen isännän tarvitseman väliaikaisen tiedostotilan määrästä, ja ongelma oli ratkaistu. Huomaa, että tämä ratkaisu ei vaatinut uudelleenkäynnistystä, ja heti kun /tmp-tiedostojärjestelmää oli suurennettu, käyttäjä pystyi kirjautumaan työpöydälle.

Toinen tilanne sattui, kun työskentelin laboratorion ylläpitäjänä eräässä suuressa teknologiayrityksessä. Yksi kehittäjistämme oli asentanut sovelluksen väärään paikkaan (/var). Sovellus kaatui, koska /var-tiedostojärjestelmä oli täynnä eikä lokitiedostoihin, jotka on tallennettu kyseisen tiedostojärjestelmän /var/log-tiedostoon, voitu lisätä uusia viestejä tilan puutteen vuoksi. Järjestelmä pysyi kuitenkin toiminnassa, koska kriittiset tiedostojärjestelmät / (root) ja /tmp eivät täyttyneet. Häiritsevän sovelluksen poistaminen ja sen asentaminen uudelleen /opt-tiedostojärjestelmään ratkaisi ongelman.

tiedostojärjestelmätyypit

Linux tukee noin sadan osiotyypin lukemista; se voi luoda ja kirjoittaa vain muutamaan näistä. On kuitenkin mahdollista – ja hyvin yleistä – asentaa eri tyyppisiä tiedostojärjestelmiä samaan juuritiedostojärjestelmään. Tässä yhteydessä puhumme tiedostojärjestelmistä niiden rakenteiden ja metatietojen osalta, joita tarvitaan kiintolevyn osiossa tai loogisessa volyymissa olevien käyttäjätietojen tallentamiseen ja hallintaan. Täydellinen luettelo Linuxin fdisk-komennon tunnistamista tiedostojärjestelmän osiotyypeistä on esitetty tässä, jotta voit saada käsityksen Linuxin suuresta yhteensopivuudesta hyvin monenlaisten järjestelmien kanssa.

 0 Empty 24 NEC DOS 81 Minix / old Lin bf Solaris 1 FAT12 27 Hidden NTFS Win 82 Linux swap / So c1 DRDOS/sec (FAT- 2 XENIX root 39 Plan 9 83 Linux c4 DRDOS/sec (FAT- 3 XENIX usr 3c PartitionMagic 84 OS/2 hidden or c6 DRDOS/sec (FAT- 4 FAT16 <32M 40 Venix 80286 85 Linux extended c7 Syrinx 5 Extended 41 PPC PReP Boot 86 NTFS volume set da Non-FS data 6 FAT16 42 SFS 87 NTFS volume set db CP/M / CTOS / . 7 HPFS/NTFS/exFAT 4d QNX4.x 88 Linux plaintext de Dell Utility 8 AIX 4e QNX4.x 2nd part 8e Linux LVM df BootIt 9 AIX bootable 4f QNX4.x 3rd part 93 Amoeba e1 DOS access a OS/2 Boot Manag 50 OnTrack DM 94 Amoeba BBT e3 DOS R/O b W95 FAT32 51 OnTrack DM6 Aux 9f BSD/OS e4 SpeedStor c W95 FAT32 (LBA) 52 CP/M a0 IBM Thinkpad hi ea Rufus alignment e W95 FAT16 (LBA) 53 OnTrack DM6 Aux a5 FreeBSD eb BeOS fs f W95 Ext'd (LBA) 54 OnTrackDM6 a6 OpenBSD ee GPT10 OPUS 55 EZ-Drive a7 NeXTSTEP ef EFI (FAT-12/16/11 Hidden FAT12 56 Golden Bow a8 Darwin UFS f0 Linux/PA-RISC b12 Compaq diagnost 5c Priam Edisk a9 NetBSD f1 SpeedStor14 Hidden FAT16 <3 61 SpeedStor ab Darwin boot f4 SpeedStor16 Hidden FAT16 63 GNU HURD or Sys af HFS / HFS+ f2 DOS secondary17 Hidden HPFS/NTF 64 Novell Netware b7 BSDI fs fb VMware VMFS18 AST SmartSleep 65 Novell Netware b8 BSDI swap fc VMware VMKCORE1b Hidden W95 FAT3 70 DiskSecure Mult bb Boot Wizard hid fd Linux raid auto1c Hidden W95 FAT3 75 PC/IX bc Acronis FAT32 L fe LANstep1e Hidden W95 FAT1 80 Old Minix be Solaris boot ff BBT

Tärkein tarkoitus tukea kykyä lukea niin monia osiotyyppejä on mahdollistaa yhteensopivuus ja ainakin jonkinlainen yhteentoimivuus muiden tietokonejärjestelmien tiedostojärjestelmien kanssa. Uuden tiedostojärjestelmän luomisessa Fedoralla käytettävissä olevat vaihtoehdot on esitetty seuraavassa luettelossa.

  • btrfs
  • cramfs
  • ext2
  • ext3
  • ext4
  • fat
  • gfs2
  • hfsplus
  • minix
  • msdos
  • ntfs
  • reiserfs
  • vfat
  • xfs

Muut jakelut tukevat eri tiedostojärjestelmätyyppien luomista. Esimerkiksi CentOS 6 tukee vain yllä olevassa luettelossa lihavoituna korostettujen tiedostojärjestelmien luomista.

Mounting

Termi ”mountata” tiedostojärjestelmä Linuxissa viittaa tietojenkäsittelyn alkuaikoihin, jolloin nauha tai irrotettava levypaketti piti fyysisesti mountata sopivaan asemalaitteeseen. Kun levykepaketin tiedostojärjestelmä oli fyysisesti asetettu asemaan, käyttöjärjestelmä mountasi sen loogisesti, jotta käyttöjärjestelmä, sovellusohjelmat ja käyttäjät voisivat käyttää sen sisältöä.

Mount-piste on yksinkertaisesti hakemisto, kuten mikä tahansa muukin, joka luodaan osaksi juuritiedostojärjestelmää. Niinpä esimerkiksi kotitiedostojärjestelmä asennetaan hakemistoon /home. Tiedostojärjestelmiä voidaan asentaa kiinnityspisteissä muihin kuin juuritiedostojärjestelmiin, mutta tämä on harvinaisempaa.

Linuxin juuritiedostojärjestelmä asennetaan juurihakemistoon (/) hyvin varhaisessa vaiheessa käynnistyssekvenssiä. Muut tiedostojärjestelmät asennetaan myöhemmin Linuxin käynnistysohjelmien toimesta, joko rc SystemV:ssä tai systemd uudemmissa Linux-versioissa. Tiedostojärjestelmien kiinnittämistä käynnistyksen aikana hallitaan /etc/fstab-määritystiedostolla. Helppo tapa muistaa tämä on, että fstab on lyhenne sanoista ”file system table” (tiedostojärjestelmätaulukko), ja se on luettelo asennettavista tiedostojärjestelmistä, niille määrätyistä liitäntäpisteistä ja mahdollisista asetuksista, joita saatetaan tarvita tietyille tiedostojärjestelmille.

Tiedostojärjestelmät asennetaan olemassa olevaan hakemistoon/liitäntäpisteeseen mount-komennolla. Yleensä minkä tahansa hakemiston, jota käytetään kiinnityspisteenä, pitäisi olla tyhjä, eikä siinä saisi olla muita tiedostoja. Linux ei estä käyttäjiä liittämästä tiedostojärjestelmää jo olemassa olevan tai tiedostoja sisältävän hakemiston päälle. Jos tiedostojärjestelmä liitetään olemassa olevan hakemiston tai tiedostojärjestelmän päälle, alkuperäinen sisältö piilotetaan ja vain juuri liitetyn tiedostojärjestelmän sisältö on näkyvissä.

Johtopäätös

Toivon, että osa termiin tiedostojärjestelmä liittyvästä mahdollisesta sekaannuksesta on selvitetty tässä artikkelissa. Minulta meni pitkä aika ja erittäin hyödyllinen mentori, ennen kuin todella ymmärsin ja arvostin Linuxin tiedostojärjestelmän monimutkaisuutta, eleganssia ja toiminnallisuutta sen kaikissa merkityksissä.

Mikäli sinulla on kysyttävää, lisää ne alla oleviin kommentteihin, niin yritän vastata niihin.

Jatkokuukausi

Muutama tärkeä käsite on se, että Linuxissa kaikki on tiedosto. Tällä käsitteellä on joitakin mielenkiintoisia ja tärkeitä käytännön sovelluksia käyttäjille ja järjestelmän ylläpitäjille. Mainitsen tämän siksi, että saatat haluta lukea ”Kaikki on tiedosto” -artikkelini ennen ensi kuuksi suunnittelemaani /dev-hakemistoa käsittelevää artikkelia.

Vastaa

Sähköpostiosoitettasi ei julkaista.