Udgivelse af ZFS på Linux 0.8.0, implementeringer af ZFS til Linux-kernen

Efter næsten to års udvikling præsenteret релиз ZFS på Linux 0.8.0, en implementering af ZFS-filsystemet pakket som et modul til Linux-kernen. Modulet er testet med Linux-kerner fra 2.6.32 til 5.1. Klare installationspakker kommer snart vil blive forberedt til større Linux-distributioner, herunder Debian, Ubuntu, Fedora, RHEL/CentOS. ZFS på Linux-modulet er allerede inkluderet i Debian, Ubuntu, Gentoo, Sabayon Linux og ALT Linux distributioner.

Som en del af ZFS på Linux er der udarbejdet en implementering af ZFS-komponenter relateret til både driften af ​​filsystemet og funktionen af ​​volumenhåndteringen. Især er følgende komponenter implementeret: SPA (Storage Pool Allocator), DMU (Data Management Unit), ZVOL (ZFS Emulated Volume) og ZPL (ZFS POSIX Layer). Derudover giver projektet mulighed for at bruge ZFS som backend til Luster-klyngefilsystemet. Projektets arbejde er baseret på original ZFS-kode importeret fra OpenSolaris-projektet og forbedret med forbedringer og rettelser fra Illumos-fællesskabet. Projektet udvikles med deltagelse af medarbejdere fra Livermore National Laboratory under en kontrakt med det amerikanske energiministerium.

Koden distribueres under en gratis CDDL-licens, som er inkompatibel med GPLv2, som ikke tillader, at ZFS på Linux integreres i Linux-kernens hovedgren, da blanding af kode under GPLv2- og CDDL-licenser ikke er tilladt. For at omgå denne licensinkompatibilitet blev det besluttet at distribuere hele produktet under CDDL-licensen som et separat indlæsbart modul, som leveres separat fra kernen. Stabiliteten af ​​ZFS på Linux-kodebasen vurderes som sammenlignelig med andre filsystemer til Linux.

Vigtigste ændringer:

  • Tilføjet indbygget understøttelse af kryptering af lagrede data på niveau med filsystem og partitioner. Standardkrypteringsalgoritmen er aes-256-ccm. Kommandoen "zfs load-key" er blevet foreslået til at indlæse krypteringsnøgler;
  • Implementeret muligheden for at overføre krypterede data ved udførelse af kommandoerne 'zfs send' og 'zfs receive'. Når "-w"-indstillingen specificeres, overføres data, der allerede er krypteret i puljen, til en anden pool, som de er, uden mellemliggende dekryptering. Med sådan kopiering forbliver dataene beskyttet af afsenderens nøgle, hvilket gør det muligt at bruge denne tilstand til backup til utroværdige systemer (hvis modtageren er kompromitteret, vil angriberen ikke være i stand til at få adgang til dataene uden nøglen);
  • Tilføjet understøttelse til fjernelse af primære drev fra en lagerpulje, forbundet både individuelt og som en del af et spejl. Fjernelse udføres med kommandoen "zpool remove". Sletningsprocessen kopierer dataene fra det ekskluderede drev til de resterende primære drev i puljen;
  • Tilføjet kommandoen "zpool checkpoint" for at gemme poolens nuværende tilstand med mulighed for at rulle yderligere ændringer tilbage til det gemte tidspunkt (et øjebliksbillede af hele poolen oprettes). Denne funktion kan være nyttig i processen med at udføre potentielt farligt komplekst administrativt arbejde, som under normale forhold fører til irreversible ændringer (f.eks. aktivering af flag for ny ZFS-funktionalitet eller sletning af data);
  • Kommandoen "zpool trim" er blevet tilføjet for at informere de drev, der bruges i puljen, om sektorer, der ikke længere er i brug. Brugen af ​​TRIM-operationen gør det muligt at øge effektiviteten af ​​SSD'er og forhindre forringelse af deres ydeevne. En ny "autotrim"-egenskab er blevet foreslået for at muliggøre den kontinuerlige baggrundsproces med at transmittere TRIM-kommandoer;
  • Tilføjet "zpool initialize"-kommando for at initialisere al ikke-allokeret diskplads, som gør det muligt at være øjeblikkeligt klar til brug uden forringelse af ydeevnen ved første adgang (for eksempel ved hosting af virtualiserede lager såsom VMware VMDK);
  • Tilføjet støtte til regnskabs- og projektniveaukvoter, ud over tidligere tilgængelige bruger- og gruppeniveaukvoter. I det væsentlige er projekter et separat rum af objekter, der er knyttet til en separat identifikator (projekt-id). Bindingen defineres via 'chattr -p'-operationen eller via attributarv. Til projektstyring præsenteres kommandoerne "zfs project" og "zfs projectspace", som giver dig mulighed for at styre oprettelsen af ​​projekter og indstille diskpladsgrænser for dem;
  • Tilføjet muligheden for at oprette Lua-scripts for at automatisere forskellige arbejde med ZFS. Scripts køres i specielle isolerede miljøer ved hjælp af kommandoen "zpool program";
  • Nyt bibliotek implementeret pyzfs, som giver en stabil API til administration af ZFS fra Python-applikationer. Biblioteket er en indpakning omkring libzfs_core og giver et identisk sæt funktioner, men bruger tættere Python-typer;
  • Værktøjerne arcstat, arcsummary og dbufstat er blevet gjort kompatible med Python 3. Værktøjerne arcstat.py, arc_summary.py og dbufstat.py er blevet omdøbt til versioner uden ".py"-udvidelsen;
  • Tilføjet understøttelse af Linux Direct IO (O_DIRECT) kernegrænsefladen, som tillader adgang til data uden buffering og omgåelse af cachen;
  • Præstationsoptimeringer introduceret:
    • Arbejdet med kommandoerne "scrub" og "resilver" er blevet fremskyndet på grund af opdeling i to faser (en separat fase er blevet tildelt til scanning af metadata og bestemmelse af placeringen af ​​blokke med data på disken, hvilket muliggør yderligere verifikation ved hjælp af sekventielle data læsning);
    • Tilføjet support til tildelingsklasser,
      at tillade relativt små SSD'er at blive samlet og brugt til kun at gemme visse typer almindeligt anvendte blokke, såsom metadata, DDT-data og små filblokke;

    • Forbedret ydeevne af admin-kommandoer som f.eks
      "zfs list" og "zfs get", ved at cache de metadata, der er nødvendige for deres drift;

    • Tilføjet understøttelse af parallelisering af blokallokeringsoperationer ved at køre separate allokeringsprocesser for hver metaslab-gruppe. På konventionelle systemer er der en ydelsesforøgelse på 5-10%, men på store (8 128 GB SSD, 24 core NUMA, 256 GB RAM) kan stigningen i blokallokeringsoperationer nå op på 25%;
    • Tilføjet muligheden for forsinket udførelse af "resilver"-kommandoen (genopbygning af datadistribution under hensyntagen til ændringer i konfigurationen af ​​drev) - hvis den forrige endnu ikke er afsluttet ved start af en ny operation, vil den nye behandler først begynde at udføre efter den forrige er færdig;
    • Optimeringer er blevet tilføjet til ZIL (ZFS Intent Log) for at tillade oprettelse og behandling af blokke i nærværelse af blokke, der stadig behandles af lageret;
    • Reduceret registreringstid for partitioner (zvol) i systemet. Når en pulje indeholder et stort antal partitioner, er de nu tilgængelige umiddelbart efter at have udført "zpool import";
    • Tilføjet understøttelse af hardwareaccelereret beregning af SHA256-hashes og AES-GSM-krypteringsoperationer ved hjælp af Intel QAT (Quick Assist Technology)-chips. Tilføjet understøttelse af hardwareacceleration af Intel C62x-chipsættet og CPU Atom C3000.

Kilde: opennet.ru

Tilføj en kommentar