ZFS | |
---|---|
Kehittäjä | Oracle (entinen Sun Microsystems ) , OpenZFS- |
Tiedostojärjestelmä | ZFS - Zettabyte-tiedostojärjestelmä |
Jättöpäivämäärä | marraskuuta 2005 ( OpenSolaris ) |
Rakenne | |
Kansion sisältö | Laajennettava hash-taulukko |
Rajoitukset | |
Tiedoston enimmäiskoko | 16 exbitavua |
Tiedostojen enimmäismäärä | 248 _ |
Tiedostonimen enimmäispituus | 255 tavua |
Suurin äänenvoimakkuuden koko | 256 sebitavua |
Otsikoissa kelvollisia merkkejä | ei koodausta tai UTF-8 (valinnainen) |
Ominaisuudet | |
Päivämäärän tallennustarkkuus | 1 ns [1] |
Metatietovirrat | Kyllä (nimeltään Extended Attributes ) |
Attribuutit | POSIX , lisä |
Käyttöoikeudet | POSIX |
Taustan pakkaus | Joo |
Taustasalaus | Pool-versiosta 30 |
OS tuettu | Solaris , OpenSolaris , FreeBSD , Linux ( FUSE :n tai erillisen ydinmoduulin kautta ( ZFS Linuxissa )), Apple Mac OS X 10.5 , Windows ( ZFSin ) |
ZFS (Zettabyte File System) on Merkle - puun kopiointi-kirjoitustiedostojärjestelmä , jonka Sun Microsystems loi vuosina 2004–2005 Solaris - käyttöjärjestelmää varten . Tämä tiedostojärjestelmä tukee suuria tietomääriä, yhdistää käsitteet tiedostojärjestelmästä, RAID -taulukoista, loogisesta levyn (volyymi) hallinnasta , kevyiden tiedostojärjestelmien periaatteesta ja tarjoaa yksinkertaisen tiedontallennusmäärien hallinnan. Kun ZFS luotiin, sen tietojen asettelurakenne oli innovatiivinen. On olemassa avoimia ZFS-toteutuksia , erityisesti OpenZFS on lisensoitu CDDL-lisenssillä ( Common Development and Distribution License ). Lisenssirajoitusten vuoksi ZFS-tuki GNU/Linuxissa on rajoitettu, mikä ei päde ZFS:n kaltaiseen Btrfs -tiedostojärjestelmään . ZFS:ää kehitetään parhaillaan aktiivisesti.
ZFS:n tärkeimmät edut ovat sen täydellinen fyysisten tietovälineiden ja loogisten taltioiden hallinta sekä tiedostojärjestelmän johdonmukaisuuden jatkuva ylläpito. Tiedonabstrahoinnin eri tasoilla toimiva ZFS pystyy tarjoamaan nopean pääsyn niihin, hallitsemaan niiden eheyttä ja minimoimaan tietojen pirstoutumisen . ZFS on erittäin konfiguroitavissa, sen avulla voit muuttaa prosessissa olevan levytilan määrää ja asettaa erikokoisia tietolohkoja eri sovelluksille ja tarjoaa rinnakkaisia luku- ja kirjoitustoimintoja.
ZFS:n suunnitteli ja rakensi Sun Microsystemsissä Jeff Bonwickin johtama tiimi, ja se julkistettiin 14. syyskuuta 2004 [2] . Lopullisen julkaisun lähdekoodi integroitiin Solariksen päähaaraan 31. lokakuuta 2005 [3] .
ZFS sisällytettiin OpenSolaris -versioon 27 , joka julkaistiin 16. marraskuuta 2005. Sun ilmoitti, että ZFS integroitiin Solaris 10:n 6/06 päivitykseen kesäkuussa 2006, vuosi OpenSolaris - yhteisön avaamisen jälkeen [4] .
ZFS:n nimi oli alun perin " Zettabyte File System", mutta myöhemmin nimi muuttui yksinkertaiseksi lyhenteeksi [5] .
ZFS julkaistiin kaupallisella lisenssillä osana Solaris-käyttöjärjestelmää, sitten SUN Microsystemsin avoimen lähdekoodin ZFS OpenSolaris-projektissa CDDL:n alla. Oraclen SUN Microsystemsin hankinnan jälkeen koodi suljettiin uudelleen, mutta siihen mennessä ZFS oli jo mukana FreeBSD:ssä ja muissa avoimen lähdekoodin projekteissa, jotka kehittivät itsenäisesti ja vaihtoivat lähdekoodeja "backporttien" ( eng. backports ) kautta [6] .
Vuonna 2013 käynnistettiin OpenZFS- projekti [7] [8] , joka ottaa Illumosilta uusia ominaisuuksia ja korjauksia ja jakaa kaikkiin portteihin muille alustoille ja päinvastoin [9] .
ZFS - 128-bittinen[10] tiedostojärjestelmä, jonka avulla se voi tallentaa 18,4 × 10 18 kertaa enemmän tietoa kuin kaikki tunnetut 64-bittiset järjestelmät. ZFS on suunniteltu niin, että sen rajoitukset ovat niin mahdottomia saavuttaa, että niitä ei tule kohdata käytännössä lähitulevaisuudessa [11] .
Jotkut ZFS:n teoreettiset rajoitukset:
Samanaikaisesti tiedostojärjestelmän hallintaohjelmat asettavat lisärajoituksia.
Toisin kuin perinteiset tiedostojärjestelmät, jotka sijaitsevat yhdessä laitteessa ja vaativat näin ollen volyymin hallinnan, kun niitä käytetään useammassa kuin yhdessä laitteessa, ZFS on rakennettu zpooleiksi kutsuttujen virtuaalisten tallennuspoolien päälle . Pooli on rakennettu virtuaalilaitteista ( vdevs ), joista jokainen on joko fyysinen laite tai yhden tai useamman laitteen peili ( RAID 1) tai ( RAID Z) kahden tai useamman laitteen ryhmä. Kaikkien vdevien kapasiteetti on sitten kaikkien zpoolin tiedostojärjestelmien käytettävissä .
Kiintiö voidaan asettaa rajoittamaan tietylle tiedostojärjestelmälle tai taltiolle käytettävissä olevaa tilaa . Lisäksi on mahdollista käyttää levyvarausta (limiittiä) - tämä varmistaa, että tietylle tiedostojärjestelmälle tai taltiolle on aina vapaata tilaa.
ZFS Pool -versiotZFS-tiedostojärjestelmästä ja ZFS-varannosta ( zpool ) on erilaisia versioita, ja erilaisia toimintoja on saatavana versiosta riippuen. Marraskuussa 2012 ZFS-poolista on 34 versiota. Kaikki poolin versiot on alun perin julkaistu Solarisille .
Versio 2 sisälsi tuen replikoiduille metatiedoille ( sama lohkot ) . ZFS-levymuodon puurakenteesta johtuen poolin metatiedoissa olevat korjaamattomat virheet voivat johtaa siihen, että poolia ei voida avata. Tämä ominaisuus tarjoaa automaattisen metatietojen replikoinnin (jopa kolme kopiota kustakin lohkosta ) riippumatta taustalla olevasta poolin laajuisesta redundanssista . Esimerkiksi poolissa, jossa on yksi peili, kriittisimmät metatiedot kirjoitetaan kolme kertaa peilin kummallekin puolelle, yhteensä kuusi kopiota. Tämä varmistaa, että jos tiedot katoavat korruption vuoksi, kaikki poolin tiedot ovat paikannettavissa ja pooli on kunnossa.
Versio 3 sisältää tuen hot varaosille ja kaksoispariteetti RAID-Z (raidz2); versio 4 esitteli tuen ZFS-poolin historian ylläpitämiselle ( zpool history); versio 5 lisäsi tuen lennossa tapahtuvalle pakkaamiselle ZFS-tietojoukoille gzip -menetelmällä ; versio 6 sisältää bootfs- ominaisuuden tuen (voit vaihtaa käynnistyskäyttöjärjestelmän pääkäyttäjän FS:n attribuutin avulla käynnistyslatainvaihtoehdon lisäksi).
Versio 7 esitteli tuen "kohdelokille" ( ZFS Intent Log , ZIL , lit. "intent log"), joka tarjoaa sovelluksille mahdollisuuden tietää, että niiden muokkaamat tiedot ovat vakaassa tallennustilassa järjestelmäkutsun jälkeen. . Kohdeloki pitää kirjaa näistä järjestelmäkutsuista, ne toistetaan uudelleen, jos tapahtui virtakatkos tai kriittinen virhe, jossa pääpooli ei kuitannut niiden suorittamista. Kun kohdekansio on päävarannon ulkopuolella, se varaa lohkot, jotka ketjuttavat poolin läpi.
Versiossa 8 on otettu käyttöön mahdollisuus delegoida ZFS:n hallintaan liittyviä hallinnollisia tehtäviä tavallisille käyttäjille; sitä ennen vain järjestelmänvalvojat pystyivät hallitsemaan ZFS:ää.
Versiossa 9 on olemassa olevien kiintiö- ja varaustoimintojen lisäksi lisätty kiintiöiden ja varausten määrittäminen, joka ei sisällä sisäkkäisten tietorakenteiden, kuten kloonien ja kiintiöiden ( zfs set refquota, zfs set refreservation) aiheuttamaa levytilan käyttöä. Varaus muodostetaan automaattisesti, kun luotu ei-harva ( ei-harva ) ZFS-taltio vastaa osion kokoa. Myös versiossa 9 on lisätty tuki CIFS -palvelimelle.
Versio 10 esitteli mahdollisuuden lisätä laitteita pooliin välimuistilaitteina lisävälimuistin muodostamiseksi päämuistin ja levyn välille. Välimuistilaitteiden käyttö parantaa merkittävästi suorituskykyä epäjärjestyn, enimmäkseen staattisen sisällön raskaassa lukemisessa. Versiossa 12 snapshot-ominaisuuksien tuki ilmestyi, versiossa 13 seuraavat tilannekuvaominaisuudet tulivat saataville: usedbysnapshots, usedbychildren, usedbyrefreservation, usedbydataset, versiossa 14 ja ominaisuudet ovat myös saatavilla passthrough-x, aclinheritversiossa 15 ominaisuudet userused, groupused, userquota, sisältyvät groupquota.
Versio 17 esitteli tuen kolminkertaiselle pariteetti RAID-Z :lle. Versio 18 tukee ZFS snapshot holds - ominaisuutta . Versiosta 19 alkaen tuli mahdolliseksi irrottaa liitetty laite lokien tallentamista varten, aiemmin tällaista laitetta ei voitu poistaa. Versio 20 sisältää zle - pakkausalgoritmin .
Versio 21 ottaa käyttöön duplikoinnin (yleensä zle:n käyttö). Versiosta 30 alkaen tuetaan tiedostojärjestelmän salausta , versiosta 32 alkaen tuetaan 1 Mt:n lohkoa ja versiossa 34 toteutetaan tiedostojärjestelmien välisten periytyvien verkkoosuuksien luominen.
Versio 37 lisäsi tuen lz4 -pakkausalgoritmille (tehokkaampi ja nopeampi kuin nykyiset).
ZFS käyttää kopiointi-kirjoitusmekanismiin perustuvaa objektitapahtumamallia . Kaikki osoittimet tiedostojärjestelmän lohkoihin sisältävät kohdelohkossa 256-bittisen tarkistussumman , joka tarkistetaan lohkoa luettaessa. Tarkistussummana voidaan käyttää joko Fletcher-summaa tai SHA-256: n kryptografista hajautusfunktiota . [13] Tiedoille voidaan valita muita tarkistussummia. Aktiivista (tällä hetkellä) dataa sisältäviä tietolohkoja ei koskaan korvata yhdessä; päinvastoin, uusi lohko allokoidaan, siihen kirjoitetaan muuttunut data ja sitten siihen viittaavien lohkojen metatiedot, jolloin kaikki allokoidaan ja kirjoitetaan uudelleen. Ylimääräisten kustannusten vähentämiseksi tämä prosessi ryhmittelee useita päivityksiä tapahtumaryhmään ja kirjaa tarvittaessa synkronisten kirjoitusten käytön.
ZFS-pooli ylläpitää lokia poolin tietojen viimeisistä muutamasta kymmenestä versiosta (viimeisiltä minuuteilta, tunneilta tai päiviltä riippuen tietojen muutoksen intensiteetistä), joka on suunniteltu palauttamaan tiedot, jos järjestelmävirhe on aiheuttanut yhdistyvät käyttökelvottomaan, parantumattomaan tilaan. Kopioinnin yhteydessä kaikki nämä lokin tietojen versiot ovat itsenäisiä, mutta niillä on yhteinen tieto.
ZFS:n kopiointi-kirjoitusmallilla on toinen voimakas etu: kun ZFS kirjoittaa uutta tietoa - sen sijaan, että se vapauttaisi vanhaa dataa sisältäviä lohkoja - se voi tallentaa ne luomalla tilannekuvia tiedostojärjestelmästä. Tilannekuvat ZFS:ssä luodaan erittäin nopeasti (poikkeuksena harvoja tapauksia, joissa pitkä pooli estää FS:n aikaa vievän toiminnon), koska kaikki tilannevedoksen tiedot on jo tallennettu. ne ovat myös tilaa säästäviä, koska kaikki muuttumattomat tiedot jaetaan (jaetaan) tiedostojärjestelmän ja sen tilannevedoksen välillä.
Myös kirjoitettava tilannekuva ("klooni") voidaan luoda mistä tahansa tilannevedosta, mikä johtaa kahteen tai useampaan itsenäiseen tiedostojärjestelmään tai taltioon, jotka jakavat lohkokompleksin, mikä vähentää kokonaisjalanjälkeä ja lyhentää kloonin luontiaikaa. Heti kun muutoksia tehdään mihin tahansa tiedostojärjestelmän klooniin, sille luodaan lohkoja uusista tiedoista ja vanhat tiedot säilyvät kaikissa muissa klooneissa.
Kun klooni luodaan, se linkitetään tilannekuvaan, josta se luotiin. Tätä tilannekuvaa ei voi tuhota, jos vähintään kaksi kloonia viittaa siihen (mukaan lukien alkuperäinen tallennustila). Tämän linkin poistamiseksi tallennustila (tiedostojärjestelmä tai taltio) on luotava uudelleen, mutta tämä on helppo tehdä siirrolla, ja voit välttää ylimääräisen tilan viemisen poolissa, jos otat päällekkäisyyden poiston siirron aikana ja siirrät tallennustilan sama uima-allas.
Tilannevedosten avulla voit käyttää tietoja, jotka olivat varastossa tilannevedoksen ottamisen aikaan samana vain luku -varastona riippumatta alkuperäisestä varastosta, sen klooneista ja muista tilannekuvista. Niiden avulla voit myös palauttaa tallennustiedot nopeasti ja tarkasti tilannekuva-tilaan.
Tilannekuvia ja klooneja voidaan luoda rekursiivisesti tiedostojärjestelmäpuulle. Tämä välttää tarpeen toistaa komentoja ja hallita tapahtumia itse, koska rekursiivinen tilannekuvan luominen on ydintä.
Tilannekuvien ja kloonien (sekä uusien tiedostojärjestelmien) luominen voi olla vaikeaa ZFS:n rajoitusten vuoksi. Tilannekuvia ja klooneja ei voida luoda, jos niistä vähintään yhden nimi ylittää rajan (ja tilannevedoksen koko nimi on vähintään 2 merkkiä pidempi kuin alkuperäisen koko nimi), jos on nimiristiriita (olennainen rekursiivista tilannekuvan luomista varten), jos uudet kiintiöt ylittyvät tai varaukset eivät ole mahdollisia (kiintiöt ja varaukset peritään alkuperäisestä).
Tilannekuvien perusteella toteutetaan lisätallennusvarmuuskopiot. Tilannekuvan edelleenlähetyksen avulla voit luoda saman tilannevedossarjan uudelleen missä tahansa ZFS-varannossa. Kun uudet tilannevedokset on luotu alkuperäisestä, asteittainen tilannevedossiirto luo samat päivitetyt tiedot uudelleen kopioon tai kloonaukseen, ellei päivitysristiriita ole. Tilannekuvat kertovat myös, mitä tiedostoja on muokattu, luotu, poistettu ja nimetty uudelleen tilannekuvien välillä.
Kaikkien laitteiden dynaaminen osiointi suurimmalla suorituskyvyllä tarkoittaa, että lisälaitteet sisällytetään zpooliin, laajemmat kanavat laajenevat automaattisesti sisältämään kaikkien poolin levyjen käytön, mikä tasapainottaa kirjoituskuormitusta.
ZFS käyttää muuttuvaa lohkokokoa, joka on enintään 1 megatavu (poolversiosta 32 alkaen se oli aiemmin jopa 128 kilotavua). Tällä hetkellä järjestelmänvalvoja voi asettaa käytettävän lohkon enimmäiskoon, mutta osa työstä epäonnistuu (tai epäonnistuu), jos käytetään liian suuria lohkoja. Automaattiset suorituskykyasetukset vastaavat oikeuksia.
Jos pakkaus on käytössä, käytetään muuttuvia lohkokokoja. Jos lohko on pakattu, se voi sulautua pienemmäksi lohkoksi, mikä tarkoittaa, että levytilaa käytetään vähemmän ja suoritusteho (Input/Output) kasvaa (kustannushintaan lisääntynyt prosessorin ja RAM-muistin käyttö pakkaus- ja purkutoimintoihin).
ZFS-pooli tukee myös erilaisia laitesektorikokoja ja valitsee automaattisesti suurimman lohkokoon poolin luomisen yhteydessä määritetyistä laitteista (sen jälkeen poolilohkon kokoa ei voi muuttaa). 512 tavun ja 4 KiB:n (4K) kokoja tuetaan vakaasti. Myös suuria lohkokokoja tuetaan, mutta käyttöjärjestelmä ei välttämättä toimi vakaasti.
Päästä päähän -eheyden hallinta tarkoittaa tarkistussumman kirjoittamista levylle kullekin tietolohkolle, ja tarkistussumma ja tiedot on sijoitettu erityisesti mahdollisimman kauas toisistaan niiden nivelvaurioiden todennäköisyyden vähentämiseksi. Jos poolissa on useita laitteita, toisessa niistä oleville tiedoille kirjoitetaan tarkistussumma toiseen. Tarkistussummia ei lasketa vain tiedoille, vaan myös metatiedoille, ja käy ilmi, että poolissa on aina tarkistussumma jokaiselle tietolohkolle.
Lukeessa mitä tahansa lohkoa, sen tarkistussumma lasketaan ja tulosta verrataan levylle tallennettuun tarkistussummaan. Poikkeavuuksien sattuessa virhe havaitaan välittömästi. Tietenkin, jos poolissa ei ole etukäteen suunniteltu redundanssia (ei RAID-Z tai muuten), niin virhettä ei voida korjata, mutta vioittunutta dataa ei esitetä todellisena.
End-to-End Data Integrityn tarkoituksena on estää havaitsematon tietojen korruptio, joka johtuu aseman tai ohjaimen laitteisto- tai laiteohjelmistovioista. Vaikka tällaisen tapahtuman todennäköisyys vaikuttaa alhaiselta, jotkut tutkimukset osoittavat, että se on varsin merkittävä kaikenkokoisille organisaatioille [14] .
Ohjelmien, jotka lukevat tai kirjoittavat tietoja, on tuettava näitä ominaisuuksia (mahdollinen tiedoston yksittäisen lohkon lukemisen epäonnistuminen, mahdollisuus, että pooli joutuu odottamaan tallennustilan palautusta, jolloin I/O roikkuu määräämättömän ajan).
ZFS:ssä tiedostojärjestelmän manipulointi poolissa on helpompaa kuin perinteisten tiedostojärjestelmien käsittelyn määrä; ZFS-tiedostojärjestelmän luomiseen tai muokkaamiseen vaadittava aika ja vaiva on enemmän kuin uuden hakemiston työmäärä kuin osion käsittely muissa teknologioissa.
Muita ominaisuuksia ovat toiminto tietyn I/O-prioriteetin asettamiseen ajoitusjaksolla, tuki useille itsenäisille säikeille ennaltaehkäisevällä automaattisella pituuden ja pituuden havaitsemisella, älykäs puhdistus ja korjaus [15] , levyjen lataaminen ja jakaminen poolissa [16] , metatietojen moninkertainen toisto [17] , kopiointi-kirjoitusmekanismin tuki , mahdollisuus valita käynnistystiedostojärjestelmä käyttöjärjestelmän latausohjelmassa , asentaa pääkäynnistystiedostojärjestelmä, luoda useita juuritiedostojärjestelmiä, joista yksi (ja kaikki lapset) käytetään käyttöjärjestelmän latauksessa , kykyä integroida ohjelmistoja ja käyttöjärjestelmäpäivityksiä luomalla tilannekuvia ja klooneja tiedostojärjestelmistä, joihin ohjelmat on tallennettu, sekä näiden tilannevedosten käyttöä edellisen version ja kloonien palauttamiseen. luoda monikäynnistysjärjestelmä, jossa on mahdollisuus käynnistää erilaisia kokoonpanoja tai käyttöjärjestelmäversioita ( Solaris päivitetään oletuksena), vaihtoehto tiedostonimien rajoittaminen kelvolliseen UTF-8- tekstiin valitussa normaalimuodossa, vaihtoehto, jolla tiedostonimien kirjainkoko ei ole herkkä.
ZFS esittelee myös mukautuvan välimuistin korvaamisen ( ARC ), joka on uusi menetelmä välimuistin hallintaan perinteisten Solariksen muistissa olevien välimuistin virtuaalisivujen sijaan.
Matriisit ja niille konfiguroidut ZFS:t voidaan siirtää eri alustojen välillä, vaikka niillä olisikin erilainen endianness. ZFS-lohkomuoto mahdollistaa tavujen automaattisen tunnistamisen ja uudelleenjärjestämisen lennossa, kun metatietoja luetaan.
Samanaikaisesti eri järjestelmien erilainen tavujärjestys ei vaikuta sovelluksiin millään tavalla, niiden tiedostot jäävät yksinkertaiseksi tavujonoksi. Siten sovellukset ovat vastuussa itsenäisestä (alusta) muodosta jo itse tiedostoissa.
Pool-attribuutit ovat tapa hallita poolin ominaisuuksia ja asetuksia. Niillä on erikoistyyppejä ja kirjoitusrajoituksia. Ne osoittavat, onko pooli kirjoitettava vai luettavissa, onko tietojen duplikointi käytössä, FS oletuksena käyttöjärjestelmän lataamiseen, vaihtoehtoinen liitosjuuri, poolin ominaisuudet ja paljon muuta.
Tietovarastojärjestelmän attribuutit ovat tapa hallita arkistojen ominaisuuksia ja asetuksia. Niillä on erikoistyyppejä ja kirjoitusrajoituksia. Ne määrittävät salauksen, pakkaamisen, tarkistussummien, päällekkäisyyden poistamisen, varmuuskopioinnin, välimuistin asetukset sekä tiettyjen muistien tallennuslohkojen koon. Ne osoittavat myös taltioiden koon, FS-liitospisteet, yksittäisten tallennusten saatavuuden kirjoittamista varten, varastojen kuulumisen vyöhykkeisiin, mandaatit, varaukset, kiintiöt, verkkoosuuksien automaattisen luomisen asetukset (NFS, SMB), käyttöoikeudet niihin ja lisää. Nämä attribuutit määrittävät holvien ominaisuudet. Nämä attribuutit helpottavat FS:ään liittyvien toimintojen hallintaa, jotka aiemmin suoritettiin manuaalisesti (esimerkiksi useiden lisätiedostojärjestelmien asennuksen määrittäminen, verkkoosuuksien luominen).
Osa järjestelmän attribuuteista periytyy alatason arkistojen kautta, minkä seurauksena attribuutteja sovelletaan välittömästi myös alitietovarastoihin. Ohjauspakkauksen, duplikoinnin, tietojen tarkistussummien ja vastaavien attribuutit koskevat vain äskettäin kirjoitettuja tietoja. Jotta niitä voidaan soveltaa kaikkiin tietoihin, tiedot on korvattava (tämä on helppo tehdä lähettämällä tilannekuvat samaan pooliin tallennusten uudelleenluomisen kanssa).
Jokaiselle tietovarastolle (FS, volyymi, tilannekuva jne.) voidaan määrittää mukautettuja määritteitä. Käyttäjäattribuutit eroavat järjestelmän määritteistä nimillään. Mukautetuissa määritteissä voit käyttää mitä tahansa nimeä (1–2¹⁰ tavua), mutta on suositeltavaa käyttää nimiä, jotka sisältävät kaksoispisteen (jotta vältyt ristiriitaisilta järjestelmämääritteiden kanssa), verkkotunnuksesi nimeä ennen tätä kaksoispistettä (muiden käyttäjien välttämiseksi) , määritteen nimi kaksoispisteen jälkeen. Muokatut attribuutit perivät alikaupat.
Uusien ominaisuuksien haaroittuneen kehityksen vuoksi eri käyttöjärjestelmissä useita näistä määritteistä käytetään uusina järjestelmämääritteinä.
Mukautettuja attribuutteja käyttävät käyttäjät ja erilliset ohjelmat (esimerkiksi automaattinen aikaliukusäätimen luonti- ja varmuuskopiointiohjelma).
Minkä tahansa tyyppisille tiedostoille voidaan määrittää useiden järjestelmäattribuuttien arvot. [18] Näiden määritteiden avulla voit hallita tiedoston toimintoja. Laajennetuilla tiedostomääritteillä on samat järjestelmäattribuutit.
Attribuuttien lisäksi, jotka tallentavat luontipäivämäärät, viimeinen käyttöoikeus, viimeinen muokkaus ja viimeinen metatietojen muokkaus, on attribuutteja [19] :
Ominaisuuden nimi | Attribuutin nimi komennossa chmod[20] | Tarkoitus | Mitä käyttöjärjestelmä tekee tällä määritteellä |
---|---|---|---|
Piilotettu | hidden | Tällä määritteellä varustetut tiedostot eivät näy yleisessä luettelossa, jos tämä vaihtoehto on käytössä ja tuettu tiedostojen tulostusohjelmassa. | Ei mitään. |
harva | sparse | Tällä määritteellä varustettu tiedosto on suositeltavaa käsitellä harvassa, eli se sisältää nollatavuisia lohkoja, joita ei ole tallennettu asemaan, vaan oletettu. Tämä attribuutti on neuvoa-antava, eikä sillä ole mitään tekemistä sen kanssa, onko tiedosto todella harvassa. Harvatiedostojen käsittelyyn tarkoitetun tiedostonkäsittelyohjelman on edelleen saatava tietoja tiedoston harvaista lohkoista FS:stä. | Ei mitään. |
Järjestelmällinen | system | Tällä määritteellä varustettu tiedosto on tarkoitettu käyttöjärjestelmälle, se ei ole käyttäjätiedosto. Yleensä ohjelmat jättävät huomioimatta. | Ei mitään. |
Vain lukemista varten | readonly | Tällä määritteellä varustettua tiedostoa ei voi muokata (vain tietoja, ei määritteitä). Koskee kaikkia poikkeuksetta. | Estää kirjoitusoikeuden, jos määrite on asetettu. |
Arkistointia varten | archive | Tiedosto on arkistoitava. | Ei mitään. |
Irrotettava | nounlink | Hakemistoissa hakemiston nimeä ja sen välittömien alaryhmien nimiä ei voi poistaa tai muuttaa. Muut tiedostotyypit: tiedoston nimeä ei voi poistaa tai muuttaa. | Estää nimen muuttamisen ja poistamisen, jos määrite on asetettu. |
muuttumaton | immutable | Tällä määritteellä varustettua tiedostoa ei voi muuttaa (tiedot, attribuutit, paitsi itse tämä attribuutti ja viimeinen käyttöpäivä). Koskee kaikkia poikkeuksetta. | Esteet muokkaavat käyttöoikeutta, jos määrite on asetettu. |
Vain täydennykseksi | appendonly | Tiedostotietoja voidaan muokata vain lisäämällä, mutta niitä ei voi korvata. | Estää kirjoitusoikeuden, jos määrite on asetettu. |
Ei kaatopaikoille | nodump | Ei käytössä Solarisissa. Tuli BSD :ltä . Muokkaus vaatii asianmukaiset oikeudet. | Ei käytössä Solarisissa. |
Virustorjuntakaranteenissa | av_quarantined | Pääsy tiedostoon on rajoitettu, kunnes karanteeni puretaan. Attribuutti voidaan asettaa ja poistaa vain, jos sinulla on pääkäyttäjän oikeudet (viruksentorjuntaohjelmalla on ne). | Estää pääsyn, jos määrite on asetettu. |
Muokattu (viimeisen virustorjuntatarkistuksen jälkeen) | av_modified | Osoittaa, että virustorjunta ei tarkista tiedoston nykyistä versiota. Aseta automaattisesti, kun tiedosto luodaan ja aina, kun tiedoston tietoja tai kokoa muutetaan. Käyttäjä, jolla on oikeus muuttaa attribuutteja, voi asettaa. Se voidaan nollata vain, jos sinulla on pääkäyttäjän oikeudet (virustorjuntalla on ne). | Asettaa attribuutin automaattisesti, kun tietoja muutetaan ja tiedosto luodaan. |
Voit luoda laajennetut attribuutit jokaiselle tiedostotyypille. Laajennettu attribuutti on nimetty tavujen joukko, aivan kuten tavallinen tiedosto. Laajennetuille määritteille, kuten tavallisille tiedostoille, voidaan määrittää omat käyttöoikeudet ja järjestelmäattribuutit. Toisin kuin tavallisessa tiedostossa, laajennettuja määritteitä, kiinteitä linkkejä, ei voida luoda laajennetuille määritteille. Laajennettuja tiedostomääritteitä voidaan käsitellä normaaleina tiedostoina rajoitetusti. Tätä varten kullekin tiedostolle luodaan nimetön kansio (ensimmäisen laajennetun määritteen luomisen yhteydessä), jossa on saatavilla tämän tiedoston laajennettuja määritteitä vastaavat tavalliset tiedostot. Solariksessa tähän kansioon pääsee runat[21] -apuohjelman avulla .
Yksittäisten varastojen hallinta voidaan delegoida käyttäjille. Tätä varten ZFS on jakanut valtuuksia, jotka voidaan delegoida (tallennustilojen, tilannekuvien luominen, poistaminen, asennus, vertailu, edelleenlähetys ja paljon muuta). Oikeudet delegoidaan valituille varastoille samalla tavalla kuin määritteiden määrittämisessä, ja ne ulottuvat lapsivarastoihin.
Kopiointi-kirjoitusperiaatteen ansiosta ZFS : n tiedot ovat aina johdonmukaisessa tilassa, tiedostoa ei voi kadota päällekirjoituksen yhteydessä [6] .
Käytettäessä redundanssia taltiota (RAIDZ-volyymit) tietoturva varmistetaan fyysisen mediavian varalta [6] [22] , kun taas RAIDZ on tehokas suurten tiedostojen suhteellisen pitkäkestoiseen tallentamiseen, erityisesti kun asetetaan lohkokokoa vastaavasti. tiedostot, ja toistuva uudelleenkirjoittaminen ja pienikokoisten tiedostojen sijoittaminen lisää prosessorin ja levyn alajärjestelmää [6] .
ZFS on osa Solaris - käyttöjärjestelmää ja se on saatavilla sekä SPARC - että x86 - alustoille . Koska ZFS-koodi on avoimen lähdekoodin (CDDL-lisenssi), portit muihin käyttöjärjestelmiin ja alustoihin voidaan tuottaa ilman Oraclen osallistumista.
OpenSolaris 2008.05 käyttää ZFS:ää oletustiedostojärjestelmänä.
Nexenta OSNexenta OS on käyttöjärjestelmä, jossa on GNU -ympäristö, joka on rakennettu OpenSolaris-ytimen ja sen ajonaikaisen ympäristön päälle. ZFS-tuki sisällytettiin ytimen alfa1-versioon. Äskettäin Nexenta Systems esitteli NexentaStorin , ZFS-yhteensopivan verkkotallennusjärjestelmän, joka tarjoaa NAS / SAN / iSCSI -ominaisuudet ja perustuu Nexenta OS:ään. NexentaStor sisältää graafisen käyttöliittymän, joka yksinkertaistaa ZFS:n käyttöä. NexentaStor 1.1 julkaistiin 2. joulukuuta 2008. Se päivitti OpenSolaris-ytimen, paransi integraatiota CIFS/AD:n kanssa, lisäsi useita laajennuksia ja korjasi joitain virheitä. NexentaStorista on kaksi versiota: kaupallinen Enterprise Edition ja ilmainen Community Edition, jonka tallennuskapasiteetti on enintään 18 Tt. Elokuusta 2012 lähtien nykyinen ohjelmistoversio on 3.1.3.
CDDL-lisenssirajoitusten vuoksi ZFS ei sisälly ytimeen, mutta se on saatavana ydinmoduulina, joka on nyt saatavilla monissa GNU/Linux-jakeluissa [6] [24] .
Pitkään Linuxissa ZFS:n siirtämistä ydintasolle pidettiin juridisesti mahdottomaksi, koska CDDL -lisenssit , joiden lainkäyttövallan alaisuudessa ZFS on, ja GNU GPL , jonka lainkäyttövaltaan Linux kuuluu, eivät olleet yhteensopivia . Toukokuussa 2010 Brian Behlendorf kuitenkin esitteli uuden version projektista, joka työskentelee Linuxin ZFS-tiedostojärjestelmän alkuperäisen tuen toteuttamisessa. Lisenssirajoituksen kiertämiseksi Behlendorf päätti jakaa koko tuotteensa CDDL-lisenssin alaisena erikseen ladattavana moduulina, joka toimitetaan erillään ytimestä [25] [26] . Maaliskuusta 2013 lähtien (versio 0.6.1) hankkeen katsotaan olevan valmis teollisuuskäyttöön [24] . Ubuntu 16.04 (64-bittinen) on ensimmäinen valtavirran Linux-jakelu, joka on ZFS-valmis [27] .
FUSEGoogle Summer of Code -aloite sponsoroi ZFS:n Linux -sovitusta käyttämällä FUSE -moduulia , joka käyttää ZFS-tiedostojärjestelmää käyttäjätilassa [28] . Uskotaan, että tämä ratkaisu on teoreettisesti täynnä suorituskyvyn menetyksiä [29] . Mutta esimerkki NTFS:n ( NTFS-3G ) toteuttamisesta FUSE:n kautta osoittaa hyvää suorituskykyä muihin järjestelmiin verrattuna [30] , mikä antaa aihetta ennustaa ZFS-FUSE:n hyväksyttävää suorituskykyä.
Vuoden 2012 lopussa ZFS-FUSE [31] esiteltiin versiona 0.7.0, joka sisälsi lähes täydellisen tuen ZFS:lle ja sen kaikille toiminnoille – tuki poolin 23. versiolle otettiin käyttöön.
Pawel Jakub Dawidek on mukauttanut ZFS:n FreeBSD :lle ydinmoduuliksi. ZFS sisältyy FreeBSD 7.0:aan (julkaistu 27. helmikuuta 2008) [32] .
ZFSv28-koodi on testattu FreeBSD 9:ssä ja siirretty vakaaseen kehityshaaraan 8. FreeBSD 8.3, 8.4 ja 9.0 -julkaisut tukevat ZFS-poolin versiota 28. FreeBSD 9.2 -julkaisu ja FreeBSD:n uudemmat versiot käyttävät uusia "ominaisuuslippujen" ominaisuuksia, jotka perustuvat Poolin version 5000 toteutukseen [33] .
On huomionarvoista, että FreeBSD:ssä versiosta 8 lähtien ZFS, toisin kuin Linux, ei vaadi FUSE:n läsnäoloa, joten siihen ei liity suorituskykyongelmia. Tämän vahvistaa se tosiasia, että FreeBSD:n ZFS sisältyy ytimeen ja on järjestelmässä välittömästi läsnä, muun muassa mahdollistaen käyttöjärjestelmän käynnistämisen ZFS-taltioista. Ja FUSE-moduuli ei sisälly käyttöjärjestelmään, ja se voidaan valinnaisesti asentaa porttikokoelmasta [34] (jota tarvitaan esimerkiksi NTFS:n tukemiseen).
Apple on yrittänyt siirtää ZFS:ää Mac OS X :ään, ja ZFS-postituslistoista ja alustavista leikkauksista Applen Mac OS X :n seuraavaan versioon on keskusteltu aktiivisesti [35] . Vaikka Mac OS X 10.5 (9A321) tukee ZFS:ää, se ei pysty käyttämään ZFS:ää juuriosioissa, eikä sillä ole kykyä alustaa paikallisia asemia ZFS:n alla (jälkimmäistä pidetään virheenä [36] ).
Kesäkuussa 2009 Apple hylkäsi WWDC '09 -lehdistötilaisuudessa ZFS:n esitetyssä Mac OS X 10.6 Snow Leopardin versiossa , kaikki viittaukset ZFS:ään poistettiin dokumentaatiosta ja sivuston materiaaleista. Yritys ei paljasta syitä olla käyttämättä ZFS:ää [37] .
Vaikka ZFS:n tuki palautettiin Mac OS X 10.6 Snow Leopard build 10A432:ssa, joka on merkitty Golden Masteriksi, ZFS-tuki poistettiin jälleen Mac OS X 10.6:n lopullisessa julkaisussa [38] .
Vastauksena ZFS:n virallisen tuen sulkemiseen ilmestyi ilmainen projekti, joka perustuu Applen aiemmin luomaan koodipohjaan, mutta eroaa järjestelmään integrointimenetelmästä. MacZFS:ää ei suoriteta ydintasolla, vaan käyttäjätasolla, MacFUSE:lla työskennellen, on valmisteltu binääripaketti, joka on koottu Git -varastossa julkaistujen lähdetekstien sekä asetusohjeiden perusteella.
Redox - käyttöjärjestelmä suunnitteli käyttävänsä ZFS:ää oletustiedostojärjestelmänä, mutta siirtyi myöhemmin omaan samanlaisten periaatteiden toteutukseen - TFS [39] [40] , joka on kirjoitettu Redox-pääkielellä - Rust .
Sun Microsystems ( Oraclen haltuunotto ) | |
---|---|
Laitteet | |
Ohjelmisto |
|
Tietovarasto | |
Suorituskykyinen tietojenkäsittely |
|
Tutkimus | |
koulutus |
|
Yhteisö |
Solaris | |
---|---|
Tekniikka | |
OpenSolaris |
|
Tiedostojärjestelmät ( luettelo , vertailu ) | |||||||
---|---|---|---|---|---|---|---|
Levy |
| ||||||
Hajautettu (verkko) | |||||||
Erityinen |
|