È stato pubblicato il rilascio del progetto OpenZFS 2.1, che sviluppa l'implementazione del file system ZFS per Linux e FreeBSD. Il progetto è diventato noto come "ZFS on Linux" ed era in precedenza limitato allo sviluppo di un modulo per il kernel Linux, ma dopo il trasferimento del supporto per FreeBSD è stato riconosciuto come l'implementazione principale di OpenZFS ed è stato rimosso il riferimento a Linux nel nome.
Il funzionamento di OpenZFS è stato verificato con kernel Linux dalla versione 3.10 alla 5.13 e con tutti i rami di FreeBSD, a partire dalla 12.2-RELEASE. Il codice è distribuito sotto la licenza aperta CDDL. OpenZFS è già utilizzato in FreeBSD e fa parte delle distribuzioni Debian, Ubuntu, Gentoo, Sabayon Linux e ALT Linux. I pacchetti con la nuova versione verranno presto preparati per le principali distribuzioni Linux, comprese Debian, Ubuntu, Fedora, RHEL/CentOS.
OpenZFS fornisce un'implementazione dei componenti ZFS, relativi sia al funzionamento del file system che al funzionamento del gestore dei volumi. In particolare, sono stati implementati i seguenti componenti: SPA (Storage Pool Allocator), DMU (Data Management Unit), ZVOL (ZFS Emulated Volume) e ZPL (ZFS POSIX Layer). Inoltre, il progetto ha reso possibile l'uso di ZFS come backend per il file system distribuito Lustre. I progressi del progetto si basano sul codice originale di ZFS, importato dal progetto OpenSolaris e ampliato con miglioramenti e correzioni della comunità Illumos. Il progetto è in corso di sviluppo con la partecipazione dei dipendenti del Laboratorio Nazionale di Livermore secondo un contratto con il Dipartimento dell'Energia degli Stati Uniti.
Il codice è distribuito sotto la licenza libera CDDL, che è incompatibile con GPLv2, il che impedisce l'integrazione di OpenZFS nella branch principale del kernel Linux, poiché la combinazione di codice sotto licenze GPLv2 e CDDL non è consentita. Per ovviare a questa incompatibilità licenziale, è stato deciso di distribuire il prodotto interamente sotto licenza CDDL come modulo separato, che viene fornito separatamente dal kernel. La stabilità della base di codice di OpenZFS è valutata come comparabile ad altri file system per Linux.
Variazioni principali:
- Aggiunta la supporto per la tecnologia dRAID (Distributed Spare RAID), che rappresenta una variante di RAIDZ con elaborazione dei blocchi distribuita integrata per il ripristino a caldo (hot spare). dRAID ha ereditato tutti i vantaggi di RAIDZ, ma ha permesso un notevole aumento della velocità di ricostruzione dello storage (resilvering) e del ripristino della ridondanza nell'array. Lo storage virtuale dRAID è formato da più gruppi interni di RAIDZ, in ciascuno dei quali sono presenti dispositivi per la memorizzazione dei dati e dispositivi per la memorizzazione dei blocchi di parità. I gruppi indicati sono distribuiti su tutti i dischi per un utilizzo ottimale della larghezza di banda disponibile dei dischi. In dRAID viene utilizzata una logica di distribuzione dei blocchi per il ripristino a caldo su tutti i dischi dell'array anziché un singolo disco dedicato.

- Implementata la funzionalità "compatibility" ("zpool create -o compatibility=off|legacy|file[,file…] pool vdev"), che consente all'amministratore di scegliere il set di funzionalità da attivare nel pool, con l'obiettivo di creare pool portabili e mantenere la compatibilità dei pool tra diverse versioni di OpenZFS e diverse piattaforme.
- È stata fornita la possibilità di mantenere statistiche sulle prestazioni del pool nel formato del database InfluxDB, ottimizzato per memorizzare, analizzare e manipolare dati in forma di serie temporale (campionamenti di valori di parametri a intervalli di tempo prestabiliti). Per l'esportazione nel formato InfluxDB è disponibile il comando "zpool influxdb".
- Aggiunto il supporto per l'aggiunta a caldo di memoria e CPU.
- Nuovi comandi e opzioni:
- "zpool create -u" — proibire il montaggio automatico.
- «zpool history -i» — riflesso nella cronologia delle operazioni della durata di esecuzione di ciascun comando.
- «zpool status» — è stata aggiunta l'uscita di avviso per i dischi con dimensioni di blocco subottimali.
- «zfs send —skip-missing|-s» — ignorare gli snapshot mancanti durante l'invio del flusso per la replica.
- «zfs rename -u» — rinominare il FS senza rimontare.
- Aggiunta la supporto per statistiche L2ARC in arcstat e sono state aggiunte le opzioni «-a» (all) e «-p» (parsable).
- Ottimizzazioni:
- Migliorata le prestazioni dell'input/output interattivo.
- Accelerata l'operazione di prefetch per i carichi di lavoro correlati ad accessi paralleli ai dati.
- Migliorata la scalabilità riducendo i conflitti di blocco.
- Ridotto il tempo di importazione del pool.
- Ridotta la frammentazione dei blocchi ZIL.
- Migliorate le prestazioni delle operazioni ricorsive.
- Migliorata la gestione della memoria.
- Accelerato il caricamento del modulo del kernel.
Fonte: opennet.ru

