Utgivelse av ZFS på Linux 0.8.0, implementeringer av ZFS for Linux-kjernen

Etter nesten to år med utvikling presentert utgivelse ZFS på Linux 0.8.0, en implementering av ZFS-filsystemet pakket som en modul for Linux-kjernen. Modulen er testet med Linux-kjerner fra 2.6.32 til 5.1. Klare installasjonspakker kommer snart vil bli forberedt for store Linux-distribusjoner inkludert Debian, Ubuntu, Fedora, RHEL/CentOS. ZFS på Linux-modulen er allerede inkludert i Debian, Ubuntu, Gentoo, Sabayon Linux og ALT Linux-distribusjoner.

Som en del av ZFS på Linux er det utarbeidet en implementering av ZFS-komponenter knyttet til både driften av filsystemet og funksjonen til volumbehandleren. Spesielt er følgende komponenter implementert: SPA (Storage Pool Allocator), DMU (Data Management Unit), ZVOL (ZFS Emulated Volume) og ZPL (ZFS POSIX Layer). I tillegg gir prosjektet muligheten til å bruke ZFS som en backend for Luster-klyngefilsystemet. Prosjektets arbeid er basert på original ZFS-kode importert fra OpenSolaris-prosjektet og forbedret med forbedringer og rettelser fra Illumos-fellesskapet. Prosjektet utvikles med deltakelse av ansatte ved Livermore National Laboratory under en kontrakt med US Department of Energy.

Koden distribueres under en gratis CDDL-lisens, som er inkompatibel med GPLv2, som ikke tillater at ZFS på Linux integreres i hovedgrenen til Linux-kjernen, siden blanding av kode under GPLv2- og CDDL-lisenser ikke er tillatt. For å omgå denne lisensinkompatibiliteten, ble det besluttet å distribuere hele produktet under CDDL-lisensen som en separat lastbar modul, som leveres separat fra kjernen. Stabiliteten til ZFS på Linux-kodebasen er vurdert som sammenlignbar med andre filsystemer for Linux.

