LUSTRE
Uno dei principali fattori che determinano le elevate prestazioni dei file system Lustre è la capacità di eseguire lo stripe dei dati su più target di archiviazione (OST) in modo round-robin. In pratica, i file possono essere suddivisi in più parti che verranno poi memorizzate su diversi OST all'interno del sistema Lustre.
Qualsiasi file è solo una sequenza lineare di byte. La visione logica di un file, diviso in segmenti, può apparire come la seguente:
Nella vista fisica, i cinque segmenti possono essere distribuiti su quattro OST:
Lo striping offre due vantaggi: 1) un aumento della larghezza di banda perché più processi possono accedere contemporaneamente allo stesso file e 2) la possibilità di archiviare file di grandi dimensioni che occuperebbero più spazio di un singolo OST. Tuttavia, lo striping non è privo di svantaggi: 1) aumento del sovraccarico dovuto alle operazioni di rete e alla contesa con i server e 2) aumento del rischio di danneggiamento dei file dovuto a malfunzionamenti dell'hardware. Gli utenti hanno la possibilità di configurare la dimensione e il numero di strisce utilizzate per qualsiasi file.
Le impostazioni predefinite di stripe variano da macchina a macchina, ma il numero di stripe è generalmente impostato su 1 o 2 e la dimensione di stripe è generalmente di 1 MB. Per determinare le configurazioni di stripe per un file o una directory usare il comando lfs getstripe :
> lfs getstripe movie.mov movie.mov lmm_stripe_count: 4 lmm_stripe_size: 1048576 lmm_stripe_offset: 186 obdidx objid objid group 186 52153455 0x31bcc6f 0 258 53124880 0x32a9f10 0 25 52477227 0x320bd2b 0 97 52444876 0x3203ecc 0
In questo esempio, il file movie.mov è stato sottoposto a striping su 4 OST con una dimensione di stripe di 1 MB. I numeri obdidx elencati sono gli indici degli OST utilizzati per lo striping di questo file. L'uso di getstripe su una directory fornisce informazioni sulla directory e sui file in essa contenuti. È possibile limitare getstripe per mostrare solo le informazioni sulla directory usando l'opzione -d . In alternativa, si può usare l'opzione -r per seguire ricorsivamente tutte le sottodirectory.
I file di grandi dimensioni traggono vantaggio da un numero di stripe più elevato. Effettuando lo striping di un file di grandi dimensioni su molti OST, si aumenta la larghezza di banda per l'accesso al file e si può trarre vantaggio dal fatto che molti processi operano contemporaneamente su un singolo file. Al contrario, un file di grandi dimensioni che viene eseguito in striping solo su uno o due OST può degradare le prestazioni dell'intero sistema Lustre riempiendo inutilmente gli OST. Una buona pratica è quella di avere delle directory dedicate con un elevato numero di stripe in cui scrivere file molto grandi.
Un altro scenario da evitare è quello di avere file piccoli con un numero di stripe elevato. Questo può essere dannoso per le prestazioni a causa dell'inutile overhead di comunicazione con più OST. Una buona pratica consiste nell'assicurarsi che i file di piccole dimensioni vengano scritti in una directory con un conteggio di stripe pari a 1, ovvero senza striping.
Il comando lfs setstripe è usato per dettare una particolare configurazione di striping per un file o una directory. Per un file, setstripe:
Utilizzando setstripe su una directory:
Nota: Una volta che un file è stato scritto su Lustre con una particolare configurazione di stripe, non è possibile usare semplicemente setstripe per cambiarla. Il file deve essere riscritto con una nuova configurazione. In generale, se è necessario modificare lo striping di un file, si può fare una delle due cose:
Le opzioni per lfs setstripe sono:
> lfs setstripe -c 50 -s 32m bigdir
Per maggiori informazioni dettagliate e benchmark di I/O consultare qui.
• LINK UTILI: