Torna a RAID: i lettori di Ars “E se?” edizione

63

Ingrandisci / Divento ansioso se non riesco a guardare le luci intermittenti nella grande finestra del Terminale in background durante l’esecuzione dei test.

Jim Salter

Fondamenti di archiviazione

Visualizza più storie

Nella precedente copertura di ZFS contro il RAID del kernel Linux, alcuni lettori temevano che avessimo perso alcuni trucchi per l’ottimizzazione di mdraid. In particolare, Louwrentius voleva che ripetessimo il test di mdadm con le bitmap disabilitate e targetnovember pensava che forse XFS avrebbe potuto superare ext4.

Le bitmap con intento di scrittura sono una funzionalità di mdraid che consente ai dischi che si sono staccati e sono rientrati nell’array di risincronizzarsi anziché ricostruire da zero. L'”età” della bitmap sul disco di ritorno viene utilizzata per determinare quali dati sono stati scritti in sua assenza, il che consente di aggiornarli solo con i nuovi dati, anziché ricostruirli da zero.

XFS ed ext4 sono semplicemente due filesystem diversi. Ext4 è il filesystem di root predefinito sulla maggior parte delle distribuzioni e XFS è un sistema di grandi dimensioni per l’azienda più comunemente visto negli array da centinaia o addirittura migliaia di tebibyte. Abbiamo testato entrambi questa volta, con il supporto bitmap disabilitato.

L’esecuzione dell’intera panoplia di test che abbiamo utilizzato negli articoli precedenti non è banale: la suite completa, che verifica un’ampia gamma di topologie, blocksize, numeri di processo e tipi di I/O, richiede circa 18 ore per essere completata. Ma abbiamo trovato il tempo per eseguire alcuni test contro le topologie dei pesi massimi, vale a dire quelle con tutti gli otto dischi attivi.

Una nota sui risultati di oggi

Il framework che abbiamo utilizzato per i test ZFS distrugge, compila, formatta e monta automaticamente gli array, oltre a eseguire i test effettivi. I nostri test mdadm originali sono stati eseguiti individualmente e manualmente. Per assicurarci di avere la migliore esperienza da mela a mela, abbiamo adattato il framework per funzionare con mdadm.

Durante questo adattamento, abbiamo scoperto un problema con il nostro test di scrittura asincrono 4KiB. Per ZFS, abbiamo usato –numjobs=8 –iodepth=8 –size=512M. Questo crea otto file separati di 512 MiB ciascuno, con cui lavorare con gli otto processi fio separati. Sfortunatamente, questa dimensione del file è abbastanza piccola da consentire a mdraid di decidere di eseguire l’intero test in un singolo batch sequenziale, piuttosto che eseguire effettivamente 4 GiB di scritture casuali.

Per fare in modo che mdadm collabori, abbiamo dovuto aumentare la velocità fino a raggiungere –size=2G, a quel punto il throughput di scrittura di mdadm è precipitato a meno del 20 percento del suo throughput “burst” quando si utilizzano file più piccoli. Sfortunatamente, questo estende enormemente anche la durata del test di scrittura asincrono a 4KiB e persino l’opzione –time_based di fio non aiuta, poiché nelle prime centinaia di millisecondi mdraid ha già accettato l’intero carico di lavoro nel suo buffer di scrittura.

Annuncio

Poiché i risultati dei nostri test sarebbero altrimenti da configurazioni fio leggermente diverse, abbiamo eseguito nuovi test sia per ZFS che per mdraid con le bitmap predefinite abilitate, oltre ai nuovi test del filesystem –bitmap none e XFS.

RAIDz2 vs mdraid6

Anche se oggi stiamo testando solo configurazioni a otto dischi, stiamo testando sia la parità con striping che le configurazioni con mirroring con striping. Innanzitutto, confronteremo le nostre opzioni di parità: ZFS RAIDz2 e Linux mdraid6.

Blocksize 1MiB

  • La rimozione del supporto bitmap ha accelerato le scritture asincrone di mdraid6.

    Jim Salter

  • L’impostazione di bitmap=none non ha aiutato con le scritture di sincronizzazione.

    Jim Salter

  • Le letture di 1 MiB non sono influenzate dalla funzione bitmap.

    Jim Salter

Quando abbiamo creato un nuovo array mdraid6 da otto dischi con il supporto bitmap disabilitato, le nostre scritture asincrone sono aumentate in modo significativo, ma l’aumento aggiuntivo del 27,9 percento non ha comunque portato mdraid6 da nessuna parte all’interno delle impostazioni predefinite di ZFS, tanto meno il corretto recordsize= 1 milione di risultati.

Sia le letture che le scritture sincrone non sono state influenzate dal supporto bitmap o dalla sua mancanza. Le scritture RAIDz2 sono più del doppio della velocità delle scritture mdraid6, anche con la bitmap, mentre le letture mdraid6 sono un po’ meno del doppio della velocità delle letture RAIDz2.

Nonostante sia stato testato solo senza bitmap, XFS è rimasto indietro rispetto a ext4 in ogni test da 1 MiB.

Blocksize 4KiB

  • La rimozione delle bitmap non ha avuto effetti significativi sulle scritture 4KiB. Ma per la prima volta, XFS supera ext4.

    Jim Salter

  • La rimozione delle bitmap non ha aiutato la sincronizzazione di 1MiB in scrittura e non aiuta nemmeno la sincronizzazione di 4KiB in scrittura.

    Jim Salter

  • Sulle letture, XFS ed ext4 corrono collo e collo, a una velocità leggermente superiore al doppio di ZFS.

    Jim Salter

Piccole operazioni casuali sono l’incubo di qualsiasi RAID6 convenzionale. Non sono nemmeno lo scenario ideale di RAIDz2, ma la capacità di RAIDz2 di evitare di rimanere intrappolati in un ciclo di lettura-modifica-riscrittura gli porta un vantaggio in termini di prestazioni di scrittura di 6:1 rispetto a mdraid6. Mdraid6 se la cava molto meglio con letture casuali, con un vantaggio di lettura di 2:1.

In questi test a piccoli blocchi, XFS ha tenuto testa a ext4 e ha persino superato leggermente le sue prestazioni su scritture asincrone a 4 KiB. Nessuna di queste modifiche (supporto per file system o bitmap) ha avuto un impatto significativo sulle prestazioni complessive di 4KiB di mdraid6.

Specchi ZFS vs mdraid10

Gli amministratori che necessitano delle massime prestazioni dovrebbero abbandonare gli array di parità e passare ai mirror. Sul lato mdraid, mdraid10 supera mdraid6 in ogni metrica delle prestazioni che testiamo e un pool di mirror ZFS supera allo stesso modo mdraid10 in ogni metrica testata.

Annuncio

Blocksize 1MiB

  • La disabilitazione delle bitmap aiuta anche a scrivere 1MiB per mdraid10, ma solo del 5% circa.

    Jim Salter

  • La disabilitazione delle bitmap aiuta anche mdraid10 a sincronizzare le scritture.

    Jim Salter

  • La velocità di lettura non è influenzata da una bitmap (o dalla sua mancanza).

    Jim Salter

Proprio come gli array di parità, mdraid10 ottiene un aumento di scrittura di 1 MiB, ma molto più piccolo di mdraid6, e quel piccolo aumento non cambia materialmente la relazione di mdraid10 con i mirror ZFS più veloci.

La disabilitazione delle bitmap non ha alcun impatto sulle prestazioni di lettura e, a differenza di RAIDz2, i mirror ZFS vincono anche sulle prestazioni di lettura di 1MiB.

XFS ancora una volta segue ext4 su tutte le metriche testate.

Blocksize 4KiB

  • Le bitmap non hanno alcun impatto sulle prestazioni di scrittura 4KiB di mdraid10, ma XFS ha numeri inferiori rispetto a ext4.

    Jim Salter

  • mdraid10 esegue lo stesso per la sincronizzazione 4KiB scrive XFS o ext4, bitmap interne o senza bitmap.

    Jim Salter

  • Le bitmap non influiscono ancora sulla velocità di lettura, né dovresti aspettarti che lo facciano.

    Jim Salter

Con la dimensione del blocco di 4KiB, RAID10 ha un vantaggio moderato rispetto ai mirror ZFS: le letture non memorizzate nella cache sono circa il 35% più veloci. Ma mdraid10 rinuncia a un vantaggio di 4:1 in scrittura ea un vantaggio di 12:1 in scrittura sincrona.

La presenza o l’assenza di bitmap non ha differenze visibili in nessuna operazione 4KiB. Le prestazioni di XFS sono uguali a quelle di ext4 nelle scritture e nelle letture sincronizzate, ma un po’ più lente nelle scritture asincrone.

Conclusioni

Sebbene la disabilitazione del supporto bitmap abbia un certo impatto sulle prestazioni di scrittura di mdraid6 e mdraid10, non è giorno e notte nei nostri test e non altera sostanzialmente la relazione della topologia con il suo equivalente ZFS più vicino.

Non consigliamo di disabilitare le bitmap indipendentemente dal fatto che ti interessi o meno della relazione tra prestazioni e ZFS. Le funzionalità di sicurezza sono importanti e mdraid è un po’ più fragile senza bitmap. C’è un’opzione per le bitmap “esterne”, che possono essere archiviate su un veloce SSD, ma non lo consigliamo nemmeno: abbiamo visto un bel po’ di lamentele su problemi con bitmap esterne corrotte.

Se il tuo grande criterio sono le prestazioni, non possiamo nemmeno consigliare XFS su ext4. XFS ha seguito ext4 in quasi tutti i test, a volte in modo significativo. Gli amministratori con enormi array, centinaia di tebibyte o più, potrebbero avere altri motivi più legati alla stabilità e ai test per scegliere XFS. Ma gli hobbisti con pochi dischi sono ben serviti con entrambi e, a quanto pare, possono ottenere un po’ più di prestazioni da ext4.

Immagine dell’elenco di Jim Salter