ZFS on Sun Microsystems Inc:n luoma paikallinen tiedostojärjestelmä ja looginen volyyminhallinta, joka ohjaa ja valvoo datan sijoittelua, tallennusta ja hakua yritysluokan tietokonejärjestelmissä.

ZFS-tiedostojärjestelmälle ja volyyminhallinnalle on ominaista datan eheys, korkea skaalautuvuus ja sisäänrakennetut tallennusominaisuudet, kuten:

  • replikointi (replication) – Prosessi, jonka avulla jostakin asiasta luodaan jäljennös, kopio.
  • Deduplikointi – prosessi, joka poistaa turhat kopiot datasta ja vähentää tallennuksen yleiskustannuksia.
  • Pakkaus – tiedon esittämiseen tarvittavien bittien määrän vähentäminen.
  • Snapshots (tilannekuvat) – tietyllä hetkellä olevien tietojen vertailumerkkien joukko.
  • Kloonit – identtinen kopio jostakin.
  • Datan suojaus – prosessi, jossa tärkeät tiedot suojataan turmeltumiselta ja/tai katoamiselta.

ZFS:n historia

Sunin insinöörit aloittivat ZFS:n kehitystyön vuonna 2001 yhtiön Unix-pohjaista Solaris-käyttöjärjestelmää (OS) varten. Vuonna 2005 Sun julkaisi ZFS:n lähdekoodin CDDL-lisenssillä (Common Development and Distribution License) osana avoimen lähdekoodin OpenSolaris-käyttöjärjestelmää. Kehittäjäyhteisö, johon kuului Sunin ja muiden toimittajien edustajia, työsti parannuksia avoimeen lähdekoodiin ja porttasi ZFS:n muille käyttöjärjestelmille, kuten FreeBSD:lle, Linuxille ja Mac OS X:lle.

OpenSolaris-avoimen lähdekoodin hanke, johon ZFS kuului, päättyi sen jälkeen, kun Oracle Corp. osti Sunin vuonna 2010 ja suojasi termin ZFS tavaramerkillä. Oraclen insinöörit parantavat ja lisäävät edelleen ominaisuuksia Solariksen ZFS:ään. Oracle käyttää omaa ZFS-koodiaan Oracle Solariksen, Oracle ZFS Storage Appliance -laitteen ja muiden Oraclen teknologioiden perustana.

Kehitysyhteisö aloitti uuden OpenZFS-nimisen avoimen lähdekoodin projektin, joka perustui OpenSolariksen lopullisessa versiossa olevaan ZFS-lähdekoodiin. Avoin yhteisö työstää OpenZFS-koodiin uusia ominaisuuksia, parannuksia ja virheiden korjauksia. OpenZFS:ää tukevia käyttöjärjestelmiä ovat muun muassa Apple OS X, FreeBSD, illumos (joka perustuu OpenSolarikseen) ja Linux-muunnokset kuten Debian, Gentoo ja Ubuntu. OpenZFS toimii kaikissa Linux-jakeluissa, mutta vain jotkut kaupalliset toimittajat tarjoavat sitä osana jakeluitaan. Yrityksiä, joilla on OpenZFS:ään perustuvia kaupallisia tuotteita, ovat muun muassa Cloudscaling, Datto, Delphix, Joyent, Nexenta, SoftNAS ja Spectra Logic.

ZFS ja OpenZFS vetoavat yleensä yrityksiin, joiden on hallittava suuria tietomääriä ja varmistettava tietojen eheys. Käyttäjiä ovat muun muassa tieteelliset laitokset, kansalliset laboratoriot, valtion virastot, rahoitusyhtiöt, televiestintä- sekä media- ja viihdeyritykset.

ZFS oli alun perin lyhenne sanoista Zettabyte File System (Zettabyte-tiedostojärjestelmä), mutta sanalla zettabyte ei ole enää mitään merkitystä tiedostojärjestelmän yhteydessä. 128-bittisenä tiedostojärjestelmänä ZFS:llä on mahdollisuus skaalautua 256 kvadriljoonaan zettabyyttiin.

Miten ZFS toimii

ZFS on suunniteltu toimimaan yhdellä palvelimella, johon on mahdollisesti liitetty satoja tai jopa tuhansia tallennusasemia. ZFS yhdistää käytettävissä olevan tallennustilan ja hallitsee kaikkia levyjä yhtenä kokonaisuutena. Käyttäjä voi lisätä pooliin lisää tallennusasemia, jos tiedostojärjestelmä tarvitsee lisää kapasiteettia. ZFS on erittäin skaalautuva ja tukee suurta maksimitiedostokokoa.

ZFS tallentaa vähintään kaksi kopiota metatiedoista aina, kun tietoja kirjoitetaan levylle. Metatiedot sisältävät tietoja, kuten levysektorit, joihin data on tallennettu, datalohkojen koon ja tarkistussumman datan binääriluvuista. Kun käyttäjä pyytää pääsyä tiedostoon, tarkistussumma-algoritmi suorittaa laskennan varmistaakseen, että haetut tiedot vastaavat levylle kirjoitettuja alkuperäisiä bittejä. Jos tarkistussumma havaitsee epäjohdonmukaisuuden, se merkitsee virheelliset tiedot. Järjestelmissä, joissa on peilattu tallennuspooli tai ZFS-versio RAID:stä, ZFS voi hakea oikean kopion toiselta asemalta ja korjata vahingoittuneen datakopion.

ZFS:ää kutsutaan yleisesti copy-on-write-tiedostojärjestelmäksi, vaikkakin Oracle kuvailee sitä redirect-on write -järjestelmäksi. Kun ZFS kirjoittaa tietoja levylle, se ei korvaa paikallaan olevia tietoja. ZFS kirjoittaa uuden lohkon eri kohtaan levyllä ja päivittää metatiedot osoittamaan uuteen kirjoitettuun lohkoon, mutta säilyttää samalla datan vanhemmat versiot.

Todellinen copy-on-write-tiedostojärjestelmä tekisi tietolohkosta tarkan kopion erilliseen paikkaan ennen alkuperäisen lohkon ylikirjoittamista. Ennen datan ylikirjoittamista järjestelmän olisi luettava lohkon edellinen arvo. Copy-on-write-tiedostojärjestelmä vaatii kolme I/O-operaatiota – lukemisen, muuttamisen ja kirjoittamisen – jokaista datan kirjoitusta varten. Sitä vastoin redirect-on-write-järjestelmä vaatii vain yhden I/O-operaation, mikä mahdollistaa suuremman tehokkuuden ja suorituskyvyn.

ZFS on suosittu valinta verkkoon liitetyissä tallennusjärjestelmissä, joissa tiedostojärjestelmän päällä käytetään NFS:ää, sekä virtuaalipalvelinympäristöissä. Toinen yleinen käyttöönottoskenaario on klusteroidun tiedostojärjestelmän, kuten GPFS:n (General Parallel File System) tai Lustren, asettaminen ZFS:n päälle, jotta voidaan skaalautua useampiin palvelinsolmuihin. OpenStack-käyttäjät voivat ottaa ZFS:n käyttöön Cinder-lohkotallennuksen ja Swift-objektitallennuksen taustalla olevana tiedostojärjestelmänä.

ZFS:n keskeiset ominaisuudet

Snapshotit ja kloonit: ZFS ja OpenZFS voivat tehdä point-in-time-kopioita tiedostojärjestelmästä erittäin tehokkaasti ja nopeasti, koska järjestelmä säilyttää kaikki kopiot tiedoista. Tilannekuvat ovat muuttumattomia kopioita tiedostojärjestelmästä, kun taas klooneja voidaan muokata. Tilannekuvat ja kloonit on integroitu käynnistysympäristöihin Solariksen ZFS:n kanssa, jolloin käyttäjät voivat palata tilannekuvaan, jos jokin menee pieleen, kun he korjaavat tai päivittävät järjestelmää. Toinen mahdollinen ZFS:n hyöty on palautustekniikka lunnasohjelmia vastaan.

RAID-Z: RAID-Z mahdollistaa saman datan tallentamisen useisiin paikkoihin vikasietoisuuden ja suorituskyvyn parantamiseksi. Järjestelmä rekonstruoi kadonneen aseman tiedot käyttämällä järjestelmän muille asemille tallennettuja tietoja. RAID-Z:ssä RAID 5:n tavoin pariteettitiedot raidoitetaan jokaiselle asemalle, jotta tallennusjärjestelmä voi toimia, vaikka yksi asema vioittuisi. RAID-Z:ssä raidoitetut tiedot ovat kuitenkin kokonaisia lohkoja, joiden koko vaihtelee. Vaikka RAID-Z:tä verrataan yleensä RAID 5:een, se suorittaa joitakin toimintoja eri tavalla, jotta voidaan ratkaista tiettyjä perinteisen RAIDin pitkäaikaisia ongelmia. Yksi RAID-Z:n käsittelemistä ongelmista on niin sanottu kirjoitusreiän vaikutus, jossa järjestelmä ei pysty määrittämään, mitkä data- tai pariteettilohkot on kirjoitettu levylle sähkökatkoksen tai järjestelmän katastrofaalisen keskeytyksen vuoksi. Perinteistä RAID-ratkaisua käyttävien järjestelmien toimittajat ratkaisevat ongelman yleensä käyttämällä keskeytymätöntä virtalähdettä tai erityistä laitteistoa.

RAID-Z2 tukee kahden tallennusaseman menetystä RAID 6:n tapaan, ja RAID-Z3 sietää kolmen tallennuslaitteen menetystä. Käyttäjillä on mahdollisuus järjestää asemat ryhmiin, kuten perinteisessä RAIDissa. Esimerkiksi järjestelmä, jossa on kaksi kuuden aseman ryhmää, jotka on asetettu RAID-Z3:ksi, voi sietää kolmen aseman menetyksen kummassakin ryhmässä.

Pakkaus: Inline-tiedonpakkaus on ZFS:n ja OpenZFS:n sisäänrakennettu ominaisuus, joka vähentää tiedon tallentamiseen tarvittavien bittien määrää. ZFS ja OpenZFS tukevat kumpikin useita pakkausalgoritmeja. Käyttäjillä on mahdollisuus ottaa inline-pakkaus käyttöön tai poistaa se käytöstä.

Deduplikointi: Inline-tiedon deduplikointi on ZFS:n ja OpenZFS:n sisäänrakennettu ominaisuus, joka mahdollistaa tallennustehokkuuden poistamalla turhaa tietoa. ZFS ja OpenZFS löytävät päällekkäiset tiedot tarkastelemalla lohkon tarkistussummaa, jonka koko voi vaihdella. Käyttäjät voivat ottaa inline-deduplikoinnin käyttöön tai poistaa sen käytöstä.

ZFS send/receive: ZFS ja OpenZFS mahdollistavat tiedostojärjestelmän tilannekuvan lähettämisen toiseen palvelinsolmuun, jolloin käyttäjä voi kopioida tietoja erilliseen järjestelmään esimerkiksi varmuuskopiointia tai tietojen siirtämistä pilvitallennukseen varten.

Turvallisuus: ZFS ja OpenZFS tukevat delegoituja oikeuksia ja hienojakoisempia pääsynvalvontaluetteloita sen hallitsemiseksi, kuka voi suorittaa hallinnollisia tehtäviä. Käyttäjillä on mahdollisuus asettaa ZFS vain lukuoikeudeksi, jolloin tietoja ei voi muuttaa. Oracle tukee salausta ZFS:ssä Solarisissa.

ZFS:n edut ja rajoitukset

ZFS integroi tiedostojärjestelmän ja volyyminhallinnan, joten käyttäjien ei tarvitse hankkia ja opetella erillisiä työkaluja ja komentosarjoja. ZFS tarjoaa runsaasti ominaisuuksia ja tietopalveluja ilman kustannuksia, koska se on sisäänrakennettu Oraclen käyttöjärjestelmään. Avoimen lähdekoodin OpenZFS on vapaasti saatavilla. Tiedostojärjestelmää voidaan laajentaa lisäämällä asemia tallennuspooliin. Perinteiset tiedostojärjestelmät vaativat levyosion koon muuttamista kapasiteetin lisäämiseksi, ja käyttäjät tarvitsevat usein apunaan volyyminhallintatuotteita.

ZFS on rajoitettu toimimaan vain yhdellä palvelimella toisin kuin hajautetut tai rinnakkaiset tiedostojärjestelmät, kuten GPFS ja Lustre, jotka voivat skaalautua useille palvelimille.

ZFS:n tarjoama runsas ominaisuusvalikoima voi tehdä ohjelmistosta monimutkaisen käyttää ja hallita. Ominaisuudet, kuten ZFS:n integroidut tarkistussumma-algoritmit, voivat vaatia lisää laskentatehoa ja vaikuttaa suorituskykyyn.

Linux-yhteisössä on erilaisia mielipiteitä lisensoinnista ZFS-koodin ja binääristen ytimen moduulien uudelleenjakelun suhteen. Esimerkiksi Red Hat pitää ongelmallisena CDDL-lisenssillä suojatun koodin jakelua GPL-lisenssillä (General Public License) suojatun koodin kanssa. Ubuntua jakeleva Canonical sen sijaan totesi noudattavansa CDDL- ja GPL-lisenssien ehtoja.

ZFS vs. OpenZFS

Oraclen ZFS ja avoimen lähdekoodin OpenZFS perustuvat samaan ZFS-lähdekoodiin. Erikseen Oracle ja avoimen lähdekoodin yhteisö ovat lisänneet laajennuksia ja tehneet merkittäviä suorituskykyparannuksia ZFS:ään ja OpenZFS:ään. Oraclen ZFS-päivitykset ovat Oraclen omia ja saatavilla vain Oraclen teknologioissa. Avoimen lähdekoodin OpenZFS-koodin päivitykset ovat vapaasti saatavilla.

Luettelo parannuksista, joita Oracle on tehnyt ZFS:ään vuoden 2010 jälkeen, sisältää mm. seuraavat:

  • salaus;
  • tuki pakattujen tietojen säilymiselle käyttöjärjestelmän uudelleenkäynnistysten yli L2-adaptiivisessa korvaavassa välimuistissa (ARC);
  • käynnistettävissä olevat Extensible Firmware Interface -merkinnät, jotka tukevat fyysisiä kiintolevyjä ja virtuaalisia levytilavuuksia, jotka ovat kooltaan yli 2 TB:n kokoisia;
  • oletusarvoisesti asetettuja käyttäjä- ja ryhmäkiintiöitä;
  • poolien/tiedostojärjestelmien valvonta.

Luettelo avoimen lähdekoodin yhteisön OpenZFS:ään tekemistä päivityksistä sisältää:

  • lisättyjä pakkausalgoritmeja;
  • resumable send/receive, joka mahdollistaa pitkään käynnissä olleen ZFS-lähetys/vastaanotto-operaation uudelleenkäynnistämisen järjestelmän keskeytymiskohdasta;
  • compressed send/receive, joka mahdollistaa järjestelmän lähettämisen pakattua dataa yhdestä ZFS-allaspoolista toiseen tarvitsematta purkaa/pakkaa dataa siirryttäessä lähettävältä solmulta määränpäähän;
  • compressed ARC, jonka ansiosta ZFS voi säilyttää pakattua dataa muistissa, mikä mahdollistaa suuremman työtietoaineiston välimuistissa; ja
  • max. lohkokoon kasvattaminen 128 kilotavusta 16 megatavuun parantaa suorituskykyä suurten tiedostojen kanssa työskenneltäessä ja nopeuttaa datan uudelleenrakentamista aseman vikaantumisen jälkeen.

Vastaa

Sähköpostiosoitettasi ei julkaista.