FAST VP in storage Unity: come funziona

Oggi parleremo di una tecnologia interessante implementata nell'SSD Unity/Unity XT, chiamata FAST VP. Se hai sentito parlare di Unity per la prima volta, puoi trovare un link alla fine dell'articolo per consultare le caratteristiche del sistema. Nella squadra di progetto di Dell EMC ho lavorato su FAST VP per oltre un anno. Oggi voglio approfondire questa tecnologia e svelare alcuni dettagli della sua implementazione. Naturalmente, solo quelli che possono essere condivisi. Se sei interessato a questioni relative all'archiviazione efficace dei dati o semplicemente non hai ancora compreso bene la documentazione, questo articolo sarà sicuramente utile e interessante.

FAST VP in storage Unity: come funziona

Prima di tutto, dirò cosa non verrà trattato nel materiale. Non ci sarà ricerca di concorrenti e nessun confronto con loro. Non ho intenzione di parlare di tecnologie simili open source, perché il lettore curioso lo sa già. E, naturalmente, non ho intenzione di fare pubblicità.

Tiering dello storage. Obiettivi e compiti di FAST VP

FAST VP sta per Fully Automated Storage Tiering for Virtual Pool. Difficile? Non preoccuparti, ora lo affronteremo. Il tiering è un modo di organizzare l'archiviazione dei dati, in cui ci sono diversi livelli (tiers) in cui questi dati possono essere memorizzati. Ognuno ha le proprie caratteristiche. Le più importanti sono: prestazioni, volume e costo di archiviazione per unità di informazione. Naturalmente, c'è una relazione tra di essi.

Un'importante caratteristica del tiering è che l'accesso ai dati è uniforme, indipendentemente dal livello di archiviazione in cui si trovano al momento, mentre la dimensione del pool è pari alla somma delle dimensioni delle risorse che lo compongono. Qui si nascondono le differenze rispetto alla cache: la dimensione della cache non si aggiunge al volume complessivo della risorsa (del pool in questo caso), e i dati della cache duplicano un frammento di dati del supporto principale (o lo duplicheranno, se i dati della cache non sono ancora stati scritti). Inoltre, la distribuzione dei dati tra i livelli è nascosta all'utente. Cioè, egli non vede quali dati si trovano su ogni livello, anche se può influenzare questo in modo indiretto, impostando politiche (di cui parlerò più avanti).

Adesso diamo un'occhiata alle caratteristiche dell'implementazione del tiering dello storage in Unity. Nel sistema Unity ci sono 3 livelli, o tiers:

  • Estrema prestazione (SSDs)
  • Prestazioni (SAS HDD 10k/15k RPM)
  • Capacità (NL-SAS HDD 7200 RPM)

Sono presentati in ordine decrescente di prestazioni e prezzo. Nella Extreme performance sono inclusi esclusivamente i dispositivi a stato solido (SSD). Negli altri due tier ci sono i dispositivi a disco magnetico, che si differenziano per velocità di rotazione e, di conseguenza, prestazioni.

I supporti informatici di un livello e di una dimensione vengono uniti in un array RAID, formando un gruppo RAID (RAID group, abbreviato in RG); per i livelli RAID disponibili e consigliati è possibile fare riferimento alla documentazione ufficiale. Da gruppi RAID di uno o più livelli vengono formati pool di archiviazione dati (Storage pool), da cui viene poi distribuito lo spazio libero. E già dal pool viene allocato spazio per i file system e i LUN.

FAST VP in storage Unity: come funziona

A cosa mi serve il Tiering?

In breve e in modo astratto: per ottenere un risultato migliore usando il minimo delle risorse. Se andiamo più nel concreto, per risultato di solito si intende un insieme di caratteristiche delle SCSI – velocità e tempo di accesso, costo di archiviazione e altro. Per minimo delle risorse si intendono i minimi costi: economici, energetici e così via. FAST VP implementa esattamente i meccanismi di ridistribuzione dei dati tra i vari livelli negli SCSI Unity/Unity XT. Se mi credi, puoi saltare il paragrafo successivo. Per gli altri, spiegherò un po' più nel dettaglio.

Una corretta distribuzione dei dati tra i livelli di archiviazione consente di risparmiare sui costi complessivi delle SCSI, sacrificando la velocità di accesso a informazioni poco utilizzate, e di aumentare le prestazioni, spostando i dati spesso utilizzati su supporti più veloci. Qui qualcuno potrebbe obiettare che anche senza tiering un buon amministratore sa dove posizionare i dati, quali caratteristiche delle SCSI siano desiderabili per il suo compito e così via. Certamente, è così, ma la distribuzione dei dati 'manuale' ha i suoi svantaggi:

  • richiede tempo e attenzione da parte dell'amministratore;
  • non sempre è possibile 'ristrutturare' le risorse delle SCSI in base a condizioni mutate;
  • scompare un importante vantaggio: l'accesso unificato alle risorse situate a diversi livelli di archiviazione.

Per far sì che gli amministratori di storage si preoccupino meno della sicurezza del lavoro, aggiungo che è necessaria una pianificazione delle risorse adeguata. Ora che le attività di tiering sono state brevemente delineate, vediamo cosa ci si può aspettare da FAST VP. È il momento di tornare alla definizione. Le prime due parole – Fully Automated – si traducono letteralmente come "completamente automatizzato" e significano che la distribuzione tra i livelli avviene automaticamente. E Virtual Pool è un pool di dati che comprende risorse provenienti da diversi livelli di archiviazione. Ecco come si presenta:

FAST VP in storage Unity: come funziona

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

Attività gestite da FAST VP

Iniziamo a parlare in modo astratto. Abbiamo un pool e un certo meccanismo che può ridistribuire i dati all'interno di questo pool. Ricordando che il nostro obiettivo è raggiungere le massime prestazioni, dobbiamo chiederci: quali modi ci sono per raggiungerle? Ce ne possono essere diversi, e FAST VP ha molto da offrire all'utente, poiché la tecnologia rappresenta qualcosa di più della semplice distribuzione nello storage. Ecco come 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 analizzare come queste attività vengono gestite, dobbiamo conoscere alcuni fatti necessari sul funzionamento di FAST VP. FAST VP opera con blocchi di dimensione specifica – 256 megabyte. Questo è il 'pezzo' continuo minimo di dati che può essere spostato. Nella documentazione viene definito così: slice. Dal punto di vista di FAST VP, tutti i gruppi RAID sono costituiti da un insieme di questi "pezzi". Pertanto, tutte le statistiche di input-output vengono accumulate per questi blocchi di dati. Perché è stata scelta proprio questa dimensione del blocco e sarà ridotta? Il blocco è abbastanza grande, ma è un compromesso tra la granularità dei dati (dimensione del blocco più piccola – distribuzione più precisa) e le risorse computazionali disponibili: data la presenza di vincoli rigorosi sulla memoria e il gran numero di blocchi, i dati delle statistiche potrebbero occupare troppo spazio e il numero di calcoli aumenterebbe proporzionalmente.

Come FAST VP posiziona i dati nel pool. Politiche

Per gestire la collocazione dei dati in un pool con FAST VP attivato, esistono le seguenti politiche:

  • Livello Massimo Disponibile
  • Auto-Tier
  • Inizio Alto poi Auto-Tier (predefinito)
  • Livello Minimo Disponibile

Queste politiche influenzano sia la collocazione iniziale del blocco (quando i dati vengono scritti per la prima volta) che la successiva ridistribuzione. Una volta che i dati sono collocati sui dischi, la ridistribuzione sarà avviata secondo un programma o manualmente.

Il Livello Massimo Disponibile cerca di collocare un nuovo blocco al livello più performante. In caso di mancanza di spazio su di esso, si passa al successivo per prestazioni, ma poi i dati possono essere spostati a un livello più performante (se c'è spazio o sostituendo altri dati). L'Auto-Tier colloca nuovi dati su diversi livelli a seconda della dimensione dello spazio disponibile, e vengono ridistribuiti in base alla domanda e allo spazio libero. Inizio Alto poi Auto-Tier è la politica predefinita e anche raccomandata. Durante la collocazione iniziale funziona come il Livello Massimo Disponibile, e successivamente avviene lo spostamento dei dati in base alle loro statistiche di utilizzo. La politica del Livello Minimo Disponibile cerca di collocare i dati al livello meno performante.

Il trasferimento dei dati avviene con priorità bassa per non disturbare il corretto funzionamento dello storage, tuttavia esiste un'impostazione "Data relocation rate" che modifica la priorità. Qui c'è una particolarità: non tutti i blocchi di dati hanno la stessa priorità di ridistribuzione. Ad esempio, i blocchi contrassegnati come metadati saranno spostati a un livello più veloce per primi. I metadati sono, per così dire, "dati sui dati", ulteriori informazioni che non sono dati utente ma ne descrivono il contenuto. Ad esempio, informazioni nel file system su quale blocco contiene un determinato file. Pertanto, la velocità di accesso ai dati dipende dalla velocità di accesso ai metadati. Considerando che i metadati sono solitamente molto più piccoli, ci si aspetta un maggiore guadagno dal loro trasferimento su dischi più performanti.

I criteri che Fast VP utilizza nel suo funzionamento

Il criterio principale per ogni blocco, se semplificato, è la caratteristica di "richiesta" dei dati, che dipende dal numero di operazioni di lettura e scrittura di un frammento di dati. Questa caratteristica viene chiamata "Temperatura". Ci sono dati richiesti (hot) che sono "più caldi" di quelli non richiesti. Viene calcolata periodicamente, di default con un intervallo di un'ora.

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

  • In assenza di input/output, i dati nel tempo "si raffreddano".
  • Con un carico sostanzialmente omogeneo nel tempo, la temperatura inizialmente aumenta e poi si stabilizza in un determinato intervallo.

Successivamente, vengono considerate le politiche sopra descritte e lo spazio libero su ogni tier. Per chiarezza, mostrerò un'immagine dalla documentazione. Qui i blocchi con alta, media e bassa temperatura sono contrassegnati rispettivamente in rosso, giallo e blu.

FAST VP in storage Unity: come funziona

Ma torniamo ai compiti. Quindi, si può iniziare a esaminare cosa viene fatto per risolvere i problemi di FAST VP.

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

In effetti, questo è l'obiettivo principale di FAST VP. Gli altri, in un certo senso, sono derivati da esso. A seconda della politica scelta, i dati verranno distribuiti su diversi livelli di archiviazione. Prima di tutto, viene considerata la politica di posizionamento, poi la temperatura dei blocchi e la dimensione/velocità dei gruppi RAID.

Per le politiche Highest/Lowest Available Tier è tutto abbastanza semplice. Per le altre due, la situazione è così. I dati vengono distribuiti su diversi livelli tenendo conto della dimensione e delle prestazioni dei gruppi RAID, in modo che il rapporto totale della "temperatura" dei blocchi rispetto alla "massima prestazione teorica" di ogni gruppo RAID sia più o meno lo stesso. In questo modo, il carico viene distribuito in modo relativamente uniforme. Dati più richiesti vengono spostati su supporti veloci, quelli usati raramente su supporti più lenti. Idealmente, la distribuzione dovrebbe risultare più o meno così:

FAST VP in storage Unity: come funziona

B. Distribuzione dei dati tra dischi dello stesso tipo

Ricordate, all'inizio ho scritto che i supporti informatici da uno o più I livelli si uniscono in un unico pool? Nel caso di un unico livello per FAST VP c'è comunque lavoro. Affinché le prestazioni di un livello siano massime, è consigliabile distribuire i dati uniformemente tra i dischi. Questo permetterà (in teoria) di ottenere il massimo numero di IOPS. I dati all'interno di un gruppo RAID possono essere considerati distribuiti uniformemente tra i dischi, mentre tra i gruppi RAID non è sempre così. In caso di squilibrio, FAST VP sposterà i dati tra i gruppi RAID in proporzione al loro volume e alla "performance condizionata" (in forma numerica). Per chiarezza, mostro lo schema di riequilibrio tra tre gruppi RAID:

FAST VP in storage Unity: come funziona

B. Distribuzione dei dati durante l'espansione del pool

Questo compito è un caso particolare del precedente e viene eseguito quando si aggiunge un gruppo RAID al pool. Affinché il gruppo RAID appena aggiunto non rimanga inattivo, parte dei dati verrà trasferita su di esso, il che significa che anche il carico su tutti i gruppi RAID verrà ridistribuito.

Bilanciamento dell'usura degli SSD

Attraverso il bilanciamento dell'usura, FAST VP può prolungare la vita degli SSD, anche se questa funzione non si riferisce direttamente a Storage Tiering. Poiché sono già disponibili dati sulla temperatura e il numero di operazioni di scrittura viene considerato, siamo in grado di spostare i blocchi di dati, quindi sarebbe logico per FAST VP affrontare anche questo compito.

Nel caso in cui il numero di scritture in un gruppo RAID superi significativamente quello in un altro, FAST VP ridistribuirà i dati in base al numero di operazioni di scrittura. Da un lato, questo allevia il carico e preserva le risorse di alcuni dischi, dall'altro, aggiunge "lavoro" per quelli meno utilizzati, aumentando la prestazione complessiva.

In questo modo, FAST VP si assume i compiti tradizionali dello Storage Tiering e fa anche qualcosa in più. Tutto ciò consente di memorizzare i dati in modo sufficientemente efficace nei sistemi di archiviazione della famiglia Unity.

Alcuni consigli

  1. Non trascurare la lettura della documentazione. Ci sono best practices, e funzionano piuttosto bene. Se seguite, di solito non si verificano problemi seri. Gli altri consigli in gran parte ripetono o integrano questi.
  2. Se hai configurato e attivato FAST VP, è meglio tenerlo attivo. Lascia che distribuisca i dati nel suo tempo e lentamente, piuttosto che farlo una volta all'anno e influenzare pesantemente le prestazioni di altre attività. In questi casi, la ridistribuzione dei dati può richiedere molto tempo.
  3. Fai attenzione nella scelta della finestra di rilocazione. Anche se è ovvio, cerca di scegliere un momento con il minor carico su Unity e riserva un intervallo di tempo adeguato.
  4. Pianifica l'espansione dello storage, fallo in tempo. Questa è una raccomandazione generale, valida anche per FAST VP. Se la quantità di spazio libero è molto ridotta, anche il trasferimento dei dati rallenterà o diventerà impossibile. Soprattutto se hai trascurato il punto 2.
  5. Espandendo il pool con FAST VP attivo, non dovresti iniziare dai dischi più lenti. Cioè o aggiungi subito tutti i gruppi RAID programmati, oppure inizia ad aggiungere i dischi più veloci. In questo caso, la ridistribuzione dei dati sui nuovi dischi 'veloci' aumenterà la velocità complessiva del pool. Altrimenti, iniziando dai dischi 'lenti', potresti trovarti in una situazione molto sgradevole. Prima si verificherà il trasferimento dei dati sui nuovi dischi, relativamente lenti, e poi, con l'aggiunta di quelli più veloci, si ribalterà la direzione. Ci sono sfumature legate alle diverse politiche FAST VP, ma in generale una situazione simile è possibile.

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

FAST VP in storage Unity: come funziona

In conclusione del materiale, condivido alcuni link utili:

Conclusione

Voglio scrivere molto, ma capisco che non tutti i dettagli saranno interessanti per il lettore. Ad esempio, si potrebbe approfondire i criteri secondo cui FAST VP decide di trasferire i dati, o i processi di analisi delle statistiche di input-output. Inoltre, non è stata affatto toccata la questione dell'interazione con Dynamic Pools, il che richiederebbe un articolo a parte. Si potrebbe persino fantasticare sullo sviluppo di questa tecnologia. Spero che non sia stato noioso e che non ti abbia stancato. A presto!

Fonte: habr.com

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster