Striscia ZFS sulla parte superiore dell'hardware RAID 6. Cosa potrebbe andare storto?


9

Ho un rack SAN HDD da 36 * 4 TB. Il controller RAID non supportava RAID60 e non più di 16 HDD in un gruppo RAID. Così ho deciso di creare 2 gruppi RAID6 di 16HDD o 4 di 8 HDD. Voglio ottenere tutto lo spazio di archiviazione come un'unica partizione.

Quindi, cosa potrebbe andare storto se userò il pool zfs sull'hardware RAID6? Sì, so che si consiglia vivamente di utilizzare HDD nativi o modalità pass-through. Ma non ho questa opzione.

O dovrei stare lontano da ZFS e dai raid software in questa situazione? (Sono principalmente interessato a compressione e istantanee)


2
Se utilizzerai ZFS, perché non esporre tutti i dischi singolarmente (a volte chiamati modalità HBA) e lasciare che ZFS lo gestisca, è quello che fa meglio. Abbiamo un numero di veri esperti in questo (ewwhite per iniziare) che ti aiuteranno in questo: quale esatto controller del disco stai usando?
Chopper3,

1
Con questo metodo sovvertirai molte funzionalità ZFS, ma nel complesso non danneggerà nulla per farlo in questo modo. Il checksum è un po 'più inutile in questa configurazione, poiché il controller RAID sottrarrà tutti i dettagli del disco. Sono più interessato al perché dici che non puoi usare JBOD. 3530 sono unità compatibili con JBOD.
Spooler

2
Aspetterei l'ewwhite - è negli Stati Uniti centrali, quindi dorme ma conosce ZFS meglio di chiunque io conosca
Chopper3

1
@Severgun Anche 4 HDD rimangono inutili perché non è necessario in hotspare Pensi davvero che sia meglio per un array RAID con un'unità guasta zoppicare in modalità degradata piuttosto che raccogliere automaticamente una riserva di riserva, ricostruire e tornare completamente- stato funzionale?
Andrew Henle,

1
@ Chopper3 risponderò ... a malincuore.
ewwhite,

Risposte:


5

Così ho deciso di creare 2 gruppi RAID6 di 16HDD o 4 di 8 HDD.

Questo non è il modo migliore per fare le cose. Potrebbe funzionare abbastanza bene, ma a seconda delle esigenze prestazionali potrebbe non funzionare.

La dimensione ideale per un array RAID5 / 6 sarà tale che un multiplo esatto della quantità di dati che "abbraccia" l'array corrisponda alla dimensione del blocco del file system costruito su di esso.

Gli array RAID5 / 6 funzionano come dispositivi a blocchi: un singolo blocco di dati si estende sui dischi dell'array e quel blocco contiene anche dati di parità. La maggior parte dei controller RAID scriverà una grande quantità di dati di due dimensioni su ciascun disco dell'array - il cui valore esatto è configurabile in sistemi RAID migliori - e l'unità Dot Hill è uno di quei "sistemi RAID migliori". È importante.

Quindi ci vuole N x (quantità di dati memorizzati per pezzo di disco) per estendere l'array, dove N è il numero di dischi di dati. Un array RAID5 a 5 dischi ha 4 dischi "dati" e un array RAID6 a 10 unità ha 8 dischi dati.

Perché quando i dati vengono scritti su un array RAID5 / 6, se il blocco di dati è tale da essere sufficientemente grande da coprire l'intero array, la parità viene calcolata per quei dati - di solito nella memoria del controller - quindi l'intero stripe viene scritto su disco. Semplice e veloce.

Ma se il blocco di dati in fase di scrittura non è abbastanza grande per coprire l'intero array, cosa deve fare il controller RAID per calcolare i nuovi dati di parità? Pensaci: ha bisogno di tutti i dati nell'intero intervallo per ricalcolare i nuovi dati di parità.

Pertanto, se si crea un array RAID6 a 16 unità con il blocco predefinito per disco di 512 kb, ciò significa che sono necessari 7 MB per "estendere" l'array.

ZFS funziona generalmente in blocchi da 128kb.

Quindi ZFS scrive un blocco da 128 kB - su un array RAID6 a 16 unità. Nella configurazione che stai proponendo, ciò significa che il controller RAID deve leggere quasi 7 MB dall'array e ricalcolare la parità tra quei 7 MB. Quindi riscrivi gli interi 7 MB sul disco.

Se sei fortunato, è tutto nella cache e non subisci un enorme successo in termini di prestazioni. (Questo è uno dei motivi principali per cui la posizione "non utilizzare RAID5 / 6" ha un seguito simile: RAID1 [0] non ne soffre.)

Se sei sfortunato e non hai allineato correttamente le tue partizioni del filesystem, quel blocco da 128kB si estende su due strisce RAID che non sono nella cache e il controller deve leggere 14 MB, ricalcolare la parità, quindi scrivere 14 MB. Tutto per scrivere un blocco da 128 kB.

Questo è ciò che deve accadere logicamente . Ci sono molte ottimizzazioni che i buoni controller RAID possono prendere per ridurre l'IO e il carico computazionale di tali schemi IO, quindi potrebbe non essere così male.

Ma sotto un pesante carico di scrittura di blocchi da 128 kB in posizioni casuali, ci sono davvero buone probabilità che le prestazioni di un array RAID6 a 16 unità con una dimensione di striscia di 7 MB siano assolutamente terribili.

Per ZFS, i LUN RAID5 / 6 "ideali" sottostanti per un file system per uso generale in cui la maggior parte degli accessi sono effettivamente casuali avrebbe una dimensione della striscia che è un divisore uniforme di 128 kB, come 32 kB, 64 kB o 128 kB. In questo caso, ciò limita il numero di dischi di dati in un array RAID5 / 6 a 1 (il che è privo di senso - anche se possibile da configurare, è meglio usare solo RAID1 [0]), 2, 4 o 8. Prestazioni migliori nel migliore dei casi sarebbe utilizzare una dimensione di striping di 128 kB per gli array RAID5 / 6, ma nel migliore dei casi non si verifica spesso nei file system di uso generale, spesso perché i file system non memorizzano i metadati allo stesso modo in cui memorizzare i dati del file.

Consiglierei di impostare array RAID5 a 5 dischi o array RAID6 a 10 dischi, con la dimensione del blocco per disco impostata abbastanza piccola da contenere 64 KB per la quantità di dati su un intero array di array (sì, l'ho fatto prima per ZFS - molte volte). Ciò significa che per un array RAID con 4 dischi di dati, la dimensione del blocco per disco dovrebbe essere di 16 KB, mentre per un array RAID con 8 dati, la dimensione del blocco per disco dovrebbe essere di 8 KB.

Quindi consenti a ZFS di utilizzare l' intero array, senza partizionarlo. ZFS si allineerà correttamente a un'intera unità, sia che si tratti di un semplice disco singolo o di un array RAID presentato da un controller RAID.

In questo caso, e senza conoscere i requisiti esatti di spazio e prestazioni, ti consiglio di impostare tre array RAID6 a 10 unità o sei array RAID5 a 5 unità con dimensioni della striscia di 64 kB, configurare un paio di hot spare e salvare quattro dei tuoi dischi per qualunque cosa accada in futuro. Perché qualcosa lo farà.

Sicuramente non userei quel sistema di dischi in modalità JBOD: è un dispositivo completamente conforme a NEBS di livello 3 che offre significative protezioni di affidabilità e disponibilità integrate direttamente nell'hardware. Non buttarlo via solo perché "ZFS !!!!". Se si tratta di un pezzo di hardware economico che metti insieme dalle parti? Sì, la modalità JBOD con ZFS che gestisce il RAID è la cosa migliore, ma NON è l'hardware che hai. UTILIZZARE le funzionalità fornite dall'hardware.


Ciò significa che per un array RAID con 4 dischi di dati, la dimensione del blocco per disco dovrebbe essere di 16 KB, mentre per un array RAID con 8 dati, la dimensione del blocco per disco dovrebbe essere di 32 KB. Sono un po 'confuso con questa matematica. Perché 8 dischi - pezzo da 32kB? Correggimi se sbaglio: 128kB (blocco ZFS) / 3 (array RAID) = 43 kB per array RAID. RAID6 di 10 dischi 43kB / 8 = 5kB (non disponibile in chunksize) Il più grosso chunksize da 8kB non è disponibile anche dall'hardware. Quindi, le migliori prestazioni non sono accessibili?
Severgun,

@Severgun Ho messo le dimensioni del pezzo all'indietro. Il problema con l'obiettivo di ottenere le migliori prestazioni assolute su RAID5 / 6 è che accadrà solo quando quasi tutte le operazioni di I / O corrispondono perfettamente alla dimensione dello strip array RAID. Un numero significativo di operazioni di I / O inferiori alle dimensioni della striscia può compromettere seriamente le prestazioni. L'utilizzo di blocchi di dimensioni inferiori aiuta a limitare l'impatto delle scritture casuali di blocchi piccoli. Nella mia esperienza, è meglio rinunciare all'1-2% delle possibili prestazioni massime in cambio della limitazione del drop-off nel caso peggiore. I file system generici tendono ad avere un buon numero di piccole scritture.
Andrew Henle,

(cont) 8 dischi di dati in un array RAID5 / 6 con una dimensione del blocco di 16 kB per disco generano una dimensione di striscia di 128 kB attraverso l'array. Allo stesso modo blocchi da 32 kB per un array con 4 dischi di dati. ZFS scrive un blocco di dati di file da 128 kB su un singolo dispositivo: non è suddiviso in tutti gli zdev. Ancora una volta, tuttavia, per un file system per scopi generici, ci saranno molte scritture sub-128kB, quindi una dimensione di striping più piccola (64kB) eviterà meglio il degrado delle prestazioni con un carico di scrittura pesante, ma a un piccolo costo nella migliore- prestazioni del caso.
Andrew Henle,

4

Ok, mordo ...

Questo è l'hardware sbagliato per l'applicazione. La configurazione di DotHill presenta le stesse limitazioni di un HP StorageWorks MSA2000 / P2000 in quanto solo 16 unità possono essere utilizzate in un singolo raggruppamento di array.

ZFS in cima a RAID hardware o SAN LUN esportato non è necessariamente un problema.

Tuttavia, lo striping di LUN ZFS su interconnessioni sconosciute, su chassis di espansione può comportare alcuni rischi.

  • Ad esempio, stai eseguendo SAS multipath in una topologia ad anello con doppio controller?
  • Hai un cablaggio ridondante al server?
  • Hai distribuito le unità verticalmente tra i contenitori in modo da mitigare i guasti di un singolo chassis / cavo / controller e impedirgli di distruggere una parte della tua striscia RAID0?

Seriamente, potrebbe valere la pena valutare se hai bisogno di tutto questo spazio di archiviazione in un singolo spazio dei nomi ...

Se si richiede quel tipo di capacità in un singolo supporto, è necessario utilizzare un alloggiamento JBOD dedicato collegato all'HBA e possibilmente più unità di testa con cavi resilienti e un layout più intelligente.


1

È necessario collegare DIRETTAMENTE tutte le unità a una scatola che esegue ZFS. Ottieni un HBA SAS e collega le unità al box compatibile con ZFS (ad es. Eseguendo OmniOS o SmartOS). È quindi possibile condividere lo spazio tramite NFS, SMB, iScsi ...


È necessario collegare DIRETTAMENTE tutte le unità a una scatola che esegue ZFS. Non necessariamente: sostituire unità guaste in un array hardware su alcuni controller è facile : estrarre il disco rigido con la spia di errore accesa, quindi inserirne uno nuovo. Nessun amministratore di sistema deve eseguire i comandi ZFS per sostituire l'unità. In una configurazione aziendale con centinaia o migliaia di server e forse decine di migliaia di dischi rigidi distribuiti su più data center, questa è una preoccupazione. Le unità falliscono molto più di quanto non accada il bit rot.
Andrew Henle,

@Tobi Oetiker dimmi come inserire 36 HDD da 3,5 "nel caso 2U
Severgun

li abbiamo semplicemente messi in una scatola extra ... usa un extender sas ... come per le grandi implementazioni, forse chiedici quanto è gioioso gestirlo.
Tobi Oetiker,

@AndrewHenle Per essere onesti, è possibile ottenere la stessa semplice procedura di sostituzione e LED di stato con ZFS e gli HBA giusti (può comportare alcuni script minori se non si utilizza una soluzione preconfezionata).
user121391

0

Il motivo per cui ZFS oltre ai volumi logici HW RAID è un'idea MOLTO MALE , è perché ZFS richiede l'accesso a livello di blocco per funzionare correttamente. Sì, sarà utilizzabile, ma la funzionalità non sarà completa fino a quando non si collegheranno le unità direttamente al sistema operativo tramite un HBA o connessioni SATA dirette. Un esempio è che nella configurazione che stai proponendo, ZFS non può ragionevolmente proteggere i tuoi dati da modifiche ai dati sottostanti (sull'altro lato del controller RAID HW), e come tali non può garantire la sicurezza dei tuoi dati . Questo è uno dei motivi principali per cui viene utilizzato ZFS, oltre a essere super duper veloce.

ZFS è una tecnologia fantastica e lo consiglio vivamente. Ma dovrai rivisitare la tua struttura qui per poterla usare correttamente. Vale a dire che ZFS crea i volumi logici (vdevs) direttamente dai dischi.

Sembra che ci sia molta più lettura che devi fare su come funziona ZFS prima di poter capire con precisione cosa l'hai proposto, in contrasto con ciò che invece dovrebbe essere fatto.


Sì sì e sì. Capisco come ZFS funziona il più possibile. Ma ci sono alcune complicazioni: 1) Ho già SAN recinto e necessità di usarlo. Non sto creando spazio di archiviazione da zero. 2) Questo non è il mio NAS di casa dove posso comprare e buttare via le cose. 3) Il budget per la ricostruzione della configurazione dell'archiviazione è uguale a zero . Dall'archiviazione ho bisogno della massima velocità di scrittura disponibile con spazio intorno a 100 TB. Sto cercando ZFS principalmente a causa della compressione e delle istantanee. Posso provare btrfs ma è sperimentale. Hmm potrebbe anche essere ZoL instabile? Non lo so.
Severgun,

@Severgun Fintanto che sai quali sono gli svantaggi, secondo me andrà bene. ZFS ha molte belle funzioni (come le istantanee) che funzionano indipendentemente dagli altri. La maggior parte dei consigli su Internet sottolinea l'importanza delle migliori pratiche in tutti i settori, ma si tratta di raccomandazioni, non di requisiti rigorosi. Questo punto diventerà meno importante in futuro, poiché sempre più distribuzioni di LInux cambiano in ZFS e la maggior parte dei sistemi Linux viene virtualizzata, quindi avranno la tua situazione esatta.
user121391

1
Il motivo per cui ZFS oltre ai volumi logici RAID HW è un'idea MOLTO MALE, è perché ZFS richiede l'accesso a livello di blocco per funzionare correttamente. È così male che non è nemmeno abbastanza buono per essere definito sbagliato. Apparentemente non hai idea di cosa significhi un hardware conforme a NEBS 3, vero? oltre a essere super duper veloce. ZFS è un sacco di cose buone. "super duper fast" NON è uno di questi. Questo è un file system veloce . Così è questo . Come vanno i file system, ZFS non è veloce.
Andrew Henle,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.