È stato pubblicato il rilascio del progetto OpenZFS 2.1, che sviluppa l'implementazione del file system ZFS per Linux e FreeBSD. Il progetto ha guadagnato notorietà come "ZFS su Linux" e in precedenza si limitava allo sviluppo di un modulo per il kernel Linux, ma dopo aver trasferito il supporto a FreeBSD è stato riconosciuto come l'implementazione principale di OpenZFS ed è stato privato della menzione di Linux nel nome.
Il funzionamento di OpenZFS è stato testato con i 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 libera CDDL. OpenZFS è già in uso su FreeBSD ed è incluso nelle distribuzioni Debian, Ubuntu, Gentoo, Sabayon Linux e ALT Linux. I pacchetti con la nuova versione saranno preparati a breve per le principali distribuzioni Linux, inclusi Debian, Ubuntu, Fedora, RHEL/CentOS.
OpenZFS fornisce un'implementazione dei componenti ZFS, legati sia al funzionamento del file system che quello del gestore dei volumi. In particolare, sono stati realizzati i componenti: SPA (Storage Pool Allocator), DMU (Data Management Unit), ZVOL (ZFS Emulated Volume) e ZPL (ZFS POSIX Layer). Inoltre, il progetto offre la possibilità di utilizzare ZFS come backend per il file system cluster 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 è sviluppato con la partecipazione del personale del Lawrence Livermore National Laboratory sotto contratto con il Dipartimento dell'Energia degli Stati Uniti.
Il codice è distribuito sotto la licenza CDDL, che non è compatibile con GPLv2, il che impedisce l'integrazione di OpenZFS nel ramo principale del kernel Linux, poiché la mescolanza di codice sotto le licenze GPLv2 e CDDL non è consentita. Per aggirare questa incompatibilità di licenza, è stato deciso di distribuire il prodotto interamente sotto la licenza CDDL come modulo scaricabile separato, fornito separatamente dal kernel. La stabilità della base di codice di OpenZFS è valutata come comparabile ad altre FS per Linux.
Principali modifiche:
- È stata aggiunta la supporto per la tecnologia dRAID (Distributed Spare RAID), che rappresenta una variante di RAIDZ con elaborazione distribuita integrata dei blocchi per il ripristino rapido (hot spare). dRAID ha ereditato tutti i vantaggi del RAIDZ, ma ha permesso di ottenere un notevole aumento della velocità di ricostruzione dello storage (resilvering) e di ripristino della ridondanza nell'array. Lo storage virtuale dRAID si forma da più gruppi interni RAIDZ, ciascuno dei quali comprende 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 uso ottimale della larghezza di banda disponibile. Invece di un singolo disco per il ripristino rapido, dRAID utilizza il concetto di distribuzione logica dei blocchi per il ripristino rapido su tutti i dischi dell'array.

- È stata implementata la proprietà «compatibility» («zpool create -o compatibility=off|legacy|file[,file…] pool vdev»), che consente all'amministratore di selezionare un insieme di funzionalità da attivare nel pool, al fine di creare pool portabili e mantenere la compatibilità tra diverse versioni di OpenZFS e diverse piattaforme.
- È stata fornita la possibilità di salvare le statistiche sulle prestazioni del pool nel formato del DBMS InfluxDB, ottimizzato per l'archiviazione, l'analisi e la manipolazione dei dati in forma di serie temporale (campionamenti di valori dei parametri a intervalli di tempo specificati). Per esportare nel formato InfluxDB è stato proposto il comando «zpool influxdb».
- È stata aggiunta la supporto per l'aggiunta a caldo di memoria e CPU.
- Nuovi comandi e opzioni:
- «zpool create -u» — vieta il montaggio automatico.
- «zpool history -i» — riflette nella cronologia delle operazioni la durata di esecuzione di ciascun comando.
- «zpool status» — aggiunto un avviso per i dischi con dimensioni di blocco non ottimali.
- «zfs send —skip-missing|-s» — ignora i snapshot mancanti durante l'invio del flusso per la replica.
- «zfs rename -u» — rinomina il FS senza rimontaggio.
- In arcstat è stata aggiunta la supporto per le statistiche L2ARC e sono state aggiunte le opzioni «-a» (tutte) e «-p» (parsable).
- Ottimizzazioni:
- Migliorata la performance dell'input/output interattivo.
- Accelerata l'operatività del prefetch per carichi di lavoro associati all'accesso ai dati in parallelo.
- Migliorata la scalabilità grazie alla riduzione dei conflitti di lock.
- Ridotto il tempo di importazione del pool.
- Ridotta la frammentazione dei blocchi ZIL.
- Aumentata la performance delle operazioni ricorsive.
- Migliorata la gestione della memoria.
- Accelerato il caricamento del modulo del kernel.
Fonte: opennet.ru

