3 545
muokkausta
Ei muokkausyhteenvetoa |
pEi muokkausyhteenvetoa |
||
(5 välissä olevaa versiota 2 käyttäjän tekeminä ei näytetä) | |||
Rivi 1: | Rivi 1: | ||
ZFS "Zettabyte File System" on | '''ZFS''' "Zettabyte File System" on [[Sun Microsystems|Sunin]] (nyk. [[Oracle]]) Solarista varten kehittämä moderni tallennusjärjestelmä. Vapaista käyttöjärjestelmistä [[OpenSolaris]]-pohjaiset sekä [[FreeBSD]] tukevat sitä suoraan, ja Linux-porttaus on saatavilla. Avoimen lähdekoodin ZFS-toteutusta ylläpidetään yhtenäisenä [[OpenZFS]]-projektina ytimestä riippumatta. ZFS on tiedostojärjestelmän, loogisen taltionhallintajärjestelmän sekä [[RAID]]-toteutuksen yhdistelmä. | ||
==Mikä ZFS on?== | |||
ZFS on tallennusjärjestelmä, jossa on luovuttu perinteisestä tallennusjärjestelmän abstraktiojaosta matalan tason tallenuskerrokseen (levy suoraan tai [[RAID]]), [[LVM|loogiseen taltiohallintaan]] ja [[tiedostojärjestelmä]]än. Tämä mahdollistaa toimintoja, jotka perinteisellä kerrosjaolla on vaikea toteuttaa, ainakaan suorituskykyisesti. ZFS on ollut jo pitkään tuotantovalmis Solaris-järjestelmissä, ja nykyisen myös sen Linux-porttausta voidaan pitää vakaana. | |||
ZFS tarjoaa datan eheyden varmistuksen, tuen suurille tietomäärille, tilannekuville ja datan kirjoituksen yhteydessä tehtävälle kopioinnille (copy-on-write) sekä tuen itseparantuvalle datalle. ZFS:n lähdekoodi avattiin [[OpenSolaris|OpenSolariksen]] yhteydessä, [[CDDL]]:n alaisuudessa. Tämä lisenssi on vaikeuttanut ZFS:n porttaamista Linux-ytimeen, mutta ainakin [[Ubuntu]]-jakelu tarjoaa nykyään ZFS-tukea. CDDL:n ja [[Ydin|ytimen]] [[GNU GPL|GPL-lisenssin]] epäyhteensopivuusongelmaa kierretään Ubuntun tapauksessa toimittamalla ZFS-tuki [[Ytimen moduulit|ytimen moduulina]]. Ratkaisun juridista kestävyyttä ei ole koeteltu tuomioistuimissa. | |||
==ZFS:n ryhmitetty varanto== | |||
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 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. | ||
Rivi 18: | Rivi 13: | ||
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. | 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== | |||
== Tapahtumasemantiikat == | |||
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 <tt>fsck</tt>-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 <tt>fsck</tt>-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. | 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 <tt>fsck</tt>-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 <tt>fsck</tt>-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 <tt>O_DSYNC</tt>-lippua) on aina taatusti kirjoitettu ennen jatkamista, joten data ei koskaan pääse katoamaan. | 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 <tt>O_DSYNC</tt>-lippua) on aina taatusti kirjoitettu ennen jatkamista, joten data ei koskaan pääse katoamaan. | ||
==Tarkistussummat ja itse-parantuva data== | |||
== Tarkistussummat ja itse-parantuva data == | |||
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. | 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ä. | 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ä. | ||
==Skaalautuvuus== | |||
Yksi oleellinen suunnitteluvaatimus ZFS:lle on skaalautuvuus. Tiedostojärjestelmä on itsessään 128-bittinen, mahdollistaen 256 tuhatta biljoonaa tavua 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. | |||
== | ==Tilannekuvat== | ||
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. | 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== | |||
== Yksinkertaistettu ylläpito == | 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 on helppoa luoda ja hallita tiedostojärjestelmiä ilman tarvetta 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. | ||
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 | |||
==Aiheesta muualla== | ==Aiheesta muualla== |