Rilascio di ZFS su Linux 0.8.0, implementazione di ZFS per il kernel Linux

Dopo quasi due anni di sviluppo presentato il rilascio ZFS su Linux 0.8.0, implementazione del file system ZFS, presentato come modulo per il kernel Linux. Il funzionamento del modulo è stato testato con i kernel Linux dalle versioni 2.6.32 fino alla 5.1. I pacchetti di installazione sono disponibili a breve preparate per le principali distribuzioni Linux, inclusi Debian, Ubuntu, Fedora, RHEL/CentOS. Il modulo ZFS su Linux è già incluso nelle distribuzioni di Debian, Ubuntu, Gentoo, Sabayon Linux e ALT Linux.

Nell'ambito di ZFS su Linux è stata preparata l'implementazione dei componenti ZFS, relativi sia al funzionamento del file system che al funzionamento del gestore dei volumi. In particolare, sono stati implementati i componenti: SPA (Storage Pool Allocator), DMU (Data Management Unit), ZVOL (ZFS Emulated Volume) e ZPL (ZFS POSIX Layer). Inoltre, il progetto garantisce la possibilità di utilizzare ZFS come backend per il file system cluster Lustre. Le attività 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 fase di sviluppo con la partecipazione del personale del Lawrence Livermore National Laboratory sotto contratto con il Dipartimento dell'Energia degli Stati Uniti.

Il codice è distribuito con licenza open source CDDL, che non è compatibile con GPLv2, rendendo impossibile l'integrazione di ZFS su Linux nel ramo principale del kernel Linux, poiché la fusione di codice sotto licenze GPLv2 e CDDL non è consentita. Per ovviare a questa incompatibilità di licenza, è stato deciso di distribuire il prodotto interamente sotto licenza CDDL come modulo scaricabile separatamente dal kernel. La stabilità della base di codice ZFS su Linux è valutata come comparabile con altri FS per Linux.

