ZFS

Kohteesta Linux.fi
Siirry navigaatioon Siirry hakuun

ZFS "Zettabyte File System" on SUN:in Solarista varten kehittämä edistyksellinen tiedostojärjestelmä. ZFS on tiedostojärjestelmän ja loogisen levyhallintajärjestelmän yhdistelmä.

Mikä ZFS on?[muokkaa]

Solariksen ZFS tiedostojärjestelmä on vallankumouksellinen uusi tiedostojärjestelmä, joka muuttaa perustavanlaatuisesti tapaa, jolla tiedostojärjestelmiä on hallittu. Se tarjoaa ominaisuuksia ja etuja, joita ei löydy mistään toisesta tiedostojärjestelmästä. ZFS on vakaa, skaalautuva ja sen ylläpito on helppoa.

ZFS tarjoaa dataintegriteetin, tuen suurille tietomäärille, tilannekuville ja datan kirjoituksen yhteydessä tehtävälle kopioinnille (copy-on-write) sekä tietojen jatkuvan integriteettitarkistuksen ja tuen itse-parantuvalle datalle. ZFS on toteutettu open source -ohjelmistona ja sen lisenssi on CDDL, Common Development and Distribution License. Tämä lisenssi on vaikeuttanut ZFS:n siirtoa Linux-ytimeen. Linuxin natiivi ZFS-siirros on työn alla. ZFS tuotemerkin omistaa Oracle Corporation.

ZFS:n ryhmitetty varanto[muokkaa]

ZFS käyttää ryhmitetyn varannon (pooled storage) konseptia hallitsemaan fyysistä talletustilaa. Tiedostojärjestelmät on perinteisesti luotu yksittäisen fyysisen laitteen päälle. Loogisen levyn (volume manager) konsepti on otettu käyttöön mahdollistamaan useamman laitteen hyödyntämistä ja tarjoamaan datan redundanttisuutta, jolloin tiedostojärjestelmiä ei tarvitse muuttaa kun hyödynnetään useampaa levylaitetta. Loogisen levyn mallin käyttö lisäsi kompleksisen lisäkerroksen ja lopulta esti joidenkin tiedostojärjestelmien kehittymisen, koska tiedostojärjestelmällä ei ollut kontrollia datan fyysiseen sijoittumiseen virtualisoiduilla taltioilla.

ZFS poistaa täysin loogisen taltionhallinnan. Sen sijaan, että sinut pakotettaisiin luomaan virtualisoitu taltio, ZFS niputtaa laitteet yhdeksi ryhmitetyksi varannoksi. Ryhmitetty varanto kuvaa varannon fyysiset ominaisuudet (laitteiden asettelun, datan redundattisuuden ja niin edelleen) ja toimii mielivaltaisena datavarastona, jolle tiedostojärjestelmät voidaan luoda. Yksittäiset laitteet eivät enää rajoita tiedostojärjestelmiä, mahdollistaen niiden jakaa levytilaa kaikkien varannon tiedostojärjestelmien kesken. Tiedostojärjestelmän kokoa ei tarvitse ennalta päättää, koska tiedostojärjestelmä kasvaa automaattisesti ryhmitettyyn varantoon allokoidun levytilan puitteissa. Kun uusi varanto lisätään, kaikki varannon tiedostojärjestelmät voivat käyttää lisälevytilaa ilman lisätyötä. Ryhmitetty varanto toimii monin tavoin samalla tavalla kuin virtuaalinen muistijärjestelmä: kun muistikampa lisätään järjestelmään, ei käyttöjärjestelmä pakota sinua suorittamaan komentoja muistin konfiguroimiseksi ja ohjaamaan sitä yksittäisten prosessien käyttöön. Kaikki järjestelmän prosessit käyttävät lisämuistia automaattisesti.

ZFS koostuu ryhmitetyistä varannoista. Yksi ryhmitetty varanto sisältää yhden tai useamman levysetin. Levysetti voi olla joko yksittäinen levy, peilattu levypari (tai usempi levy peilattuna keskenään), kolme tai useampi levy sarjoitettuna raidz1:llä (Solariksen vastine RAID-5:lle), tai neljä tai useampi levy sarjoitettuna raidz2:lla (mahdollistaa kahden levyn hajoamisen ilman datan katoamista). Jos varannosta loppuu levytila, niin tarvitsee ainoastaan lisätä uusi levysetti ryhmään ja ZFS laajentaa tiedostojärjestelmän automaattisesti käyttäen saatavilla olevan lisätilan. ZFS tarjoaa myös tuen usealle tiedostojärjestelmälle, joita on helppo muodostaa lennossa, vaikka oma jokaiselle käyttäjälle.

Tapahtumasemantiikat[muokkaa]

ZFS on tapahtumallinen tiedostojärjestelmä, mikä tarkoittaa sitä, että tiedostojärjestelmän tila on aina levyllä konsistentti eli ristiriidaton. Perinteiset tiedostojärjestelmät ylikirjoittavat dataa käytössä, joka tarkoittaa sitä, että jos järjestelmän virta katkeaa esimerkiksi sen välillä, jolloin tietolohkoa allokoidaan ja jolloin se linkitetään hakemistoon, tiedostojärjestelmä joutuu epäkonsistenttiin tilaan. Historiallisesti tämä ongelma ratkaistiin fsck-komennon käytön avulla. Tämä komento oli vastuussa läpikäydä ja varmistaa tiedostojärjestelmän tilanteen ja yrittää korjata mahdolliset epäkonsistenttiudet tämän prosessin aikana. Tiedostojärjestelmien epäkonsistenttiuden ongelma on aiheuttanut suurta harmia ylläpitäjille ja fsck-komennon käyttö ei ole koskaan taannut kaikkien mahdollisten ongelmien ratkeamista. Hiljattain tiedostojärjestelmiin on esitelty kirjauksen (journaling) konsepti. Kirjanpitoprosessi tallentaa toiminnot erilliseen kirjanpitoon, joka voidaan tarvittaessa läpikäydä uudelleen turvallisesti mikäli järjestelmä kaatuu. Tämä kirjauksen prosessi aiheuttaa tarpeetonta kuormaa koska data pitää kirjoittaa kahdesti, joka johtaa joukkoon uusia ongelmia, kuten silloin, kun kirjanpitoa ei voida asianmukaisesti läpikäydä uudelleen.

Tapahtumallisessa tiedostojärjestelmässä data hallitaan käyttäen kopio- tai kirjoitussemantiikkaa. Dataa ei koskaan ylikirjoiteta ja jokainen sarja operaatioita on joko täysin kommitoitu tai täysin hylätty. Siten tiedostojärjestelmä ei voi koskaan korruptoitua virtakatkoksen tai järjestelmän kaatumisen seurauksena. Vaikka viimeiset kirjoitetut osat datasta voivat kadota, tiedostojärjestelmä on itsessään konsistentti. Lisäksi synkroninen data (joka kirjoitetaan käyttäen O_DSYNC-lippua) on aina taatusti kirjoitettu ennen jatkamista, joten data ei koskaan pääse katoamaan.

Tarkistussummat ja itse-parantuva data[muokkaa]

ZFS:ssä kaikki data ja metadata varmistetaan käyttämällä käyttäjän valittavissa olevia tarkistussumma-algoritmeja. Perinteisissä tiedostojärjestelmissä, jotka tarjoavat tuen tarkistussummilla varmistamiselle, ne on suoritettu lohko-perustaisesti, tarpeettomasti loogisen levyjen hallintakerroksen ja perinteisen tiedostojärjestelmämallin vuoksi. Perinteinen suunnittelu tarkoittaa sitä, että tietyt häiriöt, kuten kokonaisen lohkon kirjoittaminen väärään sijaintiin, voi johtaa virheelliseen dataan, mutta myös tarkistussumman virheisiin. ZFS:ssä tarkistussummat talletetaan siten, että nämä häiriöt tunnistetaan ja niistä voidaan palautua sulavasti. Kaikki tarkistussummien ja datan palauttaminen suoritetaan tiedostojärjestelmän tasolla, ja ne ovat läpinäkyviä sovelluksille.

Lisäksi ZFS tarjoaa tuen itse-parantuvalle tiedolle. ZFS tukee tallennusvarannoja, jotka tarjoavat vaihtoehtoisia tapoja datan redundanssille. Kun epäkelvollinen datalohko tunnistetaan, ZFS noutaa korrektin datan toisesta redundantista kopiosta ja korvaa epäkelvollisen datan sillä.

Ennennäkemätön skaalautuvuus[muokkaa]

Yksi oleellinen suunnitteluelementti ZFS:lle on skaalautuvuus. Tiedostojärjestelmä on itsessään 128-bittinen, mahdollistaen 256 biljoonaa zetatavua tallennustilaa. Kaikki metatieto on allokoitu dynaamisesti, joten ei ole tarvetta esivarata tunnustietueita (inodeja) tai muulla tavoin rajoittaa tiedostojärjestelmän skaalautuvuutta kun se on ensimmäisen kerran luotu. Kaikki algoritmit on kirjoitettu skaalautuvuus huomioiden. Hakemistoissa voi olla jopa 2^48 (256 triljoonaa) alkiota ja tiedostojärjestelmien tai tiedostojen lukumäärälle ei ole ylärajaa, joita voidaan sisällyttää tiedostojärjestelmässä.

ZFS tilannekuvat[muokkaa]

Tilannekuva (snapshot) on vain luettavissa oleva kopio tiedostojärjestelmästä tai taltiosta. Tilannekuvia voidaan luoda nopeasti ja helposti. Aluksi tilannekuvat eivät kuluta lainkaan lisälevytilaa varannosta. Kun data aktiivisessa datasetissä muuttuu, tilannekuva alkaa kuluttamaan levytilaa viittaamalla vanhaan dataan. Tämän seurauksena tilannekuva estää datan vapauttamisen takaisin varantoon.

Yksinkertaistettu ylläpito[muokkaa]

Kaikkein tärkeimpänä, ZFS tarjoaa merkittävästi yksinkertaistetun ylläpitomallin. Hierarkkista tiedostojärjestelmän mallia hyödyntämällä, ominaisuuksien periytyminen ja automaattinen liitäntäpisteiden hallinta ja NFS-jakojen semantiikan avulla, ZFS tekee helpoksi luoda ja hallita tiedostojärjestelmiä ilman vaatimusta käyttää useita komentoja ja konfiguraatiotiedostojen muokkaamista. Voit helposti asettaa kiintiöitä tai varauksia, kääntää pakkauksen päälle tai pois, tai hallita liitäntäpisteitä lukuisille tiedostojärjestelmille yhdellä komennolla. Voit tutkia tai korvata laitteita opettelematta loogisen levynhallinnan omia komentoja. Voit lähettää ja vastaanottaa tiedostojärjestelmän tilannekuvien tietovirtoja. ZFS hallitsee tiedostojärjestelmää hierarkian kautta, joka sallii sen yksinkertaistetun ominaisuuksien hallinnan, kuten kiintiöt, varaukset, tiivistäminen ja liitospisteet. Tässä mallissa tiedostojärjestelmät ovat keskeisiä kontrollipisteitä. Tiedostojärjestelmät ovat itsessään taloudellisia (vastaavasti kuin hakemiston luonti), joten tiedostojärjestelmän luontia kannustetaan jokaiselle käyttäjälle, projektille, työtilalle ja niin edelleen. Tämä malli antaa sinulle mahdollisuuden määritellä hienojakoisesti hallintapaikkoja.

Aiheesta muualla[muokkaa]

v  k  m
Linuxin tukemia tiedostojärjestelmiä
Btrfs | Ext2 | Ext3 | Ext4 | FAT | JFS | NFS | NTFS | ReiserFS | Reiser4 | SMB | SquashFS | XFS