Nella virtualizzazione dei server lo storage è un fattore fondamentale per una buona programmazione. Archiviazione singnifica ragionare di economia, ottimizzando tutti gli aspetti di quel software defined data center, che presuppone comunque una parte fisica. A partire dalle singole componenti di sistemi come, ad esempio, la memoria flash degli storage. È proprio dalla memoria flash che si può partire per razionalizzare le risorse e ottenere prestazioni maggiori dal data center virtualizzato.
Il problema della latenza
Chi si occupa di progettazione e sviluppo di componenti e sistemi sa bene che il tempo necessario per leggere e scrivere le informazioni introduce una latenza che rallenta le prestazioni dei processi.
Le tecniche di caching, ovvero di gestione della memoria, aiutano a superare queste latenze andando a memorizzare con un delta temporale più frequente i dati, velocizzando così la memoria di supporto alle applicazioni.
L’ottimizzazione della cache è una strategia molto frequente su diverse aree critiche del server: processori, unità a disco magnetiche ma anche dispositivi di rete.
Oggi la crescente proliferazione dei dispositivi di storage allo stato solido (Solid-State Storage – SSS) ha permesso di ottenere un nuovo livello ad alte prestazioni e un’archiviazione a bassa latenza, che risulta ideale per la memorizzazione dei contenuti nella cache di una macchina virtuale (VM). Esaminiamo questa nuova generazione di cache di flash e il suo utilizzo sui server virtualizzati.
Perché la memoria flash può ottimizzare l’uso di una macchina virtuale
La gestione della memoria Flash è una tecnologia di gestione dello storage che raggruppa i dispositivi di archiviazione flash locali come, ad esempio, le Serial Advanced Technology Attachment (SATA), le unità a stato solido (SSD) o le Peripheral Component Interconnect Express (PCIe) I/O Accelerator, come risorse di memorizzazione che possono essere allocate dalla macchina virtuale sul server. VMware vSphere chiama questa tecnologia Flash Read Cache (vFRC). Altri produttori forniscono questa funzionalità a partire dai moduli hardware, come ad esempio i prodotti di NetApp Flash Cache e Flash Cache 2.
In poche parole, uno strato di memoria flash virtualizzato offre una cache di lettura per le macchine virtuali.
Memorizzando i dati che sono più frequentemente richiesti in una cache di lettura locale, le macchine virtuali possono aumentare le loro prestazioni abbassando il traffico di rete, in quanto i contenuti richiesti sono già disponibile localmente (in una cache primaria).
I vantaggi? Una latenza più bassa, che accelera le performance delle applicazioni, e carichi di lavoro più fluidi e veloci. Se i dati necessari non sono nella cache (cache vuota), invece, la macchina virtuale attinge ai dati dalla Storage Area Network (SAN) o della Network Attached Storage (NAS), come succede normalmente (vedi le differenze fra le architetture SAN e NAS).
A seconda delle applicazioni, la cache diventa una variabile
È importante notare che ogni applicazione utilizza la cache in modo differente e, di conseguenza, anche i benefici sono differenti.
Carichi di lavoro che richiedono una lettura intensiva dei dati e che, generalmente, utilizzano gli stessi dati per tutto il processo spesso ottengono maggiori benefici dalla cache di lettura. A questa tipologia di workload si può assegnare una prioritizzazione, attraverso una configurazione che prevede una quantità maggiore di cache di lettura, rispetto ad altri carichi di lavoro meno importanti.
vFRC di VMware, per esempio, utilizza anche un tipo di cache che effettua la trascrizione in corso d’opera: in questo caso la fase di scrittura del dato nel sistema di sotrage viene completata prima ancora di essere riconosciuta dall’applicazione. Questo, per altro, impedisce la perdita di dati in caso di mancanza di corrente o un qualsiasi altro guasto del sistema.
Componenti come vFRC consentono agli amministratori di configurare la quantità di cache e la dimensione dei blocchi di memoria per ogni singola macchina virtuale.
Ad esempio, gli storage manager possono configurare una cache con una quantità di memoria flash che contenga l’intero set di contenuti di lettura per una carico di lavoro, senza sprecare la capacità di storage.
In alternativa, possono lavorare sulle impostazioni relative al dimensionamento di un blocco della cache rispetto alla quantità di memoria necessaria per l’indicizzazione dei contenuti. L’ideale è trovare l’equilibrio ottimale tra il dimensionamento di un blocco e l’indicizzazione dei contenuti memorizzati, il che richiede qualche test e un monitoraggio delle prestazioni.
Il nodo delle prestazioni
Bisogna tener conto di un’altro aspetto: sulle prestazioni della cache di lettura impatta anche dalla soluzione che si è scelta per la memoria flash locale.
Ad esempio, gli SSD di tipo PCIe con acceleratore I/O spesso offrono prestazioni migliori rispetto ai dispositivi SSD, mentre i dispositivi con una flash a singola cella livello hanno migliori performance rispetto ai dispositivi a celle multi-livello. Così, le organizzazioni hanno intenzione di sfruttare le memorie flash dovrebbe bilanciare il costo e le prestazioni dei dispostivi di storage flash a seconda delle esigenze di memoria dei processi.
I requisiti di sistema della memoria Flash
In generale, una memoria Flash può includere uno storage flash locale da qualsiasi dispositivo che utilizza interfacce standard. Questo include prodotti SSD basati su disco che fanno uso di interfacce SATA e SCSI Serial-Attached (SAS), così come dispositivi basati su scheda di espansione PCIe. Ma lo storage flash deve essere allocato sul server. Dispositivi di storage allo stato solido nella SAN, nella NAS o in altri sistemi di storage remoto non possono essere utilizzati per gestire questa tecnica di memorizzazione.
Il software VMware vFRC è supportato da una serie di SSD prodotti dai principali vendor, tra cui Dell, EMC, Fusion-io, Intel, Samsung e SanDisk. Lato hardware le soluzioni di storage flash sono in continua evoluzione: quindi, prima di decidere di implementare vFRC o strumenti di caching simili in azienda, è importante consultare l’elenco che i fornitori di storage flash tengono aggiornato rispetto agli hardware compatibili, con tutte le specifiche dei prodotti e le avvertenze.
Lato software le cache Flash richiedono anche un supporto dedicato: vFRC si basa su vSphere 5.5 e vCenter Server 5.5 e versioni successive. VFRC può anche usare strumenti per la migrazione, provisioning o l’alta disponibilità come vMotion, vSphere Distributed Resource Scheduler o vSphere High Availability.
Cosa succede alla macchina virtuale se la cache flash non funziona?
Si noti che il contenuto della cache di lettura non è essenziale per il corretto funzionamento di una macchina virtuale. Anche se i framework come vFRC possono essere migrati, se ne può fare il back up oppure possono essere eliminati, il contenuto della cache può anche essere scartato. In questo caso la cache di lettura sarà semplicemente ricostruita dopo la migrazione, il ripristino o anche in corso di funzionamento.
Ad esempio, quando una macchina virtuale viene migrata via vFRC, migra anche la memoria. Questo preserva le prestazioni della storage della macchina virtuale dal momento che la cache rimane calda, anche se di conseguenza aumentano i tempi di migrazione (soprattutto quando la cache di lettura è di grandi dimensioni e livelli di traffico di rete sono alti).
In alternativa, gli amministratori vFRC possono scegliere di migrare una macchina virtuale senza la cache, accelerando il ciclo di migrazione: questo, però, può causare un calo di prestazioni fino a quando la cache non sarà ricostruita nel sistema di destinazione.
La ricostruzione, infatti, può richiedere oltre un’ora di tempo, a seconda della dimensione della cache e dal volume del nuovo traffico di lettura. In questo caso la scelta dipende dall’importanza della domanda e dalle relative prestazioni.
Altre attività di gestione delle macchine virtuali riguardano la cancellazione del contenuto della cache vFRC. Ad esempio, la sospensione, il ridimensionamento, la modifica, la cancellazione, la modifica, il riavvio o il ripristino di una macchina virtuale partendo da uno snapshot sono tutte azioni che scartano il contenuto della cache di lettura corrente, il che ha un impatto potenziale sulle prestazioni della macchina virtuale finché la cache non viene ricostruita.
Anche se gli errori della cache di scrittura possono causare una perdita di dati, leggere gli errori della cache (ad esempio, i problemi degli SSD) se si utilizzano strumenti come vFRC hanno in sistema di protezione.
Le risorse della cache in ambito storage sono separate dallo storage della macchina virtualizzata: questo fa sì che a una perdita della cache non corrisponde un’interruzione dell’operatività della stessa. Tuttavia, tutte le attività di I / O devono usufruire di un accesso condiviso di archiviazione in rete, che si tratti di SAN o di NAS. Per questo le prestazioni della macchina virtuale possono essere compromesse fino a quando la memoria cache non viene riparata e la cache di lettura icostruita.
Valutazione e test prima di procedere all’implementazione
Le caching Flash come vFRC hanno tutto il potenziale per migliorare le prestazioni di una macchina virtuale, ma sono tecnologie di nuova generazione, Scelta e adozione dipendono da una valutazione che deve tener conto dei carichi di lavoro.
Questo perché la memoria flash come risorsa hardware (SSD e acceleratori I/O) sono ancora notevolmente costosi rispetto ai dischi magnetici e alle RAM tradizionali, e non tutti i carichi di lavoro traggoni gli stessi benifici dalla cache di lettura. Gli amministratori IT devono prima valutare i vantaggi delle prestazioni di cache di lettura sulle applicazioni in un ambiente di test, e sperimentare le opzioni di configurazione rispetto alla cache Flash, prima di decidere se passare all’implementazione.