Hovedendringer:

  • Lagt til innebygd støtte for kryptering av lagrede data på nivå med filsystem og partisjoner. Standard krypteringsalgoritme er aes-256-ccm. Kommandoen "zfs load-key" har blitt foreslått for å laste krypteringsnøkler;
  • Implementerte muligheten til å overføre krypterte data når du utfører kommandoene 'zfs send' og 'zfs receive'. Når du spesifiserer "-w"-alternativet, overføres data som allerede er kryptert i bassenget til et annet basseng som de er, uten mellomliggende dekryptering. Med slik kopiering forblir dataene beskyttet av avsenderens nøkkel, noe som gjør det mulig å bruke denne modusen for sikkerhetskopiering til upålitelige systemer (hvis mottakeren er kompromittert, vil angriperen ikke kunne få tilgang til dataene uten nøkkelen);
  • Lagt til støtte for å fjerne primære stasjoner fra et lagringsbasseng, tilkoblet både individuelt og som en del av et speil. Fjerning utføres med kommandoen "zpool remove". Slettingsprosessen kopierer dataene fra den ekskluderte stasjonen til de gjenværende primære stasjonene i bassenget;
  • Lagt til kommandoen "zpool checkpoint" for å lagre den nåværende tilstanden til bassenget med muligheten til å rulle tilbake ytterligere endringer til det lagrede tidspunktet (et øyeblikksbilde av hele bassenget opprettes). Denne funksjonen kan være nyttig i prosessen med å utføre potensielt farlig komplekst administrativt arbeid, som under normale forhold fører til irreversible endringer (for eksempel aktivering av flagg for ny ZFS-funksjonalitet eller sletting av data);
  • Kommandoen "zpool trim" er lagt til for å informere stasjonene som brukes i bassenget om sektorer som ikke lenger er i bruk. Bruken av TRIM-operasjonen gjør det mulig å øke effektiviteten til SSD-er og forhindre forringelse av ytelsen. En ny "autotrim"-egenskap har blitt foreslått for å muliggjøre den kontinuerlige bakgrunnsprosessen for overføring av TRIM-kommandoer;
  • Lagt til "zpool initialize"-kommando for å initialisere all ikke-allokert diskplass, noe som gjør at den er umiddelbart klar til bruk, uten ytelsesforringelse ved første tilgang (for eksempel når du er vert for virtualiserte lagringer som VMware VMDK);
  • Lagt til støtte for regnskaps- og prosjektnivåkvoter, i tillegg til tidligere tilgjengelige bruker- og gruppenivåkvoter. I hovedsak er prosjekter et eget rom med objekter knyttet til en separat identifikator (prosjekt-ID). Bindingen er definert via 'chattr -p'-operasjonen eller via attributtarv. For prosjektledelse presenteres kommandoene "zfs project" og "zfs projectspace", som lar deg administrere opprettelsen av prosjekter og sette grenser for diskplass for dem;
  • Lagt til muligheten til å lage Lua-skript for å automatisere forskjellig arbeid med ZFS. Skript kjøres i spesielle isolerte miljøer ved å bruke kommandoen "zpool program";
  • Nytt bibliotek implementert pyzfs, som gir et stabilt API for å administrere ZFS fra Python-applikasjoner. Biblioteket er en innpakning rundt libzfs_core og gir et identisk sett med funksjoner, men bruker nærmere Python-typer;
  • Verktøyene arcstat, arcsummary og dbufstat er gjort kompatible med Python 3. Verktøyene arcstat.py, arc_summary.py og dbufstat.py har fått nytt navn til versjoner uten utvidelsen ".py".
  • Lagt til støtte for Linux Direct IO (O_DIRECT) kjernegrensesnitt, som tillater tilgang til data uten å bufre og omgå hurtigbufferen;
  • Ytelsesoptimaliseringer introdusert:
    • Arbeidet med kommandoene "skrubbe" og "resilver" har blitt akselerert på grunn av oppdeling i to faser (en egen fase er tildelt for skanning av metadata og bestemmelse av plassering av blokker med data på disken, noe som muliggjør ytterligere verifisering ved bruk av sekvensielle data lesning);
    • Lagt til støtte for tildelingsklasser,
      tillate at relativt små SSD-er kan samles og brukes til å lagre bare visse typer vanlig brukte blokker, for eksempel metadata, DDT-data og små filblokker;

    • Forbedret ytelse av admin-kommandoer som f.eks
      "zfs list" og "zfs get", ved å bufre metadataene som er nødvendige for driften deres;

    • Lagt til støtte for parallellisering av blokkallokeringsoperasjoner ved å kjøre separate allokeringsprosesser for hver metaslab-gruppe. På konvensjonelle systemer er det en ytelsesøkning på 5-10 %, men på store (8 128 GB SSD, 24 kjerner NUMA, 256 GB RAM) kan økningen i blokkallokeringsoperasjoner nå 25 %;
    • Lagt til muligheten for forsinket utførelse av "resilver"-kommandoen (gjenoppbygging av datadistribusjon under hensyntagen til endringer i konfigurasjonen av stasjoner) - hvis den forrige ennå ikke er fullført når du starter en ny operasjon, vil den nye behandleren begynne å utføre først etter den forrige er ferdig;
    • Optimaliseringer er lagt til ZIL (ZFS Intent Log) for å tillate opprettelse og behandling av blokker i nærvær av blokker som fortsatt behandles av lagringen;
    • Redusert registreringstid for partisjoner (zvol) i systemet. Når en pool inneholder et stort antall partisjoner, er de nå tilgjengelig umiddelbart etter å ha utført "zpool import";
    • Lagt til støtte for maskinvareakselerert beregning av SHA256-hasher og AES-GSM-krypteringsoperasjoner ved bruk av Intel QAT (Quick Assist Technology)-brikker. Lagt til støtte for maskinvareakselerasjon av Intel C62x-brikkesettet og CPU Atom C3000.

Kilde: opennet.ru

Legg til en kommentar