La versione OpenZFS 2.0 unifica Linux, BSD e aggiunge tonnellate di nuove funzionalità

0
36

Enlarge / OpenZFS 2.0.0 porta un sacco di nuove funzionalità e miglioramenti delle prestazioni sia per le piattaforme Linux che BSD.

Aurich Lawson

Questo lunedì, lo sviluppatore capo di ZFS su Linux Brian Behlendorf ha pubblicato la versione OpenZFS 2.0.0 su GitHub. Insieme a molte nuove funzionalità, l'annuncio pone fine alla precedente distinzione tra "ZFS su Linux" e ZFS altrove (ad esempio, su FreeBSD). Questa mossa è arrivata da molto tempo – la comunità di FreeBSD ha esposto il suo lato della roadmap due anni fa – ma questo è il rilascio che lo rende ufficiale.

Disponibilità

La nuova versione di OpenZFS 2.0.0 è già disponibile su FreeBSD, dove può essere installata dai port (sovrascrivendo il sistema base ZFS) su sistemi FreeBSD 12 e sarà la versione base di FreeBSD nel prossimo FreeBSD 13. Su Linux, la situazione è un po 'più incerto e dipende in gran parte dalla distribuzione Linux in gioco.

Gli utenti delle distribuzioni Linux che utilizzano i moduli del kernel OpenZFS costruiti da DKMS tenderanno a ottenere la nuova versione piuttosto rapidamente. Gli utenti di Ubuntu meglio supportato ma più lento probabilmente non vedranno OpenZFS 2.0.0 fino a Ubuntu 21.10, quasi un anno da oggi. Per gli utenti di Ubuntu che sono disposti a vivere al limite, il popolare ma di terze parti e gestito individualmente jonathonf PPA potrebbe renderlo disponibile molto prima.

I moduli OpenZFS 2.0.0 possono essere compilati dai sorgenti per i kernel Linux 3.10-5.9, ma la maggior parte degli utenti dovrebbe attenersi a ottenere moduli precompilati da distribuzioni o sviluppatori affermati. "Ben oltre il sentiero battuto" non è una frase che si dovrebbe generalmente applicare al file system che contiene i propri dati preziosi!

Annuncio pubblicitario

Nuove caratteristiche

Resilver sequenziale

La ricostruzione di array danneggiati in ZFS è stata storicamente molto diversa dal RAID convenzionale. Su array quasi vuoti, la ricostruzione ZFS, nota come "resilvering", è stata molto più veloce perché ZFS deve solo toccare la parte usata del disco invece di clonare ogni settore sull'intera unità. Ma questo processo implicava un'abbondanza di I / O casuali, quindi su array più quasi completi, la ricostruzione dell'intero disco blocco per blocco più pedonale del RAID convenzionale è stata molto più veloce. Con il resilvering sequenziale, ZFS ottiene il meglio da entrambi i mondi: accesso in gran parte sequenziale mentre continua a saltare le parti inutilizzate dei dischi coinvolti.

Persistente L2ARC

Una delle caratteristiche più interessanti di ZFS è la sua cache di lettura avanzata, nota come ARC. I sistemi con working set molto grandi e molto attivi possono anche implementare una cache di lettura basata su SSD chiamata L2ARC, che si popola da blocchi nell'ARC in fase di espulsione. Storicamente, uno dei maggiori problemi con L2ARC è che, sebbene l'SSD sottostante sia persistente, lo stesso L2ARC non lo è: diventa vuoto a ogni riavvio (o esportazione e importazione del pool). Questa nuova funzionalità consente ai dati nel L2ARC di rimanere disponibili e fattibili tra i cicli di importazione / esportazione del pool (inclusi i riavvii del sistema), aumentando notevolmente il valore potenziale del dispositivo L2ARC.

Algoritmo di compressione Zstd

OpenZFS offre una compressione in linea trasparente, controllabile con granularità per set di dati. Tradizionalmente, l'algoritmo più comunemente utilizzato è stato lz4, un algoritmo di streaming che offre un rapporto di compressione relativamente basso ma un carico della CPU molto leggero. OpenZFS 2.0.0 fornisce il supporto per zstd, un algoritmo progettato da Yann Collet (l'autore di lz4) che mira a fornire una compressione simile a gzip, con un carico della CPU simile a lz4.

Annuncio pubblicitario

  • L'asse x è la velocità di trasferimento, l'asse y è il rapporto di compressione. Cerca ZSTD1-19 in alto a sinistra in blu scuro, ZSTD-FAST in basso a destra in azzurro e LZ4 come un singolo punto arancione a destra di ZSTD-FAST.

  • Zstd è l'ammasso blu scuro in alto a sinistra, zstd-fast è la linea azzurra che attraversa la parte inferiore del grafico e LZ4 è il singolo punto arancione leggermente a destra del segmento verticale di zstd-fast.

Questi grafici sono un po 'difficili da seguire, ma essenzialmente mostrano che zstd raggiunge i suoi obiettivi. Durante la compressione (scritture su disco), zstd-2 è più efficiente di gzip-9 pur mantenendo un throughput elevato.

Rispetto a lz4, zstd-2 raggiunge una compressione superiore del 50% in cambio di una penalizzazione del throughput del 30%. Per quanto riguarda la decompressione (lettura del disco), la penalità del throughput è leggermente superiore, intorno al 36%.

Tieni presente che le "penalità" di throughput descritte presuppongono un ostacolo trascurabile sul supporto di memorizzazione stesso. In pratica, la maggior parte delle CPU può eseguire anelli attorno alla maggior parte dei supporti di memorizzazione (anche CPU relativamente lente e SSD veloci). Gli utenti ZFS sono ampiamente abituati a vedere la compressione lz4 accelerare i carichi di lavoro nel mondo reale, non rallentarli!

Replica redatta

Questo è un po 'un rompicapo. Supponiamo che ci siano parti dei dati di cui non si desidera eseguire il backup utilizzando la replica ZFS. Innanzitutto, cloni il set di dati. Successivamente, elimini i dati sensibili dal clone. Quindi, crei un segnalibro sul set di dati padre, che contrassegna i blocchi che sono cambiati dal genitore al clone. Infine, è possibile inviare il set di dati padre alla relativa destinazione di backup, incluso l'argomento –redact redaction_bookmark, e questo replica i blocchi non sensibili solo alla destinazione di backup.

Ulteriori miglioramenti e modifiche

Oltre alle principali funzionalità descritte sopra, OpenZFS 2.0.0 offre supporto per fallocate; pagine man migliorate e riorganizzate; prestazioni più elevate per distruggere zfs, inviare zfs e ricevere zfs, gestione della memoria più efficiente; e prestazioni di crittografia ottimizzate. Nel frattempo, alcune funzionalità utilizzate di rado – flussi di invio deduplicati, blocchi dedupditto e l'opzione del modulo zfs_vdev_scheduler – sono state tutte deprecate.

Per un elenco completo delle modifiche, vedere l'annuncio di rilascio originale su GitHub all'indirizzo https://github.com/openzfs/zfs/releases/tag/zfs-2.0.0.