Tiedostojärjestelmä

Kohteesta Wikipedia
Loikkaa: valikkoon, hakuun
Unix-kaltaisen tiedostojärjestelmän perustasolta eli juurihakemistosta haarautuvaa hakemistopuuta.

Tiedostojärjestelmä on käyttöjärjestelmän tarjoama palvelu, jonka avulla muut ohjelmistot voivat varastoida dataa tietokoneen massamuistiin. Tiedostojärjestelmän tärkein tehtävä on peittää massamuistilaitteen tekninen rakenne ja saada sen sisältö näkymään helpommin käsiteltävinä tiedostoina ja hakemistoina.

Hakemistot ja tiedostot[muokkaa | muokkaa wikitekstiä]

Nykyiset tiedostojärjestelmät sisältävät käyttäjälle näkyviä tiedostoja, jotka organisoituvat hierarkkiseksi (tai joskus jopa verkkomaiseksi) järjestelmäksi hakemistojen (engl. directory) avulla. Graafisissa käyttöliittymissä hakemistot yleensä hahmottuvat kansioiksi (engl. folder), joiden sisällä voi olla tiedostoja ja myös muita kansioita eli alihakemistoja. Teknisestä näkökulmasta hakemistot ovat kuitenkin vain erityisiä tiedostoja, joihin kirjautuu tieto siitä, mitkä tiedostot kuuluvat keskenään samaan ryhmään.

Tiedostojärjestelmän perustaso on niin sanottu juurihakemisto (engl. root), joka sisältää kaikki tiedostot ja hakemistot. Sisäkkäisistä hakemistoista muodostuu haarautuva, puumainen kokonaisuus, joka usein esitetään ylösalaisin, niin että juurihakemisto on ylhäällä ja hakemistopuu haarautuu alaspäin. Vaihtoehtoisesti juurihakemisto voi olla vasemmalla, jolloin hakemistopuu haarautuu ensisijaisesti oikealle. Tiedostoihin ja hakemistoihin viitataan hakemistopolun avulla eli luettelemalla sisäkkäiset hakemistot tiedostojärjestelmän juuresta lähtien. Tällöin hakemistot tyypillisesti erotetaan toisistaan ja tiedostosta vinoviivalla tai kenoviivalla:

  • /etc/apt/sources.list
  • A:\ATK\OMAT\Sol.exe

Tilanvaraus[muokkaa | muokkaa wikitekstiä]

Tiedostojärjestelmän tärkeä ominaisuus on hallita massamuistin vapaata ja varattua tilaa. Tämä koskee tietokoneeseen liitettyä fyysisista mediaa, ei niinkään verkkotiedostojärjestelmiä (niiden tilanvaraus tapahtuu palvelinkoneen massamuistilla).

Tyypillisesti massamuisti jaetaan määräkokoisiin lohkoihin, varausyksiköiksi (engl. allocation unit). Varausyksiköt ovat tyypillisesti 512 tavun kerrannaisyksikköjä (2x, 4x, 8x, 16x, jne.), mutta niiden tarkka koko riippuu massamuistin koosta. Pieni varausyksikkö lisää levyn kirjanpitoon kuluvaa tilaa ja saattaa hidastaa toimintaa. Suuri varausyksikkö taas tuhlaa tilaa pieniä tiedostoja tallennettaessa. Joissain tiedostojärjestelmissä kierretään ongelma tallentamalla useita pieniä tiedostoja yhteen varausyksikköön tai varatun tilan koko voi vaihdella tarvittaessa, esimerkiksi Btrfs (engl. block suballocation).

Tiedostot pyritään tallentamaan siten että niille varattu tila on yhtenäinen. Jos näin ei voida tehdä, sanotaan että tiedosto fragmentoituu eli pirstoutuu. Tämä on haitallista etenkin levymuisteilla, koska tiedostoa luettaessa joudutaan lukupäätä siirtämään, mikä vie aikaa ja hidastaa toimintoa. Tilanvaraus on haasteellista, koska käyttöjärjestelmä ei yleensä tiedä tiedoston kokoa kun sitä aletaan kirjoittaa. Lisäksi vanhoja tiedostoja poistettaessa myös tiedostojärjestelmän tyhjä tila fragmentoituu. Tämä vuoksi joissain käyttöjärjestelmissä on mukana erityinen ohjelma tiedostojärjestelmän tiedostojen tai/ja tyhjän tilan eheyttämiseksi eli defragmentoimiseksi.