Variazioni principali:

  • Aggiunta la supporto integrato per la crittografia dei dati archiviati a livello di file system e partizioni. Per default, viene utilizzato l'algoritmo aes-256-ccm per la crittografia. È stata proposta il comando "zfs load-key" per il caricamento delle chiavi di crittografia;
  • È stata implementata la possibilità di inviare dati crittografati durante l'esecuzione dei comandi "zfs send" e "zfs receive". Specificando l'opzione "-w", i dati già crittografati nel pool vengono trasferiti in un altro pool così come sono, senza una decrittografia intermedia. Durante tale copia, i dati rimangono protetti dalla chiave della parte mittente, permettendo di utilizzare questa modalità per il backup su sistemi non fidati (in caso di compromissione del destinatario, senza la chiave l'attaccante non potrà accedere ai dati);
  • È stata aggiunta la supporto per la rimozione dei dischi primari dal pool di archiviazione, collegati sia singolarmente che in uno specchio. La rimozione viene effettuata con il comando «zpool remove». Durante il processo di rimozione, i dati dall’unità che viene esclusa vengono copiati sugli altri dischi primari che rimangono nel pool;
  • È stato aggiunto il comando «zpool checkpoint» per salvare lo stato corrente del pool con la possibilità di tornare indietro a modifiche future al momento salvato (viene creato uno snapshot dell'intero pool). Questa funzione può risultare utile durante l'esecuzione di operazioni amministrative complesse e potenzialmente pericolose, che normalmente portano a modifiche irreversibili (ad esempio, l'attivazione dei flag per nuove funzionalità di ZFS o la pulizia dei dati);
  • È stato aggiunto il comando «zpool trim», che consente di informare i dischi utilizzati nel pool sui settori che non vengono più utilizzati. L'uso dell'operazione TRIM permette di migliorare l'efficienza degli SSD e di prevenire il degrado delle loro prestazioni. È stata proposta una nuova proprietà «autotrim» per attivare un processo di trasmissione continua in background dei comandi TRIM;
  • È stato aggiunto il comando «zpool initialize» per inizializzare l'intero spazio disco non allocato, garantendo la sua prontezza immediata all'uso, senza ridurre le prestazioni al primo accesso (ad esempio, nella distribuzione di archiviazioni virtualizzate, come VMware VMDK);
  • È stato aggiunto il supporto per la contabilizzazione e le quote a livello di progetto, che integra le quote precedentemente disponibili a livello di utente e di gruppo. Fondamentalmente, i progetti sono spazi separati di oggetti associati a un identificatore unico (project ID). L'associazione è definita tramite l'operazione ‘chattr -p’ o tramite l'ereditarietà degli attributi. Sono stati presentati i comandi «zfs project» e «zfs projectspace» per gestire la creazione dei progetti e impostare limiti di spazio disco per essi;
  • È stata aggiunta la possibilità di creare script Lua per automatizzare vari compiti con ZFS. Gli script vengono eseguiti in ambienti isolati speciali tramite il comando «zpool program»;
  • È stata realizzata una nuova libreria pyzfs, che fornisce un'API stabile per la gestione di ZFS da applicazioni scritte in Python. La libreria è un wrapper su libzfs_core e offre un insieme identico di funzioni, ma applica tipi più adatti a Python;
  • Compatibilità assicurata per gli strumenti arcstat, arcsummary e dbufstat con Python 3. Gli strumenti arcstat.py, arc_summary.py e dbufstat.py sono stati rinominati in versioni senza l'estensione «.py»;
  • Aggiunta il supporto per l'interfaccia kernel Linux Direct IO (O_DIRECT), che consente di accedere ai dati senza buffering e bypassando la cache;
  • Introdotte ottimizzazioni delle prestazioni:
    • Accelerata l'esecuzione dei comandi «scrub» e «resilver» grazie alla suddivisione in due fasi (è stata riservata una fase separata per la scansione dei metadati e la determinazione della posizione dei blocchi di dati sul disco, consentendo di eseguire ulteriori verifiche utilizzando la lettura sequenziale dei dati);
    • Aggiunto il supporto per le classi di allocazione dati (Allocation classes),
      che consentono di includere nel pool SSD relativamente piccoli e utilizzarli per l'archiviazione solo di determinati tipi di blocchi frequentemente utilizzati, come metadati, dati DDT e piccoli blocchi con file;
    • Aumentate le prestazioni dei comandi per la gestione, come
      «zfs list» e «zfs get», grazie alla memorizzazione nella cache dei metadati necessari per il loro funzionamento;
    • Aggiunto il supporto per il parallelismo nelle operazioni di allocazione dei blocchi attraverso l'avvio di processi «allocator» separati per ciascun gruppo di metaslab. Su sistemi normali si osserva un aumento delle prestazioni del 5-10%, ma su sistemi di grandi dimensioni (8 128 GB SSD, 24 core NUMA, 256 GB di RAM) l'aumento delle operazioni di allocazione dei blocchi può raggiungere il 25%;
    • Aggiunta la possibilità di eseguire in modo rinviato il comando «resilver» (ricostruzione della distribuzione dei dati tenendo conto della modifica della configurazione degli archivi) — se durante l'avvio di una nuova operazione non è stata completata quella precedente, il nuovo gestore inizierà a eseguire solo al termine della precedente;
    • Ottimizzazioni apportate al registro ZIL (ZFS Intent Log) che consentono di creare e gestire blocchi in presenza di blocchi già in fase di elaborazione da parte dello storage;
    • Ridotto il tempo di registrazione delle partizioni (zvol) nel sistema. Quando il pool contiene un gran numero di partizioni, queste ora diventano disponibili immediatamente dopo l'esecuzione di «zpool import»;
    • È stato aggiunto il supporto per l'accelerazione hardware nel calcolo degli hash SHA256 e nelle operazioni di crittografia AES-GSM utilizzando chip compatibili con la tecnologia Intel QAT (Quick Assist Technology). È stato aggiunto il supporto per i mezzi di accelerazione hardware del chipset Intel C62x e della CPU Atom C3000.

Fonte: opennet.ru

Acquista hosting affidabile per siti web con protezione DDoS, server VPS VDS 🔥 Acquista hosting affidabile per siti web con protezione DDoS, server VPS VDS - ProHoster