L'operazione mkfs impiega molto tempo in Linux Software Raid 5


9

Ho creato un raid di software Linux livello 5 composto da dischi da 4 * 2 TB. L'array di dischi è stato creato con una dimensione di striping di 64k e senza altri parametri di configurazione. Dopo la ricostruzione iniziale ho provato a creare un filesystem e questo passaggio richiede molto tempo (circa mezz'ora o più). Ho provato a creare un filesystem xfs ed ext3, entrambi hanno impiegato molto tempo, con mkfs.ext3 ho osservato il seguente comportamento, che potrebbe essere utile:

  • la scrittura di tabelle di inode viene eseguita rapidamente fino a raggiungere 1053 (~ 1 secondo), quindi scrive circa 50, attende due secondi, quindi vengono scritti i 50 successivi (in base al display della console)
  • quando provo ad annullare l'operazione con Control + C si blocca per mezzo minuto prima che venga realmente annullato

Le prestazioni dei dischi singolarmente sono molto buone, ho eseguito bonnie ++ su ciascuno separatamente con valori di scrittura / lettura di circa 95/110 MB / s. Anche quando eseguo bonnie ++ su ogni unità in parallelo, i valori vengono ridotti solo di circa 10 MB. Quindi escludo la pianificazione hardware / I / O in generale come fonte di problemi.

Ho provato diversi parametri di configurazione per stripe_cache_size e readahead size senza successo, ma non credo che siano così rilevanti per l'operazione di creazione del file system.

I dettagli del server:

  • Server Linux 2.6.35-27-generico # 48-Ubuntu SMP x86_64 GNU / Linux
  • mdadm - v2.6.7.1

Qualcuno ha un suggerimento su come eseguire ulteriormente il debug di questo?

Risposte:


4

Concordo sul fatto che potrebbe essere correlato all'allineamento delle strisce. Dalla mia esperienza, la creazione di XFS non allineati su RAID * 0 da 3 TB richiede circa 5 minuti, ma se è allineata alle dimensioni dello striping è di circa 10-15 secondi. Ecco un comando per allineare XFS a 256 KB di dimensioni di striping:

mkfs.xfs -l internal,lazy-count=1,sunit=512 -d agsize=64g,sunit=512,swidth=1536 -b size=4096 /dev/vg10/lv00

A proposito, la larghezza della striscia nel mio caso è di 3 unità, che sarà la stessa per te con 4 unità ma in raid-5.

Ovviamente, questo migliora anche le prestazioni di FS, quindi è meglio tenerlo allineato.


Ciao, questo non ha fatto alcuna differenza, ho provato: time mkfs.xfs -l sunit=128 -d agsize=64g,sunit=128,swidth=512 -b size=4096 /dev/md0 -fche ha richiesto all'incirca lo stesso tempo di mkfs senza parametri
Elmar Weber

Sto eseguendo Bonnie ++, quindi vedi se fa differenza nelle prestazioni durante il funzionamento. btw: c'è qualche ragione per il parametro agsize? Ho letto la pagina man ma non ho potuto dedurre il vantaggio di impostarla su un valore.
Elmar Weber,

(a proposito: sopra il comando era sbagliato, la larghezza corretta era 384)
Elmar Weber

Non ho avuto alcun aumento delle prestazioni su mkfs, ma le prestazioni complessive misurate con bonnie ++ sono molto migliori: le operazioni di creazione / eliminazione dei file sono circa 4 volte migliori rispetto a prima e la velocità di scrittura sequenziale di circa il 15%. Molte grazie.
Elmar Weber,

2
agsize non è davvero necessario qui - mkfs lo calcolerà automaticamente (dividendo la dimensione del volume per numero di CPU logiche). È rimasto dalla mia configurazione: ho creato questo volume con alcune aspettative per future modifiche alla configurazione.
dtoubelis,

6

Ho il sospetto che stai riscontrando il tipico problema di scrittura piccola RAID5. Per le scritture al di sotto delle dimensioni di una striscia, è necessario eseguire una lettura-modifica-scrittura sia per i dati che per la parità. Se la scrittura ha le stesse dimensioni della striscia, può semplicemente sovrascrivere la parità, poiché sa qual è il valore e non deve ricalcolarlo.


Avrebbe senso, lo vedo correttamente ?: Secondo l'output di mkfs.ext3 scrive circa 25 tabelle di inode al secondo, suppongo che durante la creazione iniziale siano più piccole di 64k, quindi viene scritta una striscia 64k. Ciò significherebbe una scrittura di 16k su ciascun disco, quindi insieme 25 scritture casuali di 16k al secondo, con una dimensione del settore di 4kb, ciò significa 100 operazioni di I / o casuali al secondo, che è ciò che ha mostrato Bonnie ++.
Elmar Weber,

Corrisponde al risultato di bonnie ++ sull'effettivo raid, 335 MB di lettura e 310 MB di scrittura, tuttavia la creazione e l'eliminazione di file sono solo 1/4 delle prestazioni del singolo disco.
Elmar Weber,

3

Il tuo mkfs e le successive prestazioni del filesystem potrebbero migliorare se specifichi la larghezza del passo e della striscia durante la creazione del filesystem. Se si utilizzano i blocchi 4k predefiniti, il passo è 16 (striscia RAID di 64k divisa per blocco del filesystem di 4k) e la larghezza della striscia è 48 (falcata del file system di 16 moltiplicata per i 3 dischi di dati nell'array).

mkfs.ext3 -E stride=16 stripe-width=48 /dev/your_raid_device
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.