Yksi tilanvaraukseen liittyvä erikoiskysymys on vapaan tilan hallinta. Vapaa tila voidaan käsittää tilaksi, joka ei ole minkään tiedoston käytössä (esim. MS-DOSin FAT). Vapaa tila voi myös olla erikoinen tiedosto tai tiedostoja, joista siirretään tilaa muille tiedostoille tarvittaessa. Eräissä käyttöjärjestelmissä voidaan myös rajoittaa osa tilasta vain ylikäyttäjän käyttöön siten että tavallinen käyttäjä ei voi täyttää levyä ja kaataa tärkeitä palvelinohjelmistoja.

Tiedostojärjestelmän tallentamat tiedot[muokkaa | muokkaa wikitekstiä]

Tiedostojärjestelmä tallentaa tiedostojen data lisäksi myös muita tietoja. Tiedoston nimi on tyypillisin. Lisäksi tiedostojärjestelmä pitää kirjaa tiedostoihin liittyvistä aikaleimoista kuten luontipäivä, muutospäivä tai viimeisin lukupäivä (tiedoston avaus) tai sen tilan muutos. Muita tiedostoihin liittyviä tietoja ovat niiden tyypit ja tietoturvaan liittyvät tiedot, kuten tiedoston omistaja/luoja ja pääsylistat. Tilanvaraukseen liittyviä tietoja ovat tiedoston koko ja sille varatut varausyksiköt.

Käsitteitä[muokkaa | muokkaa wikitekstiä]

  • Journalointi eli lokinpito tarkoittaa tiedostojärjestelmän kykyä säilyttää tiedon eheys vaikka tietokoneen toiminta katkeaisikin virtakatkokseen tai nollaukseen. Tämä saavutetaan pitämällä kirjaa tehdyistä muutoksista erityisellä tiedostojärjestelmän osalla (loki, engl. journal), josta tiedot päivitetään transaktion päättymisen jälkeen varsinaiseen tiedostojärjestelmään. Ilman journalointia tiedostojärjestelmän eheyttäminen erilaisilla työkaluilla, kuten fsck Unixin kaltaisissa järjestelmissä, on hitaampaa eikä välttämättä yhtä tuloksellista.[1]
  • Osio (engl. partition) on yhdelle massamuistille luotu alue, jolle luodaan erillinen tiedostojärjestelmä kapasiteetin jakamiseksi
  • Snapshot tarkoittaa hetkellisen tilanteen jäädyttämistä, jotta tilanteeseen voidaan palata myöhemmin. Tämä voi myös helpottaa varmennuksien tekemistä.
  • Volume viittaa useiden levyjen kapasiteetin yhdistämiseen virtuaaliseksi levyksi, vähintään yhden osion kapasiteetti.
  • Klusteroitu tiedostojärjestelmä tarkoittaa levyjärjestelmää, joka kattaa useiden tietokoneiden levykapasiteetin. Klusteroituja tiedostojärjestelmiä on pääasiassa kahta tyyppiä: hajautettu levyjärjestelmä sekä jaettu levyjärjestelmä. Tiedostojärjestelmä voi rakentua esimerkiksi TCP/IP protokollan päälle tai muiden kuten Fibre Channel, iSCSI, InfiniBand. Klusteroitua tiedostojärjestelmää kutsutaan toisinaan myös verkkotiedostojärjestelmäksi.
  • Verkkotiedostojärjestelmä: katso Klusteroitu tiedostojärjestelmä

Unix-tyyppisten käyttöjärjestelmien käyttämiä tiedostojärjestelmiä[muokkaa | muokkaa wikitekstiä]

Unix Filesystem (UFS)[muokkaa | muokkaa wikitekstiä]

  • UFS on Unixin alkuaikojen tiedostojärjestelmä, joka vakiinnutti nykyisen käytännön joka sallii tiedoston käyttää minkä vain määrän tavuja (ei sidottu "tietueen" kokoon).[2]
  • UFS on levinnyt laajasti eri käyttöjärjestelmiin (BSD, Nextstep, Mac OS X ja Solaris).[3]
  • Alkuaikojen tiedostojärjestelmä oli hyvin yksinkertainen toteuteukselta ja myös hyvin hidas.[4]
  • Siihen on tarpeen vaatiessa kehitetty lisäominaisuuksia kuten journalointi ja soft-updates.[5]
  • Ei yhtä standardia toteutusta: paljon eri variaatioita.

Fast File System (FFS)[muokkaa | muokkaa wikitekstiä]

  • Uudelleen toteutettu UFS nimellä "Fast File System for UNIX" BSD 4.2:ssa.[6][2]

UFS2[muokkaa | muokkaa wikitekstiä]

BFS[muokkaa | muokkaa wikitekstiä]

EFS[muokkaa | muokkaa wikitekstiä]

  • SGIn IRIX käyttöjärjestelmässä, korvasi aiemman tiedostojärjestelmän (System V -tyyppisen)[7]
  • myöhemmin korvattu XFS tiedostojärjestelmällä

Hierarchical File System (IBM MVS)[muokkaa | muokkaa wikitekstiä]

  • IBM z/OS käyttämä tiedostojärjestelmä
  • eri kuin HP-UX tai Mac OS tiedostojärjestelmät (jotka myös lyhennetään HFS)

Hi Performance FileSystem (HFS)[muokkaa | muokkaa wikitekstiä]

HFS+/UFS[muokkaa | muokkaa wikitekstiä]

  • HFS+/UFS on Apple OS X käyttöjärjestelmässä käytetty, journaloiva tiedostojärjestelmä
  • Aiemmat HFS/HFS+ versiot aiemmissa Mac OS versioissa (ei Unix/BSD-tyyppisiä)
  • periytyy suunnitteluperiaatteidensa osalta Applen alkuperäisestä MFS -tiedostojärjestelmästä
  • vuonna 1998 julkaistu HFS+ lisää eräitä ominaisuuksia (Applen Levytyökalussa Mac OS Extended)

JFS[muokkaa | muokkaa wikitekstiä]

  • IBM:n kehittämä journaloiva tiedostojärjestelmä, julkaistu AIX-käyttöjärjestelmän versiossa 3.1.[8]
  • Kaksi merkittävää versiota: 32-bittinen JFS (JFS1) ja 64-bittinen Enhanced JFS (JFS2)[9][8]
  • Julkaistu myös OS/2:lle[8]
  • Linuxille julkaistu täysin 64-bittinen GPL-lisenssillä[8][10]
  • Otettiin mukaan viralliseen Linuxin epävakaassa kehitysversiossa 2.5.6-pre2 julkaisuun ja 2.4-sarjassa 2.4.20-pre4 julkaisuun.

LFS[muokkaa | muokkaa wikitekstiä]

QNX4FS, QNX6FS[muokkaa | muokkaa wikitekstiä]

  • QNX käyttöjärjestelmän tiedostojärjestelmä[12]

Veritas File System (VxFS)[muokkaa | muokkaa wikitekstiä]

  • 1988 lähtien[5]
  • perustunut UFS:ään alkuaikoina, myöhemmin BSD FFS[5]
  • useille alustoille, mm. HP-UX

XFS[muokkaa | muokkaa wikitekstiä]

  • XFS on Silicon Graphicsin (SGI) kehittämä journaloiva tiedostojärjestelmä, joka on kehitetty SGI:n IRIX-käyttöjärjestelmälle.[13][14]
  • Täysin 64-bittinen journaloiva tiedostojärjestelmä.[15]
  • Otettiin mukaan viralliseen Linux-kerneliin kehitysversiossa 2.5.36, mutta oli saatavilla ja yleisesti käytössä jo 2.4-sarjan aikana kernelistä 2.4.23 lähtien.[15]

zFS (IBM)[muokkaa | muokkaa wikitekstiä]

  • IBM:n z/OS järjestelmässä käytetty (eri kuin Sun/Oracle ZFS)

ZFS[muokkaa | muokkaa wikitekstiä]

Linuxin käyttämät tiedostojärjestelmät[muokkaa | muokkaa wikitekstiä]

Linux osaa käyttää kymmeniä eri tiedostojärjestelmiä VFS (Virtual File System) -abstraktiokerroksen ansiosta. Listassa (paitsi minix) nimenomaan Linuxille kehitettyjä tiedostojärjestelmiä.

Minix, xiafs[muokkaa | muokkaa wikitekstiä]

Linuxin alkuperäinen tiedostojärjestelmä oli Minix-käyttöjärjestelmän tiedostojärjestelmä. Seuraavan sukupolven tiedostojärjestelmiä olivat muun muassa xiafs ja extfs, jotka ovat nykyään jääneet käytöstä.

ext2fs, ext3fs, ext4fs[muokkaa | muokkaa wikitekstiä]

Versiot ovat yhteensopivia siltä osin kuin uusia ominaisuuksia ei käytetä, esimerkiksi voi ext3fs:n liittää ext2fs:nä, jolloin journali ei sillä kerralla ole käytössä.

Ext2[muokkaa | muokkaa wikitekstiä]

Ext2 korvasi aiemman Extfs:n vuonna 1993.[17]

Ext2 on vielä suosittu esimerkiksi Flash- ja USB-muisteilla.[17]

Ext3[muokkaa | muokkaa wikitekstiä]

Ext3 kehittyi laajennuksena aiemmalle Ext2:lle vuonna 1998.[17]

Ext3 tukee journalointia.[17]

Ext4[muokkaa | muokkaa wikitekstiä]

Ext4 kehittyi edelleen Ext3:sta ja julkaistiin Linux versiossa 2.6.28 vuonna 2008.[17]

Ext4 tukee journalointia.[17]

ReiserFS ja Reiser4[muokkaa | muokkaa wikitekstiä]

Pääartikkelit: ReiserFS ja Reiser4

ReiserFS oli ensimmäinen journaloiva tiedostojärjestelmä, joka otettiin mukaan Linuxiin (versiossa 2.4.1-pre4). Sen alkuperäinen nimi oli TreeFS, mutta erinäisten syiden vuoksi se nimettiin lopulta suunnittelijansa Hans Reiserin mukaan. ReiserFS:n erityispiirteitä ovat muun muassa mahdollisuus pakata useita pieniä tiedostoja samalle varausyksikölle, puurakenteesta johtuva hyvä suorituskyky käytettäessä paljon pieniä tiedostoja sisältäviä hakemistoja sekä dynaamisten varausyksiköiden käyttö. Näiden piirteiden vuoksi sitä käytetään usein uutisryhmäpalvelimissa ja muissa vastaavissa kohteissa.

Reiser4 on pääosin saman kehittäjäryhmän toteuttama kokonaan uusi tiedostojärjestelmä.

Btrfs[muokkaa | muokkaa wikitekstiä]

Btrfs on uutta kehitystä edustava tiedostojärjestelmä suunniteltu tukemaan copy-on-write mekanismia. [18]

Tiedostojärjestelmän kehityksen aloitti Oracle Corporation Linuxia varten vuonna 2007.[19]

Btrfs tukee levyjärjestelmiä 16 eksatavuun saakka, joko suurina levyinä tai levyryhminä.[19]

Tiedostojärjestelmän käyttäjiä ovat mm. Facebook.[20]

Myös Jolla Oy:n Sailfish OS käyttää tiedostojärjestelmää.

FUSE[muokkaa | muokkaa wikitekstiä]

Linuxin FUSE (engl. Filesystem in Userspace) mekanismin avulla tuetaan tiedostojärjestelmiä, joiden lähdekoodit eivät lisenssiltään yhteensopivia suoraan ytimeen liittämiseksi. Ubuntu käyttää tätä NTFS tuen kanssa.

Microsoftin käyttämät tiedostojärjestelmät[muokkaa | muokkaa wikitekstiä]

FAT (File Allocation Table)[muokkaa | muokkaa wikitekstiä]

Pääartikkeli: FAT
  • Sijainti osion nollauralla
  • Pitää kirjaa muun muassa tiedoston nimestä, koosta, tiedostoattribuuteista ja varausyksiköistä, jotka sisältävät itse tiedoston tiedot.
  • Kiintolevyn (tai paremminkin sen osion) koko vaikuttaa varausyksikön kokoon.
  • Tiedostojärjestelmään on myöhemmin lisätty ominaisuuksia jotka mahdollistavat yli 8+3 merkin tiedostonimet (ns. VFAT) ja yli 2 GB levyosiot (ns. FAT32).

NTFS (New Technology File System)[muokkaa | muokkaa wikitekstiä]

Pääartikkeli: NTFS
  • Kehitetty IBM:n kehittämän HPFS-tiedostojärjestelmän pohjalta
  • Varausyksikön kokoon voi itse vaikuttaa riippumatta levyosion koosta
  • Tilanvaraustaulu toteutettu binääripuuna → Haku nopeutuu.

Muiden alustojen tiedostojärjestelmät[muokkaa | muokkaa wikitekstiä]

BeFS[muokkaa | muokkaa wikitekstiä]

MFS[muokkaa | muokkaa wikitekstiä]

HFS/HFS+[muokkaa | muokkaa wikitekstiä]

OFS/FFS[muokkaa | muokkaa wikitekstiä]

  • Amigan AmigaOS tiedostojärjestelmät
  • nimet Old File System ja Fast File System

HPFS[muokkaa | muokkaa wikitekstiä]

Hajautetut levyjärjestelmät[muokkaa | muokkaa wikitekstiä]

AFS (Andrew Filesystem)[muokkaa | muokkaa wikitekstiä]

Pääartikkeli: Andrew File System

NFS (Network Filesystem)[muokkaa | muokkaa wikitekstiä]

Pääartikkeli: Network File System

SMB (Server Message Block)[muokkaa | muokkaa wikitekstiä]

Pääartikkeli: Server Message Block

9P[muokkaa | muokkaa wikitekstiä]

Pääartikkeli: 9P
  • Plan 9 käyttöjärjestelmään kehitetty protokolla

xFS[muokkaa | muokkaa wikitekstiä]

Jaetut levyjärjestelmät[muokkaa | muokkaa wikitekstiä]

Pääartikkeli: Jaettu levyjärjestelmä

GPFS[muokkaa | muokkaa wikitekstiä]

OCFS/OCFS2[muokkaa | muokkaa wikitekstiä]

Muut tiedostojärjestelmät[muokkaa | muokkaa wikitekstiä]

ISO 9660[muokkaa | muokkaa wikitekstiä]

UDF[muokkaa | muokkaa wikitekstiä]

  • Universal Disk Format, ISO/IEC 13346[23]
  • pakettipohjainen DVD-ROM tiedostojärjestelmä

Katso myös[muokkaa | muokkaa wikitekstiä]

Commons
Wikimedia Commonsissa on kuvia tai muita tiedostoja aiheesta Tiedostojärjestelmät.

Lähteet[muokkaa | muokkaa wikitekstiä]

  1. Arpaci-Dusseau, Remzi H. & Arpaci-Dusseau, Andrea C.: Crash Consistency: FSCK and Journaling Viitattu 16.2.2017.
  2. a b UFS & FFS Viitattu 16.2.2017.
  3. a b Allen, Hervey: Introduction to FreeBSD Additional Topics Viitattu 16.2.2017.
  4. Arpaci-Dusseau, Remzi H. & Arpaci-Dusseau, Andrea C.: Locality and The Fast File System Viitattu 16.2.2017.
  5. a b c Henson, Val: A Brief History of UNIX File Systems Viitattu 16.2.2017.
  6. A Fast File System for UNIX Viitattu 16.2.2017.
  7. a b c 9. Other filesystems Viitattu 16.2.2017.
  8. a b c d JFS for Linux Viitattu 16.2.2017.
  9. Differences between JFS and Enhanced JFS IBM. Viitattu 16.2.2017.
  10. Journaled File System Technology for Linux Viitattu 16.2.2017.
  11. Arpaci-Dusseau, Remzi H. & Arpaci-Dusseau, Andrea C.: Log-structured File Systems Viitattu 16.2.2017.
  12. QNX File Systems Viitattu 16.2.2017.
  13. CHAPTER 6. THE XFS FILE SYSTEM Red Hat. Viitattu 16.2.2017.
  14. 6.1 About the XFS File System Oracle. Viitattu 16.2.2017.
  15. a b XFS: A high-performance journaling filesystem SGI. Viitattu 16.2.2017.
  16. History Viitattu 16.2.2017.
  17. a b c d e f EXT File System Viitattu 16.2.2017.
  18. 5.1 About the Btrfs File System Oracle. Viitattu 16.2.2017.
  19. a b It’s 2016: and BTRFS could really be your next filesystem Viitattu 16.2.2017.
  20. How Facebook Uses Linux and Btrfs: An Interview with Chris Mason Viitattu 16.2.2017.
  21. xFS: A Wide Area Mass Storage File System Viitattu 16.2.2017.
  22. Distributed Data Structures xFS: Serverless Network File System Viitattu 16.2.2017.
  23. ISO/IEC 13346-1:1995 Viitattu 16.2.2017.