Rilascio di ZFS su Linux 0.8.0, implementazioni del kernel ZFS Linux

Dopo quasi due anni di sviluppo presentata rilasciare ZFS su Linux 0.8.0, un'implementazione del file system ZFS, progettata come modulo del kernel LinuxIl funzionamento del modulo è stato testato con i kernel Linux Dalla versione 2.6.32 alla 5.1. Pacchetti di installazione pronti in arrivo a breve. sarà preparato per le principali distribuzioni LinuxCompreso Debian, Ubuntu, Fedora, RHEL/CentOSModulo ZFS su Linux è già incluso nelle distribuzioni Debian, UbuntuGentoo, Sabayon Linux e ALT Linux.

All'interno di ZFS su Linux È stata predisposta un'implementazione dei componenti ZFS relativi sia al funzionamento del file system che alla funzionalità di gestione dei volumi. Nello specifico, sono stati implementati i seguenti componenti: SPA (Storage Pool Allocator), DMU (Data Management Unit), ZVOL (ZFS Emulated Volume) e ZPL (ZFS POSIX Layer). Il progetto consente inoltre l'utilizzo di ZFS come backend per il file system del cluster Lustre. Il lavoro del progetto si basa sul codice ZFS originale importato dal progetto OpenSolaris e ampliato con miglioramenti e correzioni apportati dalla comunità Illumos. Il progetto è in fase di sviluppo con la partecipazione del personale del Lawrence Livermore National Laboratory nell'ambito di un contratto con il Dipartimento dell'Energia degli Stati Uniti.

Il codice è distribuito sotto la licenza libera CDDL, che è incompatibile con GPLv2, che impedisce l'integrazione di ZFS su Linux nel ramo principale del kernel Linux, poiché mescolare codice con licenza GPLv2 e CDDL è inaccettabile. Per aggirare questa incompatibilità di licenza, si è deciso di distribuire l'intero prodotto con licenza CDDL come modulo caricabile separatamente, distribuito separatamente dal kernel. Stabilità della base di codice ZFS Linux è valutato come paragonabile ad altri FS per Linux.

Principali modifiche:

  • Aggiunto il supporto integrato per la crittografia dei dati archiviati a livello di file system e partizioni. L'algoritmo di crittografia predefinito è aes-256-ccm. Il comando "zfs load-key" è stato proposto per caricare le chiavi di cifratura;
  • Implementata la possibilità di trasferire dati crittografati durante l'esecuzione dei comandi 'zfs send' e 'zfs receive'. Quando si specifica l'opzione "-w", i dati già crittografati nel pool vengono trasferiti a un altro pool così come sono, senza decrittografia intermedia. Con tale copia, i dati rimangono protetti dalla chiave del mittente, che consente di utilizzare questa modalità per il backup su sistemi non affidabili (se il destinatario è compromesso, l'attaccante non sarà in grado di accedere ai dati senza la chiave);
  • Aggiunto il supporto per la rimozione delle unità primarie da un pool di archiviazione, connesse sia individualmente che come parte di un mirror. La rimozione viene eseguita con il comando "zpool remove". Il processo di eliminazione copia i dati dall'unità esclusa alle unità primarie rimanenti nel pool;
  • Aggiunto il comando "zpool checkpoint" per salvare lo stato corrente del pool con la possibilità di eseguire il rollback di ulteriori modifiche al punto temporale salvato (viene creata un'istantanea dell'intero pool). Questa funzione può essere utile nel processo di esecuzione di lavori amministrativi complessi potenzialmente pericolosi, che in condizioni normali portano a modifiche irreversibili (ad esempio, attivazione di flag per nuove funzionalità ZFS o cancellazione di dati);
  • È stato aggiunto il comando "zpool trim" per informare le unità utilizzate nel pool sui settori che non sono più in uso. L'uso dell'operazione TRIM consente di aumentare l'efficienza degli SSD e di prevenire il degrado delle loro prestazioni. È stata proposta una nuova proprietà "autotrim" per abilitare il processo continuo in background di trasmissione dei comandi TRIM;
  • Aggiunto il comando "zpool initialize" per inizializzare tutto lo spazio su disco non allocato, che consente di essere immediatamente pronto per l'uso, senza degrado delle prestazioni al primo accesso (ad esempio, quando si ospitano archivi virtualizzati come VMware VMDK);
  • Aggiunto il supporto per la contabilità e le quote a livello di progetto, oltre alle quote precedentemente disponibili a livello di utente e gruppo. In sostanza, i progetti sono uno spazio separato di oggetti associati a un identificatore separato (ID progetto). L'associazione è definita tramite l'operazione 'chattr -p' o tramite l'ereditarietà degli attributi. Per la gestione dei progetti vengono presentati i comandi “zfs project” e “zfs projectspace” che permettono di gestire la creazione dei progetti e di impostarne i limiti di spazio su disco;
  • Aggiunta la possibilità di creare script Lua per automatizzare vari lavori con ZFS. Gli script vengono eseguiti in speciali ambienti isolati utilizzando il comando "zpool program";
  • Nuova libreria implementata pyzfs, che fornisce un'API stabile per l'amministrazione di ZFS dalle applicazioni Python. La libreria è un wrapper attorno a libzfs_core e fornisce un insieme identico di funzioni, ma utilizza tipi Python più vicini;
  • Le utilità arcstat, arcsummary e dbufstat sono state rese compatibili con Python 3. Le utilità arcstat.py, arc_summary.py e dbufstat.py sono state rinominate in versioni senza l'estensione ".py";
  • Aggiunto il supporto per l'interfaccia del kernel. Linux I/O diretto (O_DIRECT), che consente di accedere ai dati senza buffering e bypassando la cache;
  • Ottimizzazioni delle prestazioni introdotte:
    • Il lavoro dei comandi "scrub" e "resilver" è stato accelerato grazie alla suddivisione in due fasi (è stata assegnata una fase separata per la scansione dei metadati e la determinazione della posizione dei blocchi con i dati sul disco, che consente un'ulteriore verifica utilizzando i dati sequenziali lettura);
    • Aggiunto il supporto per le classi di allocazione,
      consentire di raggruppare e utilizzare SSD relativamente piccoli per archiviare solo determinati tipi di blocchi di uso comune, come metadati, dati DDT e piccoli blocchi di file;
    • Prestazioni migliorate dei comandi di amministrazione come
      "zfs list" e "zfs get", memorizzando nella cache i metadati necessari al loro funzionamento;
    • Aggiunto il supporto per la parallelizzazione delle operazioni di allocazione dei blocchi eseguendo processi di allocatore separati per ogni gruppo metaslab. Sui sistemi convenzionali si registra un aumento delle prestazioni del 5-10%, ma su quelli di grandi dimensioni (8 SSD da 128 GB, 24 core NUMA, 256 GB di RAM) l'aumento delle operazioni di allocazione dei blocchi può raggiungere il 25%;
    • Aggiunta la possibilità di ritardare l'esecuzione del comando "resilver" (ricostruire la distribuzione dei dati tenendo conto dei cambiamenti nella configurazione delle unità) - se il precedente non è ancora stato completato all'avvio di una nuova operazione, il nuovo gestore inizierà l'esecuzione solo dopo il precedente è terminato;
    • Sono state aggiunte ottimizzazioni allo ZIL (ZFS Intent Log) per consentire la creazione e l'elaborazione di blocchi in presenza di blocchi ancora in fase di elaborazione da parte dello storage;
    • Tempo di registrazione ridotto per le partizioni (zvol) nel sistema. Quando un pool contiene un numero elevato di partizioni, ora sono disponibili immediatamente dopo aver eseguito "zpool import";
    • Aggiunto il supporto per il calcolo con accelerazione hardware degli hash SHA256 e le operazioni di crittografia AES-GSM utilizzando i chip Intel QAT (Quick Assist Technology). Aggiunto il supporto per l'accelerazione hardware del chipset Intel C62x e della CPU Atom C3000.

Fonte: opennet.ru

Acquista hosting affidabile per siti con protezione DDoS, server VPS VDS 🔥 Acquista un hosting web affidabile con protezione DDoS, server VPS e VDS | ProHoster