Release van ZFS op Linux 0.8.0, implementaties van ZFS voor de Linux-kernel

Na bijna twee jaar ontwikkeling ingediend релиз ZFS op Linux 0.8.0, een implementatie van het ZFS-bestandssysteem verpakt als een module voor de Linux-kernel. De module is getest met Linux kernels van 2.6.32 tot 5.1. Kant-en-klare installatiepakketten volgen binnenkort zal worden voorbereid voor grote Linux-distributies, waaronder Debian, Ubuntu, Fedora, RHEL/CentOS. De ZFS on Linux-module is al opgenomen in de Debian-, Ubuntu-, Gentoo-, Sabayon Linux- en ALT Linux-distributies.

Als onderdeel van ZFS op Linux is een implementatie van ZFS-componenten voorbereid die betrekking hebben op zowel de werking van het bestandssysteem als de werking van de volumebeheerder. Met name de volgende componenten zijn geïmplementeerd: SPA (Storage Pool Allocator), DMU (Data Management Unit), ZVOL (ZFS Emulated Volume) en ZPL (ZFS POSIX Layer). Bovendien biedt het project de mogelijkheid om ZFS te gebruiken als een backend voor het Luster-clusterbestandssysteem. Het werk van het project is gebaseerd op originele ZFS-code geïmporteerd uit het OpenSolaris-project en verbeterd met verbeteringen en fixes van de Illumos-gemeenschap. Het project wordt ontwikkeld met de medewerking van medewerkers van het Livermore National Laboratory in het kader van een contract met het Amerikaanse ministerie van Energie.

De code wordt gedistribueerd onder een gratis CDDL-licentie, die niet compatibel is met GPLv2, waardoor ZFS op Linux niet kan worden geïntegreerd in de hoofdtak van de Linux-kernel, aangezien het mixen van code onder GPLv2- en CDDL-licenties niet is toegestaan. Om deze licentie-incompatibiliteit te omzeilen, is ervoor gekozen om het gehele product onder de CDDL-licentie te distribueren als een apart te laden module, die los van de core wordt geleverd. De stabiliteit van de ZFS op Linux-codebase wordt beoordeeld als vergelijkbaar met andere bestandssystemen voor Linux.

Grote veranderingen:

  • Ingebouwde ondersteuning toegevoegd voor codering van opgeslagen gegevens op het niveau van het bestandssysteem en partities. Het standaard versleutelingsalgoritme is aes-256-ccm. De opdracht "zfs load-key" is voorgesteld om coderingssleutels te laden;
  • De mogelijkheid geïmplementeerd om versleutelde gegevens over te dragen bij het uitvoeren van de opdrachten 'zfs send' en 'zfs Receive'. Wanneer u de optie "-w" specificeert, worden gegevens die al in de pool zijn versleuteld, overgedragen naar een andere pool zoals ze zijn, zonder tussentijdse ontsleuteling. Bij dergelijk kopiëren blijven de gegevens beschermd door de sleutel van de afzender, waardoor deze modus kan worden gebruikt voor back-ups naar onbetrouwbare systemen (als de ontvanger is gecompromitteerd, heeft de aanvaller geen toegang tot de gegevens zonder de sleutel);
  • Ondersteuning toegevoegd voor het verwijderen van primaire schijven uit een opslagpool, die zowel afzonderlijk als als onderdeel van een spiegel zijn aangesloten. Verwijdering wordt uitgevoerd met de opdracht "zpool remove". Het verwijderingsproces kopieert de gegevens van de uitgesloten schijf naar de resterende primaire schijven in de pool;
  • De opdracht "zpool checkpoint" is toegevoegd om de huidige status van de pool op te slaan met de mogelijkheid om verdere wijzigingen terug te draaien naar het opgeslagen tijdstip (er wordt een momentopname van de hele pool gemaakt). Deze functie kan handig zijn bij het uitvoeren van mogelijk gevaarlijk complex administratief werk, dat onder normale omstandigheden leidt tot onomkeerbare veranderingen (bijvoorbeeld het activeren van vlaggen voor nieuwe ZFS-functionaliteit of het wissen van gegevens);
  • De opdracht "zpool trim" is toegevoegd om de schijven die in de pool worden gebruikt te informeren over sectoren die niet langer in gebruik zijn. Het gebruik van de TRIM-bewerking maakt het mogelijk om de efficiëntie van SSD's te verhogen en verslechtering van hun prestaties te voorkomen. Er is een nieuwe eigenschap "autotrim" voorgesteld om het continue achtergrondproces van het verzenden van TRIM-commando's mogelijk te maken;
  • "zpool initialize"-opdracht toegevoegd om alle niet-toegewezen schijfruimte te initialiseren, waardoor deze direct klaar is voor gebruik, zonder prestatieverlies bij de eerste toegang (bijvoorbeeld bij het hosten van gevirtualiseerde opslag zoals VMware VMDK);
  • Ondersteuning toegevoegd voor quota's op boekhoud- en projectniveau, naast eerder beschikbare quota's op gebruikers- en groepsniveau. Projecten zijn in wezen een aparte ruimte van objecten die zijn gekoppeld aan een aparte identifier (project-ID). De binding wordt gedefinieerd via de bewerking 'chattr -p' of via attribuutovererving. Voor projectbeheer worden de opdrachten "zfs project" en "zfs projectspace" gepresenteerd, waarmee u het maken van projecten kunt beheren en er schijfruimtelimieten voor kunt instellen;
  • De mogelijkheid toegevoegd om Lua-scripts te maken om verschillende werkzaamheden met ZFS te automatiseren. Scripts worden uitgevoerd in speciale geïsoleerde omgevingen met behulp van de opdracht "zpool-programma";
  • Nieuwe bibliotheek geïmplementeerd pyzfs, die een stabiele API biedt voor het beheer van ZFS vanuit Python-applicaties. De bibliotheek is een wrapper rond libzfs_core en biedt een identieke set functies, maar gebruikt nauwere Python-typen;
  • De hulpprogramma's arcstat, arcsummary en dbufstat zijn compatibel gemaakt met Python 3. De hulpprogramma's arcstat.py, arc_summary.py en dbufstat.py zijn hernoemd naar versies zonder de extensie ".py".
  • Ondersteuning toegevoegd voor de Linux Direct IO (O_DIRECT) kernelinterface, die toegang tot gegevens mogelijk maakt zonder te bufferen en de cache te omzeilen;
  • Prestatie-optimalisaties geïntroduceerd:
    • Het werk van de commando's "scrub" en "resilver" is versneld door opsplitsing in twee fasen (er is een aparte fase toegewezen voor het scannen van metadata en het bepalen van de locatie van blokken met gegevens op de schijf, wat verdere verificatie mogelijk maakt met behulp van sequentiële gegevens lezing);
    • Ondersteuning toegevoegd voor toewijzingsklassen,
      waardoor relatief kleine SSD's kunnen worden samengevoegd en gebruikt om alleen bepaalde soorten veelgebruikte blokken op te slaan, zoals metadata, DDT-gegevens en kleine bestandsblokken;

    • Verbeterde prestaties van admin-opdrachten zoals
      "zfs list" en "zfs get", door de metadata te cachen die nodig zijn voor hun werking;

    • Ondersteuning toegevoegd voor parallellisatie van bloktoewijzingsbewerkingen door afzonderlijke toewijzingsprocessen uit te voeren voor elke metaslab-groep. Op conventionele systemen is er een prestatieverbetering van 5-10%, maar op grote (8 128 GB SSD, 24 core NUMA, 256 GB RAM) kan de toename in bloktoewijzingsoperaties oplopen tot 25%;
    • De mogelijkheid toegevoegd van vertraagde uitvoering van de "resilver" -opdracht (gegevensdistributie opnieuw opbouwen, rekening houdend met wijzigingen in de configuratie van schijven) - als de vorige nog niet is voltooid bij het starten van een nieuwe bewerking, begint de nieuwe handler pas daarna met uitvoeren de vorige is afgelopen;
    • Er zijn optimalisaties toegevoegd aan de ZIL (ZFS Intent Log) om het maken en verwerken van blokken mogelijk te maken in de aanwezigheid van blokken die nog worden verwerkt door de opslag;
    • Verkorte aanmeldtijd voor partities (zvol) in het systeem. Wanneer een pool een groot aantal partities bevat, zijn deze nu direct beschikbaar na het uitvoeren van "zpool import";
    • Ondersteuning toegevoegd voor hardwareversnelde berekening van SHA256-hashes en AES-GSM-coderingsbewerkingen met behulp van Intel QAT-chips (Quick Assist Technology). Ondersteuning toegevoegd voor hardwareversnelling van de Intel C62x-chipset en CPU Atom C3000.

Bron: opennet.ru

Voeg een reactie