ZFS:n julkaisu Linux 0.8.0:lle, ZFS:n toteutukset Linux-ytimelle

Lähes kahden vuoden kehitystyön jälkeen esitetty vapauta ZFS Linuxissa 0.8.0, ZFS-tiedostojärjestelmän toteutus, joka on pakattu Linux-ytimen moduuliksi. Moduuli on testattu Linux-ytimillä 2.6.32-5.1. Valmiit asennuspaketit tulossa pian valmistellaan suurille Linux-jakeluille, mukaan lukien Debian, Ubuntu, Fedora, RHEL/CentOS. ZFS on Linux -moduuli sisältyy jo Debian-, Ubuntu-, Gentoo-, Sabayon Linux- ja ALT Linux -jakeluihin.

Osana Linuxin ZFS:ää on valmisteltu ZFS-komponenttien toteutus, jotka liittyvät sekä tiedostojärjestelmän toimintaan että volyyminhallinnan toimintaan. Erityisesti toteutetaan seuraavat komponentit: SPA (Storage Pool Allocator), DMU (Data Management Unit), ZVOL (ZFS Emulated Volume) ja ZPL (ZFS POSIX Layer). Lisäksi projekti tarjoaa mahdollisuuden käyttää ZFS:ää taustana Luster-klusteritiedostojärjestelmälle. Projektin työ perustuu alkuperäiseen OpenSolaris-projektista tuotuun ZFS-koodiin, jota on täydennetty Illumos-yhteisön parannuksilla ja korjauksilla. Hanketta kehitetään yhdessä Livermoren kansallisen laboratorion työntekijöiden kanssa Yhdysvaltain energiaministeriön kanssa tehdyn sopimuksen mukaisesti.

Koodia jaetaan ilmaisella CDDL-lisenssillä, joka ei ole yhteensopiva GPLv2:n kanssa, mikä ei salli Linuxin ZFS:n integrointia Linux-ytimen päähaaraan, koska koodin sekoittaminen GPLv2- ja CDDL-lisenssien alla ei ole sallittua. Tämän lisenssin yhteensopimattomuuden kiertämiseksi päätettiin jakaa koko tuote CDDL-lisenssin alaisena erikseen ladattavana moduulina, joka toimitetaan erillään ytimestä. ZFS:n vakaus Linux-koodikannassa on verrattavissa muihin Linuxin tiedostojärjestelmiin.

Suurimmat muutokset:

  • Lisätty sisäänrakennettu tuki tallennettujen tietojen salaukselle tiedostojärjestelmän ja osioiden tasolla. Oletussalausalgoritmi on aes-256-ccm. Komentoa "zfs load-key" on ehdotettu lataamaan salausavaimia;
  • Otettu käyttöön kyky siirtää salattua tietoa suoritettaessa "zfs send"- ja "zfs Receive" -komentoja. Kun määritetään "-w" vaihtoehto, poolissa jo salatut tiedot siirretään toiseen pooliin sellaisenaan ilman välivaiheen salauksen purkamista. Tällaisella kopioinnilla tiedot pysyvät suojattuina lähettäjän avaimella, mikä mahdollistaa tämän tilan käytön varmuuskopiointiin epäluotettaviin järjestelmiin (jos vastaanottaja vaarantuu, hyökkääjä ei pääse käsiksi tietoihin ilman avainta);
  • Lisätty tuki ensisijaisten asemien poistamiseen tallennusvarannosta, yhdistettynä sekä erikseen että osana peiliä. Poistaminen suoritetaan "zpool remove" -komennolla. Poistoprosessi kopioi tiedot poissuljetusta asemasta altaan jäljellä oleville ensisijaisille asemille;
  • Lisätty "zpool checkpoint" -komento, joka tallentaa poolin nykyisen tilan ja mahdollistaa lisämuutosten palauttamisen tallennettuun ajankohtaan (koko poolista luodaan tilannekuva). Tämä ominaisuus voi olla hyödyllinen suoritettaessa mahdollisesti vaarallista monimutkaista hallintotyötä, joka normaaleissa olosuhteissa johtaa peruuttamattomiin muutoksiin (esimerkiksi uuden ZFS-toiminnon lippujen aktivoiminen tai tietojen tyhjentäminen);
  • "zpool trim" -komento on lisätty ilmoittamaan poolissa käytetyille asemille sektoreista, jotka eivät ole enää käytössä. TRIM-toiminnon käyttö mahdollistaa SSD-levyjen tehokkuuden lisäämisen ja niiden suorituskyvyn heikkenemisen estämisen. Uutta "autotrim"-ominaisuutta on ehdotettu mahdollistamaan jatkuva taustaprosessi TRIM-komentojen lähettämiseksi;
  • Lisätty "zpool inicialize" -komento alustaakseen kaiken varaamattoman levytilan, mikä mahdollistaa sen olevan välittömästi käyttövalmis ilman suorituskyvyn heikkenemistä ensimmäisellä käyttökerralla (esimerkiksi kun isännöidään virtualisoituja tallennusvälineitä, kuten VMware VMDK);
  • Lisätty tuki kirjanpito- ja projektitason kiintiöille aiemmin saatavilla olevien käyttäjä- ja ryhmätason kiintiöiden lisäksi. Pohjimmiltaan projektit ovat erillinen tila objekteista, joihin liittyy erillinen tunniste (projektitunnus). Sidos määritellään 'chattr -p' -operaation tai attribuutin periytymisen kautta. Projektinhallintaa varten esitetään komennot "zfs project" ja "zfs projectspace", joiden avulla voit hallita projektien luomista ja asettaa niille levytilarajoituksia;
  • Lisätty mahdollisuus luoda Lua-skriptejä erilaisten ZFS-työskentelyn automatisoimiseksi. Skriptejä ajetaan erityisissä eristetyissä ympäristöissä käyttämällä "zpool-ohjelma"-komentoa;
  • Uusi kirjasto otettu käyttöön pyzfs, joka tarjoaa vakaan API:n ZFS:n hallintaan Python-sovelluksista. Kirjasto on kääre libzfs_core:n ympärillä ja tarjoaa identtisen joukon toimintoja, mutta käyttää läheisempiä Python-tyyppejä;
  • Arcstat-, arcsummary- ja dbufstat-apuohjelmat on tehty yhteensopivaksi Python 3:n kanssa. Arcstat.py-, arc_summary.py- ja dbufstat.py-apuohjelmat on nimetty uudelleen versioiksi, joissa ei ole ".py"-laajennusta.
  • Lisätty tuki Linux Direct IO (O_DIRECT) -ytimen käyttöliittymälle, joka mahdollistaa tietojen käytön ilman puskurointia ja välimuistin ohittamista;
  • Suorituskyvyn optimoinnit käyttöön:
    • "Scrub"- ja "resilver"-komentojen työ on nopeutunut kahteen vaiheeseen jakamisen vuoksi (erillinen vaihe on varattu metatietojen skannaamiseen ja levyllä olevien dataa sisältävien lohkojen sijainnin määrittämiseen, mikä mahdollistaa lisävarmentamisen peräkkäisten tietojen avulla lukeminen);
    • Lisätty tuki allokointiluokille,
      sallitaan suhteellisen pienten SSD-levyjen yhdistäminen ja vain tietyntyyppisten yleisesti käytettyjen lohkojen, kuten metatietojen, DDT-tietojen ja pienten tiedostolohkojen tallentamiseen;

    • Parannettu järjestelmänvalvojan komentojen suorituskykyä, kuten
      "zfs list" ja "zfs get" tallentamalla välimuistiin niiden toimintaan tarvittavat metatiedot;

    • Lisätty tuki lohkojen allokointitoimintojen rinnakkaisuudelle suorittamalla erilliset allokaattoriprosessit kullekin metalevyryhmälle. Perinteisissä järjestelmissä suorituskyvyn kasvu on 5-10%, mutta suurissa (8 128 Gt SSD, 24 ytimen NUMA, 256 Gt RAM-muistia) lohkon allokointitoimintojen kasvu voi olla 25%;
    • Lisätty mahdollisuus "resilver"-komennon viivästymiseen (tietojen jakelun uudelleenrakentaminen ottaen huomioon asemien kokoonpanon muutokset) - jos edellinen ei ole vielä valmis, kun uutta toimintoa aloitetaan, uusi käsittelijä aloittaa suorittamisen vasta sen jälkeen, kun edellinen on päättynyt;
    • ZIL:iin (ZFS Intent Log) on ​​lisätty optimointeja, jotka mahdollistavat lohkojen luomisen ja käsittelyn sellaisten lohkojen läsnä ollessa, joita tallennustila vielä käsittelee.
    • Lyhennetty rekisteröintiaika osioille (zvol) järjestelmässä. Kun pooli sisältää suuren määrän osioita, ne ovat nyt käytettävissä heti "zpool-tuonti" -toiminnon jälkeen;
    • Lisätty tuki laitteistokiihdytetylle SHA256-tiivistelaskulle ja AES-GSM-salaustoiminnoille Intel QAT (Quick Assist Technology) -sirujen avulla. Lisätty tuki Intel C62x -piirisarjan ja CPU Atom C3000:n laitteistokiihdytykseen.

Lähde: opennet.ru

Lisää kommentti