Uitgave ZFS on Linux 0.8.0, implementaties van ZFS voor de Linux-kernel

Na bijna twee jaar ontwikkeling is gepresenteerd release ZFS op Linux 0.8.0, van de implementatie van het ZFS-bestandssysteem, gepresenteerd als een module voor de Linux-kernel. De module is getest met Linux-kernels van 2.6.32 tot 5.1. Klaar om te gebruiken installat pakketten zullen binnenkort beschikbaar zijn en worden voorbereid voor de belangrijkste Linux-distributies, waaronder Debian, Ubuntu, Fedora, RHEL/CentOS. De module ZFS op Linux maakt al deel uit van de distributies Debian, Ubuntu, Gentoo, Sabayon Linux en ALT Linux.

In het kader van ZFS op Linux is een implementatie van ZFS-componenten ontwikkeld, die zowel verband houdt met het functioneren van het bestandssysteem als met de werking van de volumemanager. In het bijzonder zijn de componenten geïmplementeerd: SPA (Storage Pool Allocator), DMU (Data Management Unit), ZVOL (ZFS Emulated Volume) en ZPL (ZFS POSIX Layer). Daarnaast biedt het project de mogelijkheid om ZFS te gebruiken als backend voor het clusterbestandssysteem Lustre. De ontwikkeling van het project is gebaseerd op de oorspronkelijke code van ZFS, geïmporteerd uit het OpenSolaris-project en uitgebreid met verbeteringen en correcties van de Illumos-gemeenschap. Het project wordt verder ontwikkeld met de medewerking van medewerkers van het Lawrence Livermore National Lab onder contract van het Amerikaanse ministerie van energie.

De code wordt verspreid onder de CDDL-licentie, die niet compatibel is met GPLv2, waardoor integratie van ZFS op Linux in de hoofdversie van de Linux-kernel niet mogelijk is, aangezien het combineren van code onder de GPLv2- en CDDL-licenties onaanvaardbaar is. Om deze licentie-incompatibiliteit te omzeilen, is besloten om het product volledig onder de CDDL-licentie te verspreiden in de vorm van een apart te downloaden module, die apart van de kernel wordt geleverd. De stabiliteit van de codebasis van ZFS op Linux wordt als vergelijkbaar met andere besturingssystemen voor Linux beoordeeld.

Belangrijkste wijzigingen:

  • Ondersteuning voor versleuteling van opgeslagen gegevens op bestandssysteem- en partitie-niveau is toegevoegd. Standaard wordt de aes-256-ccm-algoritme gebruikt voor versleuteling. De opdracht "zfs load-key" is voorgesteld om versleutelsleutels te laden;
  • De mogelijkheid om versleutelde gegevens over te dragen bij het uitvoeren van de opdrachten "zfs send" en "zfs receive" is geïmplementeerd. Bij het opgeven van de optie "-w" worden al versleutelde gegevens in de pool zoals ze zijn overgedragen naar een andere pool, zonder tussenliggende ontsleuteling. Bij een dergelijke kopie blijven de gegevens beschermd door de sleutel van de verzendende partij, wat het mogelijk maakt om deze modus te gebruiken voor back-ups op systemen die niet vertrouwd zijn (in het geval van compromittering van de ontvanger, kan een aanvaller zonder de sleutel geen toegang krijgen tot de gegevens);
  • Ondersteuning voor het verwijderen van primaire schijven uit de opslagpool, zowel afzonderlijk als in een spiegelconfiguratie, is toegevoegd. Verwijdering gebeurt met de opdracht "zpool remove". Tijdens het verwijderen worden de gegevens van de verwijderde schijf gekopieerd naar de overige primaire schijven in de pool;
  • De opdracht "zpool checkpoint" is toegevoegd om de huidige staat van de pool op te slaan met de mogelijkheid om toekomstige wijzigingen terug te draaien naar het opgeslagen tijdstip (er wordt een snapshot van de hele pool gemaakt). Deze functie kan nuttig zijn tijdens het uitvoeren van potentieel gevaarlijke complexe administratiewerkzaamheden die normaal gesproken leiden tot onomkeerbare wijzigingen (bijvoorbeeld het activeren van de vlaggen van nieuwe ZFS-functionaliteit of het wissen van gegevens);
  • De opdracht "zpool trim" is toegevoegd, waarmee de schijven in de pool geïnformeerd worden over sectoren die niet meer worden gebruikt. Het toepassen van de TRIM-operatie maakt het mogelijk om de efficiëntie van de SSD-schijven te verbeteren en hun prestatie-degradatie te voorkomen. Om een continue achtergrondverwerkingsproces voor het verzenden van TRIM-opdrachten in te schakelen, is een nieuwe eigenschap "autotrim" voorgesteld;
  • De opdracht "zpool initialize" is toegevoegd om alle niet-toegewezen schijfruimte te initialiseren, wat ervoor zorgt dat deze onmiddellijk klaar is voor gebruik, zonder prestatieverlies bij de eerste toegang (bijvoorbeeld bij het plaatsen van virtuele opslag, zoals VMware VMDK);
  • Ondersteuning voor accounting en quotabeheer op projectniveau is toegevoegd, ter aanvulling op de eerder beschikbare quotabeheer op gebruikers- en groepsniveau. Projecten zijn in feite aparte ruimtes voor objecten, gekoppeld aan een unieke identificatie (project-ID). De koppeling wordt vastgesteld via de operatie ‘chattr -p’ of door het erven van attributen. Er zijn commando's ‘zfs project’ en ‘zfs projectspace’ beschikbaar voor het beheren van projecten en het instellen van schijfruimtelimieten;
  • De mogelijkheid om Lua-scripts te maken voor het automatiseren van verschillende taken met ZFS is toegevoegd. Scripts worden uitgevoerd in speciale geïsoleerde omgevingen met het commando ‘zpool program’;
  • Een nieuwe bibliotheek is geïmplementeerd pyzfs, die een stabiele API biedt voor het beheren van ZFS vanuit applicaties in Python. De bibliotheek is een wrapper bovenop libzfs_core en biedt een identieke set functies, maar gebruikt types die dichter bij Python liggen;
  • Compatibiliteit van de utiliteiten arcstat, arcsummary en dbufstat met Python 3 is verzekerd. De utiliteiten arcstat.py, arc_summary.py en dbufstat.py zijn hernoemd naar versies zonder de extensie ‘.py’;
  • Ondersteuning voor de Linux-kernelinterface Direct IO (O_DIRECT) is toegevoegd, waarmee direct toegang tot gegevens mogelijk is zonder buffering en om de cache heen;
  • Prestatieoptimalisaties zijn geïntroduceerd:
    • De werking van de commando's ‘scrub’ en ‘resilver’ is versneld door deze op te splitsen in twee fasen (er is een aparte fase voor het scannen van metadata en het bepalen van de locatie van gegevensblokken op de schijf, wat verdere controle met behulp van sequentieel lezen van gegevens mogelijk maakt);
    • Ondersteuning voor allocatieklassen is toegevoegd,
      die relatief kleine SSD-schijven in de pool kunnen opnemen en kunnen gebruiken voor het opslaan van alleen bepaalde typen vaak gebruikte blokken, zoals metadata, DDT-gegevens en kleine blokken met bestanden;
    • De prestaties van beheerscommandos zoals
      ‘zfs list’ en ‘zfs get’ profiteren van het cachen van de benodigde metadata voor hun werking;
    • De ondersteuning voor het paralleliseren van bloktoewijzingsope- raties is toegevoegd door het starten van afzonderlijke ‘allocator’-processen voor elke metaslab-groep. Op normale systemen wordt een prestatieverbetering van 5-10% opgemerkt, maar op grote systemen (8 128 GB SSD, 24-core NUMA, 256 GB RAM) kan de prestatieverbetering van bloktoewijzing oplopen tot 25%;
    • De mogelijkheid voor het uitgestelde uitvoeren van het commando ‘resilver’ (herstructurering van de gegevensverdeling rekening houdend met veranderingen in de opslagconfiguratie) is toegevoegd — als bij het starten van een nieuwe operatie de vorige nog niet is voltooid, begint de nieuwe handler pas na de voltooiing van de vorige;
    • Optimalisaties aangebracht in het ZIL (ZFS Intent Log), waardoor blokken kunnen worden gemaakt en verwerkt terwijl er nog blokken door de opslag worden verwerkt;
    • De tijd voor het registreren van schijven (zvol) in het systeem is verkort. Wanneer een pool een groot aantal schijven bevat, worden ze nu meteen beschikbaar na uitvoering van ‘zpool import’;
    • Ondersteuning toegevoegd voor hardwareversnelling van SHA256-hashcalculaties en AES-GCM-encryptieoperaties met behulp van chips die zijn uitgerust met Intel QAT (Quick Assist Technology). Ondersteuning toegevoegd voor hardwareversnellingsmiddelen van de chipset Intel C62x en CPU Atom C3000.

Bron: opennet.ru

Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers 🔥 Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers | ProHoster