FAST VP nello storage Unity: come funziona

Oggi parleremo di un'interessante tecnologia implementata nei sistemi di storage Unity/Unity XT: FAST VP. Se è la prima volta che senti parlare di Unity, puoi verificare le caratteristiche del sistema utilizzando il collegamento alla fine dell'articolo. Ho lavorato su FAST VP nel team di progetto Dell EMC per oltre un anno. Oggi voglio parlare di questa tecnologia in modo più dettagliato e svelare alcuni dettagli della sua implementazione. Naturalmente solo quelli che possono essere rivelati. Se sei interessato a questioni relative all'archiviazione efficiente dei dati o semplicemente non hai compreso appieno la documentazione, questo articolo ti sarà sicuramente utile e interessante.

FAST VP nello storage Unity: come funziona

Ti dirò subito cosa non sarà nel materiale. Non ci sarà ricerca di concorrenti e confronto con loro. Inoltre non ho intenzione di parlare di tecnologie simili dell'open source, perché il lettore curioso le conosce già. E, ovviamente, non pubblicizzerò nulla.

Suddivisione dello storage. Scopi e obiettivi di FAST VP

FAST VP sta per Fully Automated Storage Tiering for Virtual Pool. Un po 'difficile? Nessun problema, lo scopriremo adesso. Il tiering è un modo di organizzare l'archiviazione dei dati in cui esistono diversi livelli (livelli) in cui questi dati vengono archiviati. Ognuno ha le sue caratteristiche. I più importanti: prestazioni, volume e prezzo di archiviazione di un'unità di informazioni. Naturalmente, c'è una relazione tra loro.

Una caratteristica importante del tiering è che l'accesso ai dati viene fornito in modo uniforme indipendentemente dal livello di archiviazione in cui si trova attualmente e la dimensione del pool è pari alla somma delle dimensioni delle risorse in esso incluse. È qui che risiedono le differenze rispetto alla cache: la dimensione della cache non viene aggiunta al volume totale della risorsa (pool in questo caso) e i dati della cache duplicano alcuni frammenti dei dati multimediali principali (o si duplicheranno se il i dati dalla cache non sono ancora stati scritti). Inoltre, la distribuzione dei dati per livelli è nascosta all'utente. Cioè, non vede esattamente quali dati si trovano a ciascun livello, sebbene possa influenzarli indirettamente impostando politiche (ne parleremo più avanti).

Consideriamo ora le funzionalità dell'implementazione del tiering dello storage in Unity. Unity ha 3 livelli, o livelli:

  • Prestazioni estreme (SSD)
  • Prestazioni (HDD SAS 10/15 giri/min)
  • Capacità (HDD NL-SAS 7200 giri/min)

Sono presentati in ordine decrescente di prestazioni e prezzo. Le prestazioni estreme includono solo unità a stato solido (SSD). Gli altri due livelli includono unità disco magnetiche, che differiscono per velocità di rotazione e, di conseguenza, prestazioni.

I supporti di memorizzazione dello stesso livello e della stessa dimensione vengono combinati in un array RAID, formando un gruppo RAID (gruppo RAID, abbreviato in RG); Puoi leggere i livelli RAID disponibili e consigliati nella documentazione ufficiale. Gli storage pool sono formati da gruppi RAID di uno o più livelli, dai quali viene poi distribuito lo spazio libero. E dal pool viene allocato spazio per file system e LUN.

FAST VP nello storage Unity: come funziona

Perché ho bisogno del Tiering?

In breve e in astratto: ottenere maggiori risultati utilizzando il minimo delle risorse. Più specificamente, il risultato è solitamente inteso come un insieme di caratteristiche del sistema di storage: velocità e tempo di accesso, costo di storage e altro. Il minimo di risorse significa la minima spesa: denaro, energia e così via. FAST VP implementa meccanismi per ridistribuire i dati su diversi livelli nei sistemi di storage Unity/Unity XT. Se mi credi, puoi saltare il paragrafo successivo. Per il resto vi dirò qualcosa in più.

La corretta distribuzione dei dati tra livelli di storage consente di risparmiare sul costo complessivo dello storage sacrificando la velocità di accesso ad alcune informazioni utilizzate raramente e di migliorare le prestazioni spostando i dati utilizzati di frequente su supporti più veloci. Qui qualcuno potrebbe obiettare che anche senza tiering, un normale amministratore sa dove posizionare quali dati, quali sono le caratteristiche desiderabili di un sistema di archiviazione per il suo compito, ecc. Questo è senza dubbio vero, ma la distribuzione manuale dei dati presenta i suoi svantaggi:

  • richiede tempo e attenzione da parte dell'amministratore;
  • Non è sempre possibile “ridisegnare” le risorse di stoccaggio per adattarle alle mutevoli condizioni;
  • scompare un vantaggio importante: l'accesso unificato alle risorse situate a diversi livelli di archiviazione.

Per fare in modo che gli amministratori dello storage si preoccupino meno della sicurezza del lavoro, aggiungerò che anche in questo caso è necessaria una pianificazione competente delle risorse. Ora che i compiti del tiering sono stati brevemente delineati, diamo un'occhiata a cosa puoi aspettarti da FAST VP. Ora è il momento di tornare alla definizione. Le prime due parole – Fully Automated – sono tradotte letteralmente come “completamente automatizzato” e significano che la distribuzione tra i livelli avviene automaticamente. Bene, il pool virtuale è un pool di dati che include risorse provenienti da diversi livelli di archiviazione. Ecco come appare:

FAST VP nello storage Unity: come funziona

Guardando al futuro, dirò che FAST VP sposta i dati solo all'interno di un pool e non tra più pool.

Problemi risolti da FAST VP

Parliamo prima in astratto. Abbiamo un pool e alcuni meccanismi in grado di ridistribuire i dati all'interno di questo pool. Ricordando che il nostro obiettivo è raggiungere la massima produttività, chiediamoci: in quali modi possiamo raggiungerlo? Potrebbero essercene diversi e in questo FAST VP ha qualcosa da offrire all'utente, poiché la tecnologia è qualcosa di più del semplice tiering dello storage. Ecco alcuni modi in cui FAST VP può aumentare le prestazioni del pool:

  • Distribuzione dei dati su diversi tipi di dischi, livelli
  • Distribuzione dei dati tra dischi dello stesso tipo
  • Distribuzione dei dati durante l'espansione del pool

Prima di esaminare come vengono risolti questi compiti, dobbiamo conoscere alcuni fatti necessari su come funziona FAST VP. FAST VP funziona con blocchi di una certa dimensione: 256 megabyte. Questo è il più piccolo "pezzo" contiguo di dati che può essere spostato. Nella documentazione lo chiamano così: slice. Dal punto di vista di FAST VP, tutti i gruppi RAID sono costituiti da un insieme di tali “pezzi”. Di conseguenza, per tali blocchi di dati vengono accumulate tutte le statistiche I/O. Perché è stata scelta questa dimensione del blocco e verrà ridotta? Il blocco è piuttosto grande, ma si tratta di un compromesso tra la granularità dei dati (dimensioni del blocco più piccole significano una distribuzione più accurata) e le risorse di calcolo disponibili: date le rigide limitazioni esistenti sulla RAM e un numero elevato di blocchi, i dati statistici potrebbero occupare troppo e il numero di calcoli aumenterà proporzionalmente.

Modalità di allocazione dei dati da parte di FAST VP nel pool. Politici

Per controllare il posizionamento dei dati in un pool con FAST VP abilitato, esistono le seguenti policy:

  • Livello più alto disponibile
  • Livello automatico
  • Inizia da alto, poi livello automatico (impostazione predefinita)
  • Livello più basso disponibile

Influiscono sia sull'allocazione iniziale dei blocchi (i dati scritti per primi) che sulla successiva riallocazione. Quando i dati sono già posizionati sui dischi, la ridistribuzione verrà avviata secondo una pianificazione o manualmente.

Il livello più alto disponibile tenta di posizionare un nuovo blocco al livello con le prestazioni più elevate. Se non c'è abbastanza spazio, viene posizionato al livello successivo più produttivo, ma poi i dati possono essere spostati a un livello più produttivo (se c'è spazio o spostando altri dati). Il livello automatico inserisce i nuovi dati a livelli diversi a seconda della quantità di spazio disponibile e vengono ridistribuiti in base alla domanda e allo spazio libero. Inizia in alto, quindi il livello automatico è la politica predefinita ed è anche consigliata. Quando inizialmente posizionato, funziona come il livello più alto disponibile, quindi i dati vengono spostati in base alle statistiche di utilizzo. La policy del livello più basso disponibile mira a collocare i dati nel livello meno produttivo.

Il trasferimento dei dati avviene con una priorità bassa per non interferire con il funzionamento utile del sistema di archiviazione, tuttavia esiste un'impostazione "Velocità di trasferimento dati" che modifica la priorità. Qui c'è una particolarità: non tutti i blocchi di dati hanno lo stesso ordine di ridistribuzione. Ad esempio, i blocchi contrassegnati come metadati verranno prima spostati a un livello più veloce. I metadati sono, per così dire, "dati sui dati", alcune informazioni aggiuntive che non sono dati dell'utente, ma ne memorizzano la descrizione. Ad esempio, informazioni nel file system relative al blocco in cui si trova un determinato file. Ciò significa che la velocità di accesso ai dati dipende dalla velocità di accesso ai metadati. Dato che i metadati sono in genere di dimensioni molto più ridotte, si prevede che i vantaggi derivanti dallo spostamento su dischi con prestazioni più elevate saranno maggiori.

Criteri che Fast VP utilizza nel suo lavoro

Il criterio principale per ciascun blocco, in modo molto approssimativo, è la caratteristica della “domanda” dei dati, che dipende dal numero di operazioni di lettura e scrittura di un frammento di dati. Chiamiamo questa caratteristica “Temperatura”. Esistono dati richiesti (caldi) che sono “più caldi” dei dati non rivendicati. Viene calcolato periodicamente, per impostazione predefinita a intervalli di un'ora.

La funzione di calcolo della temperatura ha le seguenti proprietà:

  • In assenza di I/O, i dati si “raffreddano” nel tempo.
  • Con un carico più o meno uguale nel tempo, la temperatura prima aumenta e poi si stabilizza in un certo intervallo.

Successivamente, vengono prese in considerazione le politiche sopra descritte e lo spazio libero a ciascun livello. Per chiarezza, fornirò un'immagine dalla documentazione. Qui i colori rosso, giallo e blu indicano rispettivamente blocchi con temperature alte, medie e basse.

FAST VP nello storage Unity: come funziona

Ma torniamo ai compiti. Quindi, possiamo iniziare ad analizzare cosa si sta facendo per risolvere i problemi FAST VP.

A. Distribuzione dei dati su diversi tipi di dischi e livelli

In realtà, questo è il compito principale di FAST VP. Il resto, in un certo senso, ne è derivato. A seconda della policy selezionata, i dati verranno distribuiti su diversi livelli di archiviazione. Innanzitutto viene presa in considerazione la politica di posizionamento, poi la temperatura del blocco e la dimensione/velocità dei gruppi RAID.

Per le polizze del livello massimo/minimo disponibile tutto è abbastanza semplice. Per gli altri due è così. I dati sono distribuiti su diversi livelli tenendo conto delle dimensioni e delle prestazioni dei gruppi RAID: in modo che il rapporto tra la "temperatura" totale dei blocchi e le "prestazioni massime condizionate" di ciascun gruppo RAID sia approssimativamente lo stesso. Pertanto, il carico è distribuito più o meno uniformemente. I dati più richiesti vengono spostati su supporti veloci, mentre i dati utilizzati raramente vengono spostati su supporti più lenti. Idealmente, la distribuzione dovrebbe assomigliare a questa:

FAST VP nello storage Unity: come funziona

B. Distribuzione dei dati tra dischi dello stesso tipo

Ricorda, all'inizio ho scritto quel supporto di memorizzazione da uno o più i livelli sono combinati in un'unica piscina? Nel caso di un livello singolo, anche FAST VP ha del lavoro da fare. Per ottenere le massime prestazioni a qualsiasi livello, è consigliabile distribuire i dati in modo uniforme tra i dischi. Ciò (in teoria) ti consentirà di ottenere la quantità massima di IOPS. I dati all'interno di un gruppo RAID possono essere considerati distribuiti uniformemente tra i dischi, ma non è sempre così tra i gruppi RAID. In caso di squilibrio, FAST VP sposterà i dati tra i gruppi RAID in proporzione al loro volume e alla “prestazione condizionale” (in termini numerici). Per chiarezza, mostrerò uno schema di ribilanciamento tra tre gruppi RAID:

FAST VP nello storage Unity: come funziona

B. Distribuzione dei dati durante l'espansione del pool

Questa attività è un caso speciale della precedente e viene eseguita quando un gruppo RAID viene aggiunto al pool. Per garantire che il gruppo RAID appena aggiunto non rimanga inattivo, alcuni dati verranno trasferiti ad esso, il che significa che il carico verrà ridistribuito su tutti i gruppi RAID.

Livellamento dell'usura dell'SSD

Utilizzando il livellamento dell'usura, FAST VP può prolungare la durata di un SSD, sebbene questa funzionalità non sia direttamente correlata allo Storage Tiering. Poiché i dati sulla temperatura sono già disponibili, viene preso in considerazione anche il numero di operazioni di scrittura e sappiamo come spostare i blocchi di dati, sarebbe logico che FAST VP risolvesse questo problema.

Se il numero di voci in un gruppo RAID supera notevolmente il numero di voci in un altro, FAST VP ridistribuirà i dati in base al numero di operazioni di scrittura. Da un lato ciò alleggerisce il carico e salva la risorsa di alcuni dischi, dall'altro aggiunge “lavoro” per quelli meno caricati, aumentando le prestazioni complessive.

In questo modo, FAST VP affronta le sfide tradizionali dello storage tiering e fa qualcosa di più. Tutto ciò consente di archiviare i dati in modo abbastanza efficiente nel sistema di archiviazione Unity.

Alcuni consigli

  1. Non trascurare la lettura della documentazione. Esistono le migliori pratiche e funzionano abbastanza bene. Se li segui, di regola non sorgono problemi seri. Il resto dei consigli sostanzialmente li ripete o li integra.
  2. Se hai configurato e abilitato FAST VP, è meglio lasciarlo abilitato. Lascia che distribuisca i dati nel tempo assegnato e poco a poco più di una volta all'anno e con un impatto serio sull'esecuzione di altri compiti. In questi casi, la ridistribuzione dei dati potrebbe richiedere molto tempo.
  3. Fai attenzione quando scegli una finestra di trasferimento. Sebbene ciò sia ovvio, prova a scegliere un orario con il minor carico su Unity e assegna un periodo di tempo sufficiente.
  4. Pianifica l'espansione del tuo sistema di storage, fallo in tempo. Questa è una raccomandazione generale importante anche per FAST VP. Se la quantità di spazio libero è molto ridotta, lo spostamento dei dati rallenterà o diventerà impossibile. Soprattutto se hai trascurato il punto 2.
  5. Quando si espande un pool con FAST VP abilitato, non è necessario iniziare con i dischi più lenti. Cioè, aggiungiamo tutti i gruppi RAID pianificati contemporaneamente oppure aggiungiamo prima i dischi più veloci. In questo caso, la ridistribuzione dei dati su nuovi dischi “veloci” aumenterà la velocità complessiva del pool. Altrimenti, iniziare con dischi “lenti” può portare a una situazione molto spiacevole. Innanzitutto, i dati verranno trasferiti su dischi nuovi, relativamente lenti, quindi, quando ne verranno aggiunti di più veloci, nella direzione opposta. Ci sono sfumature legate alle diverse politiche FAST VP, ma in generale è possibile una situazione simile.

Se stai guardando questo prodotto, puoi provare Unity gratuitamente scaricando l'appliance virtuale Unity VSA.

FAST VP nello storage Unity: come funziona

Alla fine del materiale, condivido diversi link utili:

conclusione

Vorrei scrivere molto, ma capisco che non tutti i dettagli saranno interessanti per il lettore. Ad esempio, puoi parlare più in dettaglio dei criteri in base ai quali FAST VP prende decisioni sul trasferimento dei dati, sui processi di analisi delle statistiche I/O. Inoltre, il tema dell'interazione con Pool dinamici, e questo meriterebbe un articolo a parte. Puoi persino fantasticare sullo sviluppo di questa tecnologia. Spero di non essere stato noioso e di non avervi annoiato. Ci vediamo!

Fonte: habr.com

Aggiungi un commento