Tiedostojärjestelmät

Windows 95:en ja DOSin tiedostojärjestelmä FAT on kankea ja vanhanaikainen. FATin rajoitukset ja heikko tietoturva ovat kiusallisia, mutta uuden järjestelmän luominen aiheuttaisi vanhojen levyjen ja levykkeiden kanssa yhteensopivuusongelmia. Tästä syystä FAT elää vielä pitkään vaikka rinnalle onkin luotu uusia systeemejä.

FAT

Levy jakautuu aina seuraaviin fyysisiin osiin:

  1. levypinta (platter)

  2. ura (track) (lukumäärä 40-1024 levyn koosta riippuen)

  3. sektori (sector) (lukumäärä 9-36)

Eräillä kovalevytyypeillä pakkaustiheyden kasvattamiseksi tavujen määrä ulkourien sektoreilla on suurempi kuin sisäurien sektoreilla. DOSin tiedostojärjestelmä ei ymmärrä tällaista ja levy (sen sisään rakennettu ohjain) huolehtii osoitteiden muuntamisesta Dos-muotoon. BIOS ei myöskään pysty käsittelemään kuin alle 1024-uraisia levyjä (10 bitin uraosoite).

Tiedostojärjestelmän kannalta kolmesta osoitteesta muodostuva tiedon osoite on hankala. Tämän takia osoitteet muutetaan yksikäsitteisellä tavalla yksiulotteisiksi klusteriosoitteiksi: levyn tietoihin viitataan pelkkien klustereiden numeroiden perusteella.

Klusteri (cluster, tilanvarausyksikkö) on levyn kirjanpidon perusyksikkö ja koostuu levyn koosta riippuen yhdestä tai useammasta 512 tavun mittaisesta lohkosta, jollaisen sektori leikkaa uralta. Levykkeillä klusterin koko on joko 512 tai 1024 tavua ja kiintolevyillä yleensä 2048, 4096 tai 8192 tavua DOSin versiosta ja aseman koosta riippuen. Klustereiden numerointi alkaa 2:sta.

Koska klusteri on pienin levyllä osoitettavissa oleva yksikkö, 1 tavun mittainenkin tiedosto vie klusterin kokoisen tilan:

Esimerkiksi 1 klusteri = 2048 tavua (4 sektoria)Tiedoston kokoVarattu tila1 tavu 2048 tavua2047 tavua 2048 tavua2049 tavua 4096 tavua

Kovalevyn uloin ura on varattu osiotaulukolle. Osiotaulukossa ilmoitetaan kovalevyn loogisten osioiden lukumäärä sekä niiden tiedostorakenteen tyyppi. Levykkeillä osiotaulukkoa ei ole. Osiojaosta ja osiotaulukosta kerrotaan enemmän luvussa Kiintolevyt.

Mahdollisen osiotaulukon jälkeen seuraavan uran alussa on käynnistyslohko, boot-sektori. Tämä alue sisältää pienen ohjelman, joka lataa piilotetun systeemitiedoston (IO.SYS) ja tämän jälkeen antaa kontrollin ladatulle ohjelmalle. Mikäli levy ei ole systeemilevy, niin mikro ilmoittaa tästä näytölle. Käynnistyslohkossa on myös tiedot levyn loogisesta jaosta.

Käynnistyslohkoa seuraa yksi levyn tärkeimmistä (ja useimmiten vioittuvista) alueista, levyn tilanvaraustaulukko eli FAT (File Allocation Table). Taulukossa on lokero jokaiselle levyn klusterille. Arvo 0 ilmaisee, että alue on vapaa, FF7 (tai FFF7) tarkoittaa viallista aluetta ja FFF (tai FFFF) tiedoston loppua. Arvot 0-FF0 ilmaisevat tiedoston seuraavan osan sijainnin (klusterin). Tiedoston ensimmäisen. alkion sijainti ilmoitetaan hakemistoalkiossa.

Esimerkissä on kaksi hakemistoalkiota, jotka ovat jakaantuneet FAT-taulukon mukaisesti kuvassa olevalle levylle. Levyllä olevan klusterin koko on 256 tavua ja FATissa nolla tarkoittaa vapaata klusteria ja negatiivinen arvo tiedoston viimeistä klusteria. Miten monta tavua tietoa jää klustereihin 18 ja 19?

FAT-taulukosta on yleensä vähintään yksi toinen kopio. Valitettavasti kopio on fyysisesti niin lähellä alkuperäistä taulukkoa (sen perässä), että ensimmäisen taulukon tuhoutuessa tuhoutuu useimmiten myös toinen. Yksi tapa varmistaa levy on kopioida FAT esimerkiksi MIRROR-komennon avulla.

FAT-taulukkoa seuraa levyn päähakemisto, jonka koko vaihtelee levyn tyypistä riippuen. Pienillä levykkeillä riitti ennen vain yksi hakemisto. Nykyisin tätä hakemistoa nimitetään päähakemistoksi ja alihakemistot on rakennettu tiedostojen avulla. Päähakemistossa (kuten myös alihakemistoissa) ilmoitetaan kustakin tiedostosta seuraavat tiedot: tiedoston nimi, tarkennin, attribuutti, luomisaika, luomispäivämäärä, 1. klusteri ja tiedoston koko. Tätä yksikköä kutsutaan hakemistoalkioksi.

Tiedosto merkitään tuhotuksi vaihtamalla sen nimen ensimmäinen kirjain tietyksi koodiksi (E5 heksana) sekä merkitsemällä tiedostoketjun kaikki klusterit vapaiksi. Koska useimmiten tiedoston klusterit on varattu peräkkäisessä järjestyksessä ja tuhotusta tiedostosta jää hakemistoon ensimmäisen klusterin osoite, voidaan tuhottuja tiedostoja palauttaa lähes automaattisesti (esimerkiksi DOSin Undelete-komennolla).

Levyn varsinainen tiedostoalue sijaitsee edellä mainittujen alueiden jäljessä. Tiedostoalueen alkuosoite on aina klusteri 2. Fyysinen osoite (pinta, ura, sektori) riippuu levyn muista tiedoista. Alihakemistot on toteutettu siten, että niille varataan tilaa normaalilta tiedostoalueelta ja tiedoston sisältönä on päähakemistoa vastaava rakenne. Koska tiedoston koko voi kasvaa "rajattomasti", ei alihakemistossa olevien tiedostojen lukumäärällä ole rajoitusta niin kuin päähakemiston tiedostojen määrällä.

Seuraavassa kuvassa on yhteenveto kovalevyn urien sisällöistä:

HPFS

Microsoft kehitti tehokkaamman HPFS-tiedostojärjestelmn (High Performance File System) OS/2 1.2-versiota varten vuonna 1989. Se korjasi kaikki FATin tekniset rajoitukset ja mahdollisti jopa 254 merkkiä pitkät tiedostonimet. Nimissä voi olla sekä isoja että pieniä kirjaimia, mutta ne ovat samanarvoisia (toisin kuin Unixissa). Erillistä tarkenninta ei enää ole, joten tiedostonimessä voi käyttää vaikka useita pisteitä.

Nimirajoituksen poistumisen lisäksi HPFS on FATia kehittyneempi. Se on turvallisempi käyttää ja mahdollistaa laajennetut tiedostomääreet. Jokaiseen tiedostoon voidaan liittää kuvaus sen sisällöstä, tieto ohjelmasta, tiedoston kuvake sekä mitä tahansa muuta tietoa. Kun tiedostoa käsitellään tai kopioidaan, sen määreet päivittyvät ja siirtyvät automaattisesti tiedoston mukana.

HPFS säästää levytilaa silloin, kun käsiteltävät tiedostot ovat pieniä, sillä sen tilanvaraus tapahtuu aina 512 tavun erissä (vrt. FATin klusterin koon kasvaminen levyaseman mukana). Tiedostojen ollessa isoja HPFS pyrkii pitämään ne yhtenäisinä ja välttämään tiedostojen pirstoutumista.

Tiedostojen nimet tallennetaan taulukon sijasta binääripuuhun, jolloin ne pysyvät aina aakkosjärjestyksessä. Kun käyttöjärjestelmä etsii tiedostoa hakemistosta, se löytää oikean nimen puuta tutkimalla. Binääripuusta hakeminen on nopeampaa kuin vastaavan tiedon etsiminen taulukosta. Nopeusero on merkittävä kun hakemistossa on käsiteltävänä useita satoja tiedostoja.

NTFS

NTFS on microsoftin parannettu versio HPFS:stä uutta Windows NT-käyttöjärjestelmää varten. NTFS:n tiedoston teoreettinen maksimikoko on laajennettu HPFS:n ja FAT:n neljästä gigatavusta 16 miljoonaan teratavuun (=neljä gigatavua jokaista maapallon asukasta kohden).

NTFS tallentaa tiedostonimet Unicode-merkistönä. Unicode on tuleva merkkistandardi, joka sisältää kaikkien tärkeimpien kielten merkit hepreaa, venäjää, kiinaa ja japania myöden. Tämä standardi poistanee myös skandinaavisten merkkien ongelmat.

Järjestelmä luo automaattisesti tiedoston nimistä lyhyet versiot NT:n alla ajettaville DOS-sovelluksille. Lisäksi järjestelmässä on mahdollista tallentaa jokaiselle tiedostolle käyttöoikeudet.

FAT32

FAT32 on Microsoftin paranneltu versio FAT-tiedostojärjestelmästä. FAT32 osaa käsitellä kiintolevyjä periaatteessa aina 2 TB kokoisiin levyihin saakka. FAT32 ei myöskään enää kärsi niin pahasti klusterikoon kasvamisesta kiintolevyn osioin kasvamisen myötä kuin alkuperäinen FAT16. Kahdeksaan gigatavuun saakka FAT32 selviää neljän kilotavun kokoisella klusterilla. Yli kahdeksan gigatavuisia partitioita ei FAT32:aan kannata käyttää koska tällöin klusterikoko kasvaa ja mikä vielä pahempaa itse FAT32:en tarvitsema levytila kasvaa huomattavasti. Alkuperäinen FAT16 tarvitse kiintolevyltä pahimmillaan 128 kilotavua omaan käyttöönsä klusterihukan lisäksi. FAT32 vaatii heti vähintään 2 MB ja yli kahdeksan gigatavun osioilla hulppeat 8 MB! Periaatteessa tiedostojen käsittely hidastuu jos järjestelmä joutuu koko ajan käymään läpi 8 MB kokoista FAT-taulukkoa löytääkseen tiedoston sijainnin.

Pirstoutuminen (fragmentation)

Tiedostojärjestelmä tallentaa tiedostot levylle niin, että sovellukset voivat kasvattaa ja lyhentää tiedostoja, luoda uusia ja poistaa vanhoja. Tiedostojärjestelmä pitää huolen myös siitä, että tiedostot löytyvät. Aikaa myöten dynaaminen tiedostojen käsittely johtaa pirstoutumiseen (fragmentation): isot tiedostot ovat pirstoutuneita useisiin paloihin, jotka sijaitsevat eri puolilla levyä. Vastaavasti levyn vapaa tila on jakautunut useisiin pieniin alueisiin tiedostojen väliin.

Pirstoutuminen on luonnollista ja sitä tapahtuu kaikissa tietokoneissa mikroista superkoneisiin. Pirstoutuminen ei näy käyttäjälle, koska tiedostojärjestelmä hakee tiedostot eri puolilta levyä FAT-alueella pidettävän kartan avulla. Käyttäjä huomaa pirstoutumisen vain siitä, että isojen tiedostojen lukeminen ja lataaminen muistiin (kuten isojen ohjelmien käynnistys) kestää aiempaa kauemmin. Pirstoutumisen hidastava vaikutus oli aiemmin tuntuva, mutta uudet levyt ovat niin nopeita, ettei pirstoutumista juuri huomaa. Välimuisti vähentää myös pirstoutumisen hidastavaa vaikutusta.

Kuinka usein pirstoutuminen pitäisi sitten poistaa? Jos levy on vanha ja toimii muutenkin hitaasti, tiedostojen järjestely kannattaa tehdä säännöllisesti esimerkiksi kerran viikossa. Uudemmilla levyillä ja välimuistia käytettäessä tiedostojen järjestäminen on tarpeen vain poikkeustapauksissa. Koska pirstoutumisen aste kasvaa nopeasti vapaan tilan vähentyessä, kannattaa levyllä pitää vähintään 10 15 prosenttia vapaata tilaa. Tällöin pirstoutuminen ei pääse muodostumaan ongelmaksi.

Pirstoutumisen poistamiseen tulee Windowsin mukana disk defragmenter -niminen ohjelma, joka osaa järjestää kiintolevyn uudelleen. Ohjelma tulee järjestelmätyökalujen mukana. Kiintolevy kannattaa defragmentoida säännöllisesti. Ennen defragmentointia olisi kuitenkin suositeltavaa ottaa varmuuskopio tärkeimmistä tiedostoista siltä varalta, että jotakin menee defragmentoinnissa pahasti pieleen. Sähkökatkos tai muu vakava onnettomuus kesken defragmentaation saattaa huonolla tuurilla jättää kiintolevyn käyttökelvottomaan tilaan.

Kurssimateriaalien käyttäminen kaupallisiin tarkoituksiin tai opetusmateriaalina ilman lupaa on ehdottomasti kielletty!
Copyright © Tommi Lahtonen (tommi.j.lahtonen@jyu.fi)<URL: http://www.iki.fi/hazor/>
Petri Heinonen (peheinon@mit.jyu.fi)<URL: http://www.mit.jyu.fi/peheinon/>