Release fan ZFS op Linux 0.8.0, ymplemintaasjes fan ZFS foar de Linux kernel

Nei hast twa jier ûntwikkeling presintearre frijlitte ZFS op Linux 0.8.0, in ymplemintaasje fan it ZFS-bestânsysteem ferpakt as in module foar de Linux-kernel. De module is hifke mei Linux-kernels fan 2.6.32 oant 5.1. Klear ynstallaasjepakketten komme gau sil wurde taret foar grutte Linux-distribúsjes ynklusyf Debian, Ubuntu, Fedora, RHEL / CentOS. De module ZFS op Linux is al opnommen yn Debian, Ubuntu, Gentoo, Sabayon Linux en ALT Linux-distribúsjes.

As ûnderdiel fan ZFS op Linux is in ymplemintaasje fan ZFS-komponinten yn ferbân mei sawol de wurking fan it bestânsysteem as it funksjonearjen fan 'e folumebehearder taret. Benammen de folgjende komponinten wurde ymplementearre: SPA (Storage Pool Allocator), DMU (Data Management Unit), ZVOL (ZFS Emulated Volume) en ZPL (ZFS POSIX Layer). Derneist biedt it projekt de mooglikheid om ZFS te brûken as backend foar it Luster-klusterbestânsysteem. It wurk fan it projekt is basearre op orizjinele ZFS-koade ymporteare út it OpenSolaris-projekt en ferbettere mei ferbetteringen en reparaasjes fan 'e Illumos-mienskip. It projekt wurdt ûntwikkele mei de dielname fan meiwurkers fan it Livermore National Laboratory ûnder in kontrakt mei it US Department of Energy.

De koade wurdt ferspraat ûnder in fergese CDDL-lisinsje, dy't ynkompatibel is mei GPLv2, dy't ZFS op Linux net yntegreart yn 'e haadtûke fan' e Linux-kernel, om't it mingjen fan koade ûnder GPLv2- en CDDL-lisinsjes net tastien is. Om dizze lisinsje-ynkompatibiliteit te omzeilen, waard besletten om it hiele produkt ûnder de CDDL-lisinsje te fersprieden as in apart laden module, dy't apart fan 'e kearn levere wurdt. De stabiliteit fan 'e ZFS op Linux-koadebase wurdt beoardiele as fergelykber mei oare bestânsystemen foar Linux.

Grutte feroaringen:

  • Ynboude stipe tafoege foar fersifering fan opsleine gegevens op it nivo fan it bestânsysteem en partysjes. It standert fersiferingsalgoritme is aes-256-ccm. It kommando "zfs load-key" is foarsteld om fersiferingskaaien te laden;
  • Implementearre de mooglikheid om fersifere gegevens oer te dragen by it útfieren fan 'zfs send' en 'zfs ûntfange' kommando's. By it oantsjutte fan de "-w" opsje, gegevens al fersifere yn it swimbad wurdt oerbrocht nei in oare pool lykas is, sûnder tuskenlizzende ûntsiferjen. Mei sa'n kopiearjen bliuwe de gegevens beskerme troch de kaai fan 'e stjoerder, wêrtroch't dizze modus brûkt wurdt foar reservekopy nei ûnbetroubere systemen (yn gefal fan kompromis fan 'e ûntfanger, sil de oanfaller gjin tagong krije ta de gegevens sûnder de kaai);
  • Stipe tafoege foar it fuortheljen fan primêre skiven út in opslachpool, ferbûn sawol yndividueel as as ûnderdiel fan in spegel. Ferwidering wurdt útfierd mei it kommando "zpool fuortsmite". It wiskjen proses kopiearret de gegevens fan it útsletten stasjon nei de oerbleaune primêre driuwfearren yn it swimbad;
  • It kommando "zpool checkpoint" tafoege om de aktuele tastân fan it swimbad te bewarjen mei de mooglikheid om fierdere wizigingen werom te rôljen nei it bewarre punt yn 'e tiid (in momintopname fan it hiele swimbad wurdt makke). Dizze funksje kin nuttich wêze yn it proses fan it útfieren fan potinsjeel gefaarlik kompleks bestjoerlik wurk, dat ûnder normale omstannichheden liedt ta ûnomkearbere feroarings (bygelyks aktivearjen fan flaggen foar nije ZFS-funksjonaliteit of wiskjen fan gegevens);
  • It kommando "zpool trim" is tafoege om de yn it swimbad brûkte skiven te ynformearjen oer sektoaren dy't net mear yn gebrûk binne. It gebrûk fan 'e TRIM-operaasje makket it mooglik om de effisjinsje fan SSD's te fergrutsjen en degradaasje fan har prestaasjes te foarkommen. In nije eigenskip "autotrim" is foarsteld om it trochgeande eftergrûnproses fan it ferstjoeren fan TRIM-kommando's mooglik te meitsjen;
  • Tafoege "zpool initialize" kommando te inisjalisearjen alle unallocated skiif romte, dat makket it mooglik om te wêzen direkt klear foar gebrûk, sûnder prestaasjes degradaasje op earste tagong (Bygelyks, by hosting virtualized opslach lykas VMware VMDK);
  • Stipe tafoege foar accounting- en projektnivo-kwota's, neist earder beskikbere brûkers- en groepsnivo's. Yn essinsje binne projekten in aparte romte fan objekten dy't ferbûn binne mei in aparte identifier (projekt-ID). De bining wurdt definiearre fia de 'chattr -p' operaasje of fia attribút erfskip. Foar projektbehear wurde de kommando's "zfs project" en "zfs projectspace" presintearre, wêrtroch jo it oanmeitsjen fan projekten kinne beheare en grinzen foar skiifromte foar har ynstelle;
  • De mooglikheid tafoege om Lua-skripts te meitsjen om ferskate wurken mei ZFS te automatisearjen. Skripten wurde útfierd yn spesjale isolearre omjouwings mei it kommando "zpool programma";
  • Nije biblioteek ymplemintearre pyzfs, dy't in stabile API leveret foar it administrearjen fan ZFS fan Python-applikaasjes. De bibleteek is in wrapper om libzfs_core en jout in identike set fan funksjes, mar brûkt nauwer Python typen;
  • De helpprogramma's arcstat, arcsummary en dbufstat binne kompatibel makke mei Python 3. De helpprogramma's arcstat.py, arc_summary.py en dbufstat.py binne omneamd ta ferzjes sûnder de ".py" tafoeging;
  • Stipe tafoege foar de Linux Direct IO (O_DIRECT) kernel-ynterface, wêrtroch tagong ta gegevens kin wurde sûnder buffering en it omgean fan de cache;
  • Prestaasjeoptimisaasjes yntrodusearre:
    • It wurk fan 'e kommando's "scrub" en "resilver" is fersneld troch splitsing yn twa fazen (in aparte faze is tawiisd foar it scannen fan metadata en it bepalen fan 'e lokaasje fan blokken mei gegevens op' e skiif, wêrtroch fierdere ferifikaasje mei sekwinsjele gegevens mooglik is lêzing);
    • Stipe tafoege foar allocaasjeklassen,
      it tastean fan relatyf lytse SSD's te sammeljen en te brûken om allinich bepaalde soarten gewoan brûkte blokken op te slaan, lykas metadata, DDT-gegevens en lytse triemblokken;

    • Ferbettere prestaasjes fan admin kommando's lykas
      "zfs list" en "zfs get", troch caching de metadata nedich foar harren operaasje;

    • Stipe tafoege foar parallelisaasje fan operaasjes foar blokallokaasje troch aparte allocatorprosessen út te fieren foar elke metaslab-groep. Op konvinsjonele systemen is d'r in prestaasjesferheging fan 5-10%, mar op grutte (8 128 GB SSD, 24 kearn NUMA, 256 GB fan RAM), kin de ferheging fan blokkearjende operaasjes 25% berikke;
    • Taheakke de mooglikheid fan útstelde útfiering fan it kommando "resilver" (weropbouwe gegevensdistribúsje mei rekken hâldend mei wizigingen yn 'e konfiguraasje fan driuwfearren) - as de foarige noch net foltôge is by it starten fan in nije operaasje, dan sil de nije handler pas begjinne mei útfieren nei de ein fan 'e foarige;
    • Optimisaasjes binne tafoege oan it ZIL (ZFS Intent Log) om blokken te meitsjen en te ferwurkjen yn 'e oanwêzigens fan blokken dy't noch troch de opslach ferwurke wurde;
    • Reduzearre registraasje tiid foar partysjes (zvol) yn it systeem. As in swimbad in grut oantal partysjes befettet, binne se no direkt beskikber nei't jo "zpool ymportearje" dien hawwe;
    • Stipe tafoege foar hardware-fersnelde berekkening fan SHA256-hashes en AES-GSM-fersiferingsoperaasjes mei Intel QAT (Quick Assist Technology)-chips. Stipe tafoege foar hardwarefersnelling fan 'e Intel C62x-chipset en CPU Atom C3000.

Boarne: opennet.ru

Add a comment