Comprensione dei modelli di archiviazione cloud

Chi avrebbe mai pensato che la memorizzazione dei bit potesse diventare così incredibilmente complicata? Lo storage ha sempre contenuto una pletora di protocolli, da Fibre Channel a iSCSI a SMB in tutte le sue varianti, ma l'arrivo del flash e la continua crescita della virtualizzazione hanno trasformato un argomento già denso in una giungla intricata di acronimi, protocolli e astrazioni.

La virtualizzazione del data center ha provocato un'ondata di virtualizzazione anche nello storage, allontanando gradualmente lo storage dai protocolli fisici e verso modelli di storage logici e astratti come lo storage di istanze e lo storage di volumi. Fornendo astrazioni, il data center ha costantemente disaccoppiato le macchine virtuali dai protocolli di archiviazione.

L'ascesa dei data center cloud ha anche generato una nuova classe di storage chiamata object storage, che sacrifica la forte coerenza dei protocolli di storage tradizionali per fornire singoli spazi dei nomi su scala globale.

In questo articolo fornirò un po 'di chiarezza inserendo l'istanza, il volume e lo storage di oggetti nell'evoluzione del data center e mostrerò come queste nuove astrazioni si adattano sopra o accanto ai protocolli di archiviazione esistenti.

La storia del cloud storage è per molti versi una storia di virtualizzazione. Inizierò con gli ambienti fisici, passerò alla virtualizzazione, dove i modelli fisici e virtuali iniziano a divergere, e finirò con il cloud, dove il fisico è quasi completamente astratto dai modelli virtuali.

Archiviazione fisica

Alla radice di tutto l'archiviazione c'è una serie di protocolli di archiviazione fisica, quindi inizierò con un rapido riepilogo dell'archiviazione fisica. Attualmente sono in uso tre classi principali di modelli di archiviazione fisica: DAS (Direct Attached Storage), SAN (Storage Area Network) e NAS (Network Attached Storage).

DAS.  L'archiviazione collegata direttamente è il modello di archiviazione più semplice. Conosciamo tutti DAS; questo è il modello utilizzato dalla maggior parte dei laptop, telefoni e computer desktop. L'unità fondamentale in DAS è il computer stesso; lo spazio di archiviazione per un server non è separabile dal server stesso. Nel caso di un telefono è fisicamente impossibile rimuovere la memoria dal computer, ma anche nel caso dei server, dove è teoricamente possibile estrarre le unità disco, una volta che un'unità è separata dal server, viene generalmente cancellata prima riutilizzare. SCSI e SATA sono esempi di protocolli DAS.

SAN.  Alla fine il settore dello storage ha riconosciuto l'utilità di separare lo storage dal calcolo. Piuttosto che collegare i dischi a ogni singolo computer, abbiamo posizionato tutti i dischi su un singolo cluster di server e acceduto al disco tramite la rete. Ciò semplifica le attività di gestione dello storage come il backup e la riparazione in caso di errore. Questa divisione di archiviazione e calcolo è spesso chiamata archiviazione condivisa , poiché più computer utilizzeranno un singolo pool di archiviazione.

È stato più semplice comunicare tra il client e il server sulla rete utilizzando gli stessi (o molto simili) protocolli di blocco utilizzati per comunicare con le unità disco collegate localmente. Lo spazio di archiviazione esposto in questo modo è chiamato rete di archiviazione. Fibre Channel e iSCSI sono esempi di protocolli SAN.

In una SAN un amministratore raggrupperà un set di dischi (o una parte di un set di dischi) in una LUN (unità logica), che quindi si comporta come una singola unità disco per i computer esterni. Il LUN è l'unità fondamentale utilizzata per gestire l'archiviazione SAN.

NAS.  Sebbene le SAN ci consentano di spostare i LUN tra un computer e l'altro, i protocolli di blocco che utilizzano non sono stati progettati per condividere contemporaneamente i dati nello stesso LUN tra i computer. Per consentire questo tipo di condivisione, abbiamo bisogno di un nuovo tipo di storage creato per l'accesso simultaneo. In questo nuovo tipo di archiviazione comunichiamo con la memoria utilizzando protocolli di file system, che sono molto simili ai file system eseguiti sui computer locali. Questo tipo di archiviazione è noto come archiviazione collegata alla rete. NFS e SMB sono esempi di protocolli NAS.

L'astrazione del file system consente a più server di accedere agli stessi dati contemporaneamente. Più server possono leggere lo stesso file contemporaneamente e più server possono inserire nuovi file nel file system contemporaneamente. Pertanto, il NAS è un modello molto conveniente per i dati condivisi di utenti o applicazioni.

L'archiviazione NAS consente agli amministratori di allocare porzioni di archiviazione in singoli file system. Ogni file system è un singolo spazio dei nomi e il file system è l'unità primaria utilizzata per gestire il NAS.

Archiviazione virtuale

La virtualizzazione ha cambiato il panorama del moderno data center per lo storage così come per il calcolo. Proprio come le macchine fisiche sono state astratte in macchine virtuali, lo storage fisico è stato astratto in dischi virtuali.

Nella virtualizzazione, l'hypervisor fornisce un ambiente hardware emulato per ogni macchina virtuale, inclusi computer, memoria e archiviazione. VMware, il primo hypervisor moderno, ha scelto di emulare le unità disco fisiche locali come un modo per fornire spazio di archiviazione per ogni VM. In altre parole, VMware ha scelto il modello di unità disco locale (DAS) come modo per esporre lo storage alle macchine virtuali.

Proprio come l'unità fondamentale di archiviazione in DAS è la macchina fisica, l'unità fondamentale nell'archiviazione su disco virtuale è la VM. I dischi virtuali non sono esposti come oggetti indipendenti, ma come parte di una particolare macchina virtuale, esattamente come i dischi locali sono concettualmente parte di un computer fisico. Come con DAS, un disco virtuale vive e muore con la VM stessa; se la VM viene eliminata, verrà eliminato anche il disco virtuale.

La maggior parte delle piattaforme di virtualizzazione convenzionali utilizza un modello di archiviazione su disco virtuale. Ad esempio, lo storage negli ambienti VMware vSphere, Microsoft Hyper-V, Red Hat Enterprise Virtualization e Xen sono tutti gestiti e collegati in modo simile.

Implementazione di dischi virtuali

Poiché VMware voleva continuare a fornire i vantaggi dello storage condiviso alle macchine virtuali, non poteva fare affidamento su un protocollo DAS per implementare i dischi virtuali. La scelta successiva più ovvia sarebbe quella di utilizzare SAN, poiché una SAN LUN è molto simile a un'unità disco locale.

Tuttavia, i LUN fisici hanno limitazioni che rendono difficile l'adattamento ai dischi virtuali. Gli ambienti virtualizzati consolidano un numero di computer logici su un singolo server fisico, il che significa che il numero di dischi virtuali su un dato host sarà molto maggiore del numero di LUN fisici per un host in un ambiente fisico. Il numero massimo di LUN che potevano essere collegati a un determinato server fisico era troppo basso per supportare il numero necessario di dischi virtuali.

Forse ancora più importante, i dischi virtuali, come le CPU virtuali, devono essere oggetti logici che possono essere creati, distrutti e spostati a livello di programmazione, e queste non sono operazioni per cui lo storage SAN è stato progettato. Ad esempio, VMware doveva spostare dinamicamente le VM tra host fisici, il che richiedeva l'accesso allo storage condiviso durante la migrazione.

Per questi motivi, VMware ha scelto di implementare i dischi virtuali come file in un file system (NFS) o in un file system distribuito (VMFS) su SAN, piuttosto che come LUN non elaborati.

Dai protocolli di archiviazione ai modelli di archiviazione

Il fatto che VMware abbia scelto di implementare dischi virtuali, un modello di archiviazione a blocchi in stile DAS, oltre a NAS o SAN, illustra una delle caratteristiche interessanti dello storage moderno del data center. Poiché l'IO di una macchina virtuale viene trasferito al software nell'hypervisor, piuttosto che all'hardware su un bus del dispositivo, il protocollo utilizzato dalla VM per comunicare con l'hypervisor non deve corrispondere al protocollo utilizzato dall'hypervisor per comunicare con archiviazione stessa.

Ciò porta a una separazione tra il modello di archiviazione esposto verso l'alto alla VM e all'amministratore e il protocollo di archiviazione utilizzato dall'hypervisor per archiviare effettivamente i dati. Nel caso dei dischi virtuali, VMware li ha progettati secondo un modello di archiviazione DAS, quindi ha utilizzato un protocollo di archiviazione NAS per implementarli.

Questo è un potente livello di riferimento indiretto; ci offre la flessibilità di combinare e abbinare modelli di archiviazione e protocolli di archiviazione e persino modificare dinamicamente il protocollo di archiviazione senza influire sulle macchine virtuali. Ad esempio, i dischi virtuali vengono implementati utilizzando file in NFS, file in VMFS archiviati su LUN Fibre Channel o anche (in VVols o Virtual Volumes) direttamente come iSCSI LUN. La scelta dell'implementazione è completamente trasparente per l'applicazione, perché alla fine tutti questi protocolli sembreranno uguali alla VM e all'amministratore; appariranno come unità disco fisiche locali collegate alle VM.

Pertanto, lo sviluppatore dell'applicazione nella maggior parte delle infrastrutture cloud pubbliche non può sapere quale protocollo di archiviazione è in uso; infatti, il protocollo può anche cambiare dinamicamente. Non sappiamo quale protocollo di archiviazione Amazon utilizza per Elastic Block Storage, né è importante per noi saperlo.

A causa della separazione tra modello di archiviazione e protocollo di archiviazione, il protocollo di archiviazione diventa un problema relativo all'infrastruttura, importante principalmente per costi e prestazioni, piuttosto che una decisione di fronte all'applicazione che determina la funzionalità.

Archiviazione nel cloud

Il panorama del data center sta cambiando di nuovo mentre gli ambienti virtualizzati si trasformano in ambienti cloud. Gli ambienti cloud abbracciano il modello di disco virtuale sperimentato nella virtualizzazione e forniscono modelli aggiuntivi per abilitare uno stack di archiviazione completamente virtualizzato. Gli ambienti cloud tentano di virtualizzare l'intero stack di archiviazione in modo che possano fornire self-service e una netta separazione tra infrastruttura e applicazione.

Gli ambienti cloud sono disponibili in molte forme. Possono essere implementati dalle aziende come cloud privati ​​utilizzando ambienti come OpenStack, CloudStack e la suite VMware vRealize. Possono anche essere implementati da provider di servizi come cloud pubblici come Amazon Web Services, Microsoft Azure e Rackspace.

È interessante notare che i modelli di archiviazione utilizzati negli ambienti cloud rispecchiano quelli in uso negli ambienti fisici. Tuttavia, come con i dischi virtuali, sono modelli di archiviazione astratti dai più protocolli di archiviazione che possono essere utilizzati per implementarli.

Archiviazione istanze: dischi virtuali nel cloud

Il modello di archiviazione su disco virtuale è il modello principale (o unico) per l'archiviazione in ambienti virtualizzati convenzionali. Negli ambienti cloud, tuttavia, questo modello è uno dei tre. Pertanto, al modello viene assegnato un nome specifico negli ambienti cloud: archiviazione dell'istanza, ovvero l'archiviazione consumata come i dischi virtuali convenzionali.

È importante notare che l'archiviazione delle istanze è un modello di archiviazione, non un protocollo di archiviazione e può essere implementata in più modi. Ad esempio, l'archiviazione dell'istanza viene talvolta implementata utilizzando DAS sui nodi di calcolo stessi. Implementato in questo modo, viene spesso chiamato archiviazione temporanea perché l'archiviazione di solito non è altamente affidabile.

L'archiviazione di istanze può anche essere implementata come archiviazione affidabile utilizzando NAS o archiviazione di volume, un secondo modello di archiviazione descritto di seguito. Ad esempio, OpenStack consente agli utenti di implementare l'archiviazione dell'istanza come archiviazione temporanea sugli host, come file sui punti di montaggio NFS o come volumi Cinder utilizzando il volume di avvio.

Memoria di volume: SAN esclude il fisico

L'archiviazione delle istanze, tuttavia, ha i suoi limiti. Gli sviluppatori di applicazioni cloud native spesso differenziano esplicitamente i dati di configurazione, come i dati del sistema operativo e delle applicazioni, dai dati dell'utente, come le tabelle di database oi file di dati. Dividendo i due, gli sviluppatori sono quindi in grado di rendere la configurazione transitoria e ricostruibile pur mantenendo una forte affidabilità per i dati utente.

Questa distinzione, a sua volta, porta a un altro tipo di archiviazione: archiviazione di volume, un ibrido di archiviazione di istanze e SAN. Un volume è l'unità primaria di archiviazione del volume piuttosto che una VM. Un volume può essere scollegato da una VM e collegato a un altro. Tuttavia, come un disco virtuale, un volume assomiglia più da vicino a un file rispetto a un LUN in scala e astrazione. A differenza dell'archiviazione delle istanze, l'archiviazione del volume è generalmente considerata altamente affidabile e viene spesso utilizzata per i dati dell'utente.

Cinder di OpenStack è un esempio di archivio di volumi, così come l'astrazione indipendente del volume di Docker. Notare ancora una volta che l'archiviazione del volume è un modello di archiviazione, non un protocollo di archiviazione. L'archiviazione di volumi può essere implementata sopra protocolli di file come NFS o protocolli a blocchi come iSCSI in modo trasparente per l'applicazione.

Archiviazione oggetti: NAS su scala Web

Anche le applicazioni cloud native necessitano di una casa per i dati condivisi tra le VM, ma spesso necessitano di spazi dei nomi in grado di scalare a più data center in aree geografiche. L'archiviazione di oggetti fornisce esattamente questo tipo di archiviazione. Ad esempio, S3 di Amazon fornisce un unico spazio dei nomi logico in un'intera regione e, probabilmente, in tutto il mondo. Per raggiungere questa scala, S3 doveva sacrificare la forte coerenza e gli aggiornamenti a grana fine del NAS convenzionale.

L'archiviazione degli oggetti fornisce un'astrazione simile a un file chiamata oggetto, ma fornisce un'eventuale coerenza. Ciò significa che mentre tutti i clienti alla fine riceveranno le stesse risposte alle loro richieste, potrebbero ricevere temporaneamente risposte diverse. Questa coerenza è simile a quella fornita da Dropbox tra due computer; i client possono temporaneamente perdere la sincronizzazione, ma alla fine tutto converge.

Gli object store tradizionali forniscono anche un set semplificato di operazioni sui dati ottimizzate per l'uso su connessioni WAN ad alta latenza: elencare gli oggetti in un "bucket", leggere un oggetto nella sua interezza e sostituire i dati in un oggetto con dati completamente nuovi. Questo modello fornisce un insieme di operazioni più basilare rispetto al NAS, che consente alle applicazioni di leggere e scrivere piccoli blocchi all'interno di un file, di troncare i file a nuove dimensioni, di spostare i file tra le directory e così via.