Programmering

Forståelse af cloudlagermodeller

Hvem ville have troet, at opbevaring af bits kunne blive så utrolig kompliceret? Opbevaring har altid indeholdt en overflod af protokoller, fra Fibre Channel til iSCSI til SMB i alle dens variationer, men ankomsten af ​​flash og den fortsatte vækst af virtualisering har gjort et allerede tæt emne til en sammenfiltret jungle af akronymer, protokoller og abstraktioner.

Virtualiseringen af ​​datacentret har også ført til en virtualiseringsbølge i lagring, der gradvist trækker lagring væk fra fysiske protokoller og mod logiske, abstrakte lagermodeller som eksempelvis lagring og volumenlagring. Ved at levere abstraktioner har datacentret støt afkoblet virtuelle maskiner fra lagerprotokoller.

Fremgangen af ​​cloud-datacentre har også skabt en ny lagerklasse kaldet objektlagring, som ofrer den stærke konsistens af traditionelle opbevaringsprotokoller for at give enkeltnavneområder på global skala.

I denne artikel vil jeg give en vis klarhed ved at placere forekomst, volumen og objektlagring i udviklingen af ​​datacentret og vise, hvordan disse nye abstraktioner passer oven på eller ved siden af ​​eksisterende lagerprotokoller.

Historien om cloud storage er på mange måder en historie om virtualisering. Jeg starter med fysiske miljøer, flytter til virtualisering, hvor virtuelle og fysiske modeller begynder at diverge, og slutter med skyen, hvor det fysiske næsten fuldstændigt er abstraheret af virtuelle modeller.

Fysisk opbevaring

Ved roden til al opbevaring er der et sæt fysiske opbevaringsprotokoller, så jeg begynder med en hurtig opsummering af fysisk opbevaring. Tre store klasser af fysiske lagermodeller er i brug i dag: direkte tilknyttet lager (DAS), lagerområdet (SAN) og netværksbaseret lager (NAS).

DAS. Direkte tilknyttet lager er den enkleste lagermodel. Vi kender alle DAS; dette er den model, der bruges af de fleste bærbare computere, telefoner og stationære computere. Den grundlæggende enhed i DAS er selve computeren; lagring af en server kan ikke adskilles fra selve serveren. I tilfælde af en telefon er det fysisk umuligt at fjerne lageret fra computeren, men selv i tilfælde af servere, hvor det teoretisk er muligt at trække diskdrev, når et drev er adskilt fra serveren, slettes det generelt før genbruge. SCSI og SATA er eksempler på DAS-protokoller.

SAN. Til sidst anerkendte lagerindustrien nytten af ​​at adskille lagring fra computeren. I stedet for at tilslutte diske til hver enkelt computer placerede vi alle diskene på en enkelt klynge af servere og fik adgang til disken over netværket. Dette forenkler lagringsadministrationsopgaver såsom backup og fejlreparation. Denne opdeling af lager og beregning kaldes ofte delt lager, da flere computere bruger en enkelt lagerplads.

Det var mest ligetil at kommunikere mellem klienten og serveren over netværket ved hjælp af de samme (eller meget lignende) blokprotokoller, der blev brugt til at kommunikere med lokalt tilsluttede diskdrev. Opbevaring, der udsættes for denne måde, kaldes et opbevaringsnetværk. Fibre Channel og iSCSI er eksempler på SAN-protokoller.

I et SAN vil en administrator gruppere et sæt diske (eller en del af et sæt diske) i en LUN (logisk enhed), som derefter opfører sig som et enkelt diskdrev til eksterne computere. LUN er den grundlæggende enhed, der bruges til at styre SAN-lagring.

NAS. Mens SAN'er tillader os at flytte LUN'er mellem en computer og en anden, var blokprotokollerne, de bruger, ikke designet til samtidig at dele data i den samme LUN mellem computere. For at tillade denne form for deling har vi brug for en ny type lager, der er bygget til samtidig adgang. I denne nye form for opbevaring kommunikerer vi med opbevaringen ved hjælp af filsystemprotokoller, der meget ligner filsystemerne, der køres på lokale computere. Denne form for lager er kendt som netværksbundet lager. NFS og SMB er eksempler på NAS-protokoller.

Abstraktion af filsystemet giver flere servere adgang til de samme data på samme tid. Flere servere kan læse den samme fil på samme tid, og flere servere kan placere nye filer i filsystemet på samme tid. Således er NAS en meget bekvem model til delte bruger- eller applikationsdata.

NAS-lager giver administratorer mulighed for at allokere dele af lageret til individuelle filsystemer. Hvert filsystem er et enkelt navneområde, og filsystemet er den primære enhed, der bruges til at styre NAS.

Virtuel opbevaring

Virtualisering ændrede landskabet i det moderne datacenter til opbevaring, som det gjorde for beregning. Ligesom fysiske maskiner blev abstraheret til virtuelle maskiner, blev fysisk opbevaring abstraheret til virtuelle diske.

I virtualisering giver hypervisoren et emuleret hardwaremiljø til hver virtuel maskine, inklusive computer, hukommelse og lagring. VMware, den indledende moderne hypervisor, valgte at efterligne lokale fysiske diskdrev som en måde at give lager til hver VM. Sagt på en anden måde, VMware valgte den lokale diskdrev (DAS) -model som måde at udsætte lager for virtuelle maskiner på.

Ligesom den grundlæggende lagringsenhed i DAS er den fysiske maskine, er den grundlæggende enhed i virtuel disklagring VM. Virtuelle diske eksponeres ikke som uafhængige objekter, men som en del af en bestemt virtuel maskine, ligesom lokale diske konceptuelt er en del af en fysisk computer. Som med DAS lever og dør en virtuel disk med selve VM'en; Hvis VM slettes, slettes den virtuelle disk også.

De fleste konventionelle virtualiseringsplatforme bruger en virtuel disklagermodel. For eksempel administreres og tilknyttes lagring i VMware vSphere, Microsoft Hyper-V, Red Hat Enterprise Virtualization og Xen-miljøer på en lignende måde.

Implementering af virtuelle diske

Fordi VMware ville fortsætte med at levere fordelene ved delt lager til virtuelle maskiner, kunne det ikke stole på en DAS-protokol for at implementere virtuelle diske. Det oplagte næste valg ville være at bruge SAN, da en SAN LUN ligner et lokalt diskdrev.

Imidlertid har fysiske LUN'er begrænsninger, der giver en udfordrende pasform til virtuelle diske. Virtualiserede miljøer konsoliderer et antal logiske computere på en enkelt fysisk server, hvilket betyder, at antallet af virtuelle diske på en given vært vil være meget større end antallet af fysiske LUN'er for en vært i et fysisk miljø. Det maksimale antal LUN'er, der kunne knyttes til en given fysisk server, var for lavt til at understøtte det nødvendige antal virtuelle diske.

Måske endnu vigtigere skal virtuelle diske, som med virtuelle CPU'er, være logiske objekter, der kan oprettes, ødelægges og flyttes programmatisk, og dette er ikke operationer, som SAN-lager er designet til at udføre. For eksempel havde VMware behov for dynamisk at flytte VM'er mellem fysiske værter, hvilket krævede delt lageradgang under migrationen.

Af disse grunde valgte VMware at implementere virtuelle diske som filer i et filsystem (NFS) eller i et distribueret filsystem (VMFS) på SAN snarere end som rå LUN'er.

Fra lagringsprotokoller til lagermodeller

At VMware valgte at implementere virtuelle diske, en DAS-stil bloklagermodel oven på NAS eller SAN, illustrerer en af ​​de interessante egenskaber ved moderne datacenterlagring. Da IO fra en virtuel maskine afleveres til software i hypervisor snarere end til hardware på en enhedsbus, behøver den protokol, der bruges af den virtuelle maskine til at kommunikere med hypervisoren, ikke at matche den protokol, som hypervisor bruger til at kommunikere med opbevaring selv.

Dette fører til en adskillelse mellem lagermodellen, der er eksponeret opad til den virtuelle computer og administratoren, og den lagringsprotokol, der bruges af hypervisor til faktisk at lagre dataene. I tilfælde af virtuelle diske designede VMware dem i henhold til en DAS-lagringsmodel og brugte derefter en NAS-lagringsprotokol til at implementere dem.

Dette er et kraftigt lag af indirektion; det giver os fleksibiliteten til at blande og matche opbevaringsmodeller og opbevaringsprotokoller og endda dynamisk ændre opbevaringsprotokollen uden at påvirke virtuelle maskiner. For eksempel implementeres virtuelle diske ved hjælp af filer i NFS, filer i VMFS gemt på Fibre Channel LUN'er eller endda (i VVols eller Virtual Volumes) direkte som iSCSI LUNs. Valget af implementering er helt gennemsigtigt for applikationen, fordi alle disse protokoller til sidst vil se ens ud for VM og administrator; de vil ligne lokale, fysiske diskdrev, der er knyttet til virtuelle computere.

Således kan applikationsudvikleren i de fleste offentlige skyinfrastrukturer ikke vide, hvilken lagerprotokol der er i brug; faktisk kan protokollen endda ændre sig dynamisk. Vi ved ikke, hvilken opbevaringsprotokol Amazon bruger til elastisk blokopbevaring, og det er heller ikke vigtigt for os at vide.

På grund af adskillelsen mellem lagermodel og opbevaringsprotokol bliver lagerprotokollen et infrastrukturvendt problem, primært vigtigt for omkostninger og ydeevne, snarere end en applikationsorienteret beslutning, der dikterer funktionalitet.

Sky lagring

Datacentrets landskab skifter igen, når virtualiserede miljøer forvandles til skymiljøer. Cloud-miljøer omfavner den virtuelle diskmodel, der er banebrydende inden for virtualisering, og de leverer yderligere modeller for at muliggøre en fuldt virtualiseret lagerstabel. Cloud-miljøer forsøger at virtualisere hele lagerstakken, så de kan tilbyde selvbetjening og en ren adskillelse mellem infrastruktur og applikation.

Skymiljøer findes i mange former. De kan implementeres af virksomheder som private skyer ved hjælp af miljøer som OpenStack, CloudStack og VMware vRealize-pakken. De kan også implementeres af tjenesteudbydere som offentlige skyer som Amazon Web Services, Microsoft Azure og Rackspace.

Interessant nok spejler lagermodellerne, der bruges i skymiljøer, dem, der er i brug i fysiske miljøer. Som med virtuelle diske er de dog lagringsmodeller, der er abstrakt væk fra de mange lagerprotokoller, der kan bruges til at implementere dem.

Instanslagring: Virtuelle diske i skyen

Den virtuelle disklagermodel er den primære (eller eneste) model til opbevaring i konventionelle virtualiserede miljøer. I skymiljøer er denne model dog en af ​​tre. Derfor får modellen et specifikt navn i skymiljøer: instanslagring, hvilket betyder lagring, der forbruges som konventionelle virtuelle diske.

Det er vigtigt at bemærke, at instanslagring er en lagringsmodel, ikke en lagerprotokol, og kan implementeres på flere måder. For eksempel implementeres eksempelvis lagring undertiden ved hjælp af DAS på selve beregningsnoderne. Implementeret på denne måde kaldes det ofte kortvarig opbevaring, fordi opbevaringen normalt ikke er meget pålidelig.

Instanslagring kan også implementeres som pålidelig lagring ved hjælp af NAS eller volumenlagring, en anden lagringsmodel, der beskrives derefter. For eksempel tillader OpenStack brugere at implementere instanslagring som kortvarig lagerplads på værterne, som filer på NFS-monteringspunkter eller som Cinder-volumener ved hjælp af boot-from-volume.

Volumenlagring: SAN sans det fysiske

Instanslagring har dog sine begrænsninger. Udviklere af cloud-native applikationer adskiller ofte eksplicit konfigurationsdata, såsom OS og applikationsdata, fra brugerdata, såsom databasetabeller eller datafiler. Ved at opdele de to er udviklere i stand til at gøre konfigurationen kortvarig og genopbyggelig, mens de stadig opretholder en stærk pålidelighed for brugerdata.

Denne skelnen fører igen til en anden type lager: volumenlagring, en hybrid af instanslagring og SAN. En volumen er den primære enhed for volumenlagring snarere end en VM. En lydstyrke kan løsnes fra en VM og knyttes til en anden. Som en virtuel disk ligner et volumen mere en fil end en LUN i skala og abstraktion. I modsætning til eksempelopbevaring antages volumenlagring normalt at være meget pålidelig og bruges ofte til brugerdata.

OpenStacks Cinder er et eksempel på en volumenbutik, ligesom Docker's uafhængige volumenabstraktion. Bemærk igen, at volumenlagring er en lagermodel, ikke en lagerprotokol. Volumenlagring kan implementeres oven på filprotokoller såsom NFS eller blokprotokoller som iSCSI transparent for applikationen.

Objektlagring: NAS på webskala

Cloud-native applikationer har også brug for et hjem for data, der deles mellem virtuelle computere, men de har ofte brug for navneområder, der kan skaleres til flere datacentre på tværs af geografiske regioner. Objektlagring giver nøjagtigt denne form for opbevaring. For eksempel giver Amazons S3 et enkelt logisk navneområde over en hel region og uden tvivl over hele verden. For at nå denne skala var S3 nødt til at ofre den stærke konsistens og finkornede opdateringer af konventionel NAS.

Objektlagring giver en fillignende abstraktion kaldet et objekt, men det giver eventuel konsistens. Dette betyder, at mens alle klienter til sidst får de samme svar på deres anmodninger, kan de midlertidigt modtage forskellige svar. Denne konsistens svarer til konsistensen fra Dropbox mellem to computere; klienter kan midlertidigt komme ud af synkronisering, men i sidste ende konvergerer alt.

Traditionelle objektbutikker leverer også et forenklet sæt datafunktioner, der er indstillet til brug over WAN-forbindelser med høj latens: at liste objekterne i en "bucket", læse et objekt i sin helhed og erstatte dataene i et objekt med helt nye data. Denne model giver et mere grundlæggende sæt operationer end NAS, som gør det muligt for applikationer at læse og skrive små blokke i en fil, til at trunke filer til nye størrelser, flytte filer mellem mapper osv.