La virtualizzazione della memoria (virtualizzazione dello storage) è un concetto di virtualizzazione che mira a raffigurare virtualmente le diverse risorse di storage dell’azienda, come unità disco, memoria flash o unità nastro e distribuirle in un pool di archiviazione interdipendente. In questo modo la soluzione di virtualizzazione stabilisce un livello di astrazione tra i diversi mezzi di archiviazione fisici e il piano logico sul quale si possono amministrare centralmente le risorse di archiviazione.
Anche l’archivio virtuale si può suddividere in quote e assegnare alle applicazioni selezionate. Nonostante la virtualizzazione, gli utenti possono sempre accedere ai file memorizzati attraverso gli stessi percorsi, anche se la posizione fisica di archiviazione cambia, grazie a una tabella di mappatura gestita dal software di virtualizzazione. Si parla di un mapping dei supporti di archiviazione fisici su un’unità logica (chiamati anche volumes).
Le unità logiche non risentono dei limiti fisici di capacità dell’unico supporto di archiviazione che ne è alla base e in questo modo la virtualizzazione della memoria offre un grado di flessibilità molto più elevato nella suddivisione delle risorse di archiviazione. L’hardware a disposizione per la memorizzazione dei file si può sfruttare al massimo: questo per le aziende significa che si possono suddividere le capacità di memorizzazione nel data center ad un prezzo più moderato.
Normalmente in ambito aziendale la virtualizzazione dell’archiviazione è implementata basandosi sui block. Con la memorizzazione a blocchi i dati vengono suddivisi in blocks di dimensioni uguali. Ad ogni blocco di file viene assegnato un indirizzo univoco che viene salvato dal software di virtualizzazione nella tabella di mappatura centralizzata (mapping table). La tabella di mappatura contiene tutti i metadati necessari per trovare il luogo di archiviazione di un blocco di dati. Questa mappatura consente di amministrare i dati a livello virtuale indipendentemente dal rispettivo controller del supporto di archiviazione fisico e quindi anche di spostarli, copiarli o replicarli.
Nella pratica la virtualizzazione basata sui blocchi si può implementare secondo tre diversi approcci:
- Basandosi sull’host
- Basandosi sui dispositivi
- Basandosi sulla rete
Virtualizzazione basata sull‘host
La virtualizzazione basata sull’host delle risorse di archiviazione è un approccio di virtualizzazione della memoria che di solito è utilizzato in combinazione con le macchine virtuali. In questo caso un sistema host presenta a uno o più sistemi guest (vedi virtualizzazione dell’hardware) delle unità virtuali a un livello di astrazione che non è realizzato né con un volume manager interno al sistema operativo, né con un software apposito (un cosiddetto storage hypervisor). L’accesso all’hardware (disco fisso e altri supporti di memorizzazione) avviene attraverso i driver di periferica del sistema host. Il volume manager o lo storage hypervisor vengono utilizzati come livello software sopra i driver di periferica e gestiscono input/output (I/O), tabelle di mapping e ricerca di metadati.
Le funzioni native che permettono di creare dischi virtuali sono disponibili in quasi tutti i sistemi operativi recenti.
- Windows: Logical Disk Manager (LDM)
- macOS: CoreStorage (da OS X Lion)
- Linux: Logical Volume Manager (LVM)
- Solaris e FreeBSD: zPools dello Z File System (ZFS)
La virtualizzazione basata sull’host non necessita di un hardware aggiuntivo, supporta qualsiasi dispositivo di archiviazione ed è facile da implementare. Inoltre questo approccio rispetto ad altri offre la migliore performance, dato che ogni dispositivo di archiviazione è indirizzato direttamente e quindi senza tempi di latenza. Tuttavia gli utenti devono tenere conto del fatto che la virtualizzazione della memoria, con la conseguente possibilità di ottimizzarne l’utilizzo, è limitata all’host di riferimento.
Virtualizzazione della memoria basata su dispositivi
Anche i disk array, ovvero i dispositivi di archiviazione di massa che possono essere utilizzati per distribuire i dischi sulla rete, offrono la possibilità di virtualizzare le risorse di archiviazione, utilizzando i cosiddetti RAID Schemata. Il RAID (abbreviazione per: Redundant Array of Independent Disks, la disposizione ridondante di dischi rigidi indipendenti) è una modalità di gestione dei dati nella quale diverse unità fisiche sono riunite in una piattaforma di archiviazione virtuale. Il fine della virtualizzazione della memoria è l’affidabilità ottenuta grazie alla ridondanza e per fare ciò i dati vengono replicati in un disk array e distribuiti su diversi dischi rigidi.