Ohjelmointi

Pilvivarastomallien ymmärtäminen

Kuka olisi uskonut, että bittien tallentaminen voisi tulla niin uskomattoman monimutkaiseksi? Tallennustila on aina sisältänyt lukuisia protokollia Fiber Channelista iSCSI: hen SMB: hen kaikissa muunnelmissaan, mutta salaman saapuminen ja virtualisoinnin jatkuva kasvu ovat muuttaneet jo tiheän aiheen sekavaksi lyhenteiden, protokollien ja abstraktioiden viidakoksi.

Datakeskuksen virtualisointi on herättänyt virtualisointiaallon myös varastoissa, vetämällä vähitellen tallennustilaa fyysisistä protokollista kohti loogisia, abstrakteja tallennusmalleja, kuten instanssitallennusta ja levytallennusta. Tarjoamalla abstraktit datakeskus on tasaisesti irrottanut virtuaalikoneet tallennusprotokollista.

Pilvikeskusten nousu on myös synnyttänyt uuden luokan tallennustilaa, nimeltään objektitallennus, joka uhraa perinteisten tallennusprotokollien vahvan johdonmukaisuuden yksittäisten nimitilojen tarjoamiseksi maailmanlaajuisesti.

Tässä artikkelissa annan jonkin verran selkeyttä sijoittamalla esiintymän, määrän ja objektitallennuksen datakeskuksen kehitykseen ja näytän, kuinka nämä uudet abstraktit sopivat olemassa olevien tallennusprotokollien päälle tai viereen.

Pilvivarastointitarina on monin tavoin virtualisoinnin tarina. Aloitan fyysisistä ympäristöistä, siirryn virtualisointiin, jossa virtuaaliset ja fyysiset mallit alkavat erota toisistaan, ja lopetan pilvellä, jossa virtuaalimallit hämmentävät fyysisen melkein kokonaan.

Fyysinen varastointi

Kaiken tallennustilan ytimessä on joukko fyysisiä tallennusprotokollia, joten aloitan fyysisen muistin nopealla yhteenvetolla. Fyysisten tallennusmallien kolme suurta luokkaa ovat nykyään käytössä: suora liitetty varastointi (DAS), tallennusalueverkko (SAN) ja verkkoon liitetty tallennus (NAS).

DAS. Suora liitetty tallennus on yksinkertaisin tallennusmalli. Me kaikki tunnemme DAS: n; tätä mallia käytetään useimmissa kannettavissa tietokoneissa, puhelimissa ja pöytätietokoneissa. DAS: n perusyksikkö on itse tietokone; palvelimen tallennustila ei ole erotettavissa itse palvelimesta. Puhelimen tapauksessa on fyysisesti mahdotonta poistaa tallennustilaa laskelmasta, mutta jopa palvelimissa, joissa on teoriassa mahdollista vetää levyasemia, kun asema on erotettu palvelimesta, se yleensä pyyhitään ennen uudelleenkäyttö. SCSI ja SATA ovat esimerkkejä DAS-protokollista.

SAN. Lopulta varastoala tunnisti hyödyllisyyden erottaa tallennustila laskennasta. Sen sijaan, että kiinnitämme levyjä kuhunkin yksittäiseen tietokoneeseen, sijoitimme kaikki levyt yhteen palvelinjoukkoon ja käytimme levyä verkon kautta. Tämä yksinkertaistaa tallennuksen hallinnan tehtäviä, kuten varmuuskopiointia ja vikojen korjaamista. Tätä varastoinnin ja laskennan jakoa kutsutaan usein jaetuksi tallennustilaksi, koska useat tietokoneet käyttävät yhtä tallennustilaa.

Oli suoraviivaisinta kommunikoida asiakkaan ja palvelimen välillä verkon kautta käyttäen samoja (tai hyvin samankaltaisia) lohkoprotokollia, joita käytettiin kommunikointiin paikallisesti liitettyjen levyasemien kanssa. Näin paljastettua tallennustilaa kutsutaan varastoalueeksi. Kuitukanava ja iSCSI ovat esimerkkejä SAN-protokollista.

SAN-järjestelmässä järjestelmänvalvoja ryhmittää levysarjan (tai osan levyjoukosta) LUN-yksikköön (looginen yksikkö), joka sitten käyttäytyy kuin yksittäinen levyasema ulkoisten tietokoneiden kanssa. LUN on perusyksikkö, jota käytetään SAN-tallennuksen hallintaan.

NAS. Vaikka SAN-verkot antavat meille mahdollisuuden siirtää LUN-tietokoneita tietokoneen ja toisen välillä, heidän käyttämiään lohkoprotokollia ei ole suunniteltu jakamaan tietoja samanaikaisesti samassa LUN-tietokoneessa tietokoneiden välillä. Tällaisen jakamisen sallimiseksi tarvitsemme uudenlaisen tallennustilan, joka on rakennettu samanaikaista käyttöä varten. Tässä uudentyyppisessä tallennustilassa kommunikoimme tallennuksen kanssa tiedostojärjestelmäprotokollilla, jotka muistuttavat läheisesti paikallisten tietokoneiden tiedostojärjestelmiä. Tällaista tallennustilaa kutsutaan verkkoon liitetyksi tallennustilaksi. NFS ja SMB ovat esimerkkejä NAS-protokollista.

Tiedostojärjestelmän abstraktio sallii useiden palvelinten pääsyn samoihin tietoihin samanaikaisesti. Useat palvelimet voivat lukea samaa tiedostoa samanaikaisesti, ja useat palvelimet voivat sijoittaa uusia tiedostoja tiedostojärjestelmään samanaikaisesti. Siten NAS on erittäin kätevä malli jaetulle käyttäjä- tai sovellustiedolle.

NAS-tallennustilan avulla järjestelmänvalvojat voivat jakaa tallennustilan osia yksittäisiin tiedostojärjestelmiin. Jokainen tiedostojärjestelmä on yksi nimitila, ja tiedostojärjestelmä on ensisijainen yksikkö, jota käytetään NAS: n hallintaan.

Virtuaalinen tallennustila

Virtualisointi muutti modernin datakeskuksen maisemaa tallennusta varten samoin kuin laskennassa. Aivan kuten fyysiset koneet erotettiin virtuaalikoneiksi, fyysinen varastointi abstrakteiksi.

Virtualisoinnissa hypervisori tarjoaa emuloidun laitteistoympäristön jokaiselle virtuaalikoneelle, mukaan lukien tietokone, muisti ja tallennustila. VMware, alkuperäinen nykyaikainen hypervisori, päätti jäljitellä paikallisia fyysisiä levyasemia keinona tarjota tallennustilaa jokaiselle virtuaalikoneelle. Toisin sanoen, VMware valitsi paikallisen levyaseman (DAS) mallin tapa paljastaa tallennustila virtuaalikoneille.

Aivan kuten DAS-muistin perusyksikkö on fyysinen kone, virtuaalisen levytallennuksen perusyksikkö on virtuaalikone. Virtuaalilevyjä ei paljasteta itsenäisinä kohteina, vaan osana tiettyä virtuaalikonetta, aivan kuten paikalliset levyt ovat käsitteellisesti osa fyysistä tietokonetta. Kuten DAS: ssä, virtuaalilevy asuu ja kuolee itse virtuaalikoneen kanssa; jos virtuaalikone poistetaan, myös virtuaalilevy poistetaan.

Useimmat tavanomaiset virtualisointialustat käyttävät virtuaalilevytallennusmallia. Esimerkiksi VMware vSphere-, Microsoft Hyper-V-, Red Hat Enterprise Virtualization- ja Xen-ympäristöjen tallennustilaa hallitaan ja liitetään samalla tavalla.

Virtuaalilevyjen käyttöönotto

Koska VMware halusi edelleen tarjota jaetun tallennustilan etuja virtuaalikoneille, se ei voinut luottaa DAS-protokollaan virtuaalilevyjen toteuttamisessa. Seuraava ilmeinen vaihtoehto olisi käyttää SAN: ää, koska SAN LUN muistuttaa läheisesti paikallista levyasemaa.

Fyysisillä LUN-yksiköillä on kuitenkin rajoituksia, jotka tekevät haastavasta sopimuksesta virtuaalilevyille. Virtualisoidut ympäristöt yhdistävät useita loogisia tietokoneita yhdelle fyysiselle palvelimelle, mikä tarkoittaa, että tietyllä isännällä olevien virtuaalilevyjen määrä on paljon suurempi kuin fyysisen ympäristön isännän fyysisten LUN-lukumäärä. Tiettyyn fyysiseen palvelimeen liitettävien LUN-tiedostojen enimmäismäärä oli liian pieni tukemaan tarvittavaa määrää virtuaalilevyjä.

Ehkä vielä tärkeämpää on, että virtuaalilevyjen, kuten virtuaalisten suorittimienkin, on oltava loogisia objekteja, jotka voidaan luoda, tuhota ja siirtää ohjelmallisesti, eivätkä nämä ole toimintoja, joita SAN-varastointi on suunniteltu suorittamaan. Esimerkiksi VMware tarvitsi virtuaalikoneiden dynaamisen siirtämisen fyysisten isäntien välillä, mikä vaati jaettua tallennustilaa siirron aikana.

Näistä syistä VMware päätti ottaa virtuaalilevyt käyttöön tiedostoina tiedostojärjestelmässä (NFS) tai hajautetussa tiedostojärjestelmässä (VMFS) SAN: ssä, ei raakana LUN: na.

Tallennusprotokollista tallennusmalleihin

Se, että VMware päätti toteuttaa virtuaalilevyt, DAS-tyylinen lohkotallennusmalli NAS: n tai SAN: n lisäksi, havainnollistaa yhtä modernin datakeskustallennuksen mielenkiintoisista ominaisuuksista. Koska virtuaalikoneen IO luovutetaan hypervisorin ohjelmistolle eikä laiteväylän laitteistolle, virtuaalikoneen hypervisorin kanssa kommunikoinnissa käyttämän protokollan ei tarvitse vastata protokollaa, jota hypervisor käyttää yhteydenpitoon itse varastointi.

Tämä johtaa erotteluun tallennusmalli, joka altistetaan virtuaalikoneelle ja järjestelmänvalvojalle, ja tallennusprotokolla, jota hypervisori käyttää tietojen todelliseen tallentamiseen. Virtuaalilevyjen tapauksessa VMware suunnitteli ne DAS-tallennusmallin mukaan ja käytti sitten NAS-tallennusprotokollaa niiden toteuttamiseen.

Tämä on voimakas epäsuora kerros; se antaa meille joustavuuden sekoittaa ja sovittaa tallennusmalleja ja tallennusprotokollia ja jopa muuttaa dynaamisesti tallennusprotokollaa vaikuttamatta virtuaalikoneisiin. Esimerkiksi virtuaalilevyt toteutetaan käyttämällä tiedostoja NFS: ssä, FM Channel -kanaville tallennettuja VMFS-tiedostoja tai jopa (VVols tai Virtual Volumes) suoraan iSCSI LUN-tiedostoina. Toteutuksen valinta on sovellukselle täysin avoin, koska lopulta kaikki nämä protokollat ​​näyttävät samalta virtuaalikoneelta ja järjestelmänvalvojalta; ne näyttävät virtuaalikoneisiin liitetyistä paikallisista, fyysisistä levyasemista.

Siten sovelluskehittäjä useimmissa julkisissa pilvi-infrastruktuureissa ei voi tietää, mitä tallennusprotokollaa käytetään; itse asiassa protokolla voi jopa muuttua dynaamisesti. Emme tiedä, mitä tallennusprotokollaa Amazon käyttää elastiseen lohkotallennukseen, eikä myöskään ole meille tärkeää tietää.

Tallennusmallin ja tallennusprotokollan välisen eron takia tallennusprotokollasta tulee infrastruktuuriin liittyvä ongelma, joka on ensisijaisesti tärkeä kustannusten ja suorituskyvyn kannalta, eikä sovelluksiin liittyvä päätös, joka määrää toiminnallisuuden.

Pilvivarasto

Datakeskuksen maisema muuttuu jälleen, kun virtualisoidut ympäristöt muuttuvat pilviympäristöiksi. Pilviympäristöt kattavat virtualisoinnin edelläkävijän virtuaalilevymallin, ja ne tarjoavat uusia malleja täysin virtualisoidun tallennustilapinon mahdollistamiseksi. Pilviympäristöt yrittävät virtualisoida koko tallennustilapinon, jotta ne voivat tarjota itsepalvelua ja selkeän eron infrastruktuurin ja sovellusten välillä.

Pilviympäristöjä on monenlaisia. Yritykset voivat toteuttaa ne yksityisinä pilvipalveluina ympäristöissä, kuten OpenStack, CloudStack ja VMware vRealize Suite. Palveluntarjoajat voivat toteuttaa ne myös julkisina pilvinä, kuten Amazon Web Services, Microsoft Azure ja Rackspace.

Mielenkiintoista on, että pilviympäristöissä käytetyt tallennusmallit vastaavat peilikuvia, joita käytetään fyysisissä ympäristöissä. Kuten virtuaalilevyillä, ne ovat kuitenkin tallennusmalleja, jotka on erotettu useista tallennusprotokollista, joita voidaan käyttää niiden toteuttamiseen.

Ilmentymien tallennus: Virtuaalilevyt pilvessä

Virtuaalilevytallennusmalli on ensisijainen (tai ainoa) malli tavanomaisille virtualisoiduille ympäristöille. Pilviympäristöissä tämä malli on kuitenkin yksi kolmesta. Siksi mallille annetaan tietty nimi pilviympäristöissä: instanssitallennus, eli tavallisten virtuaalilevyjen tavoin kulutettu varastointi.

On tärkeää huomata, että instanssitallennus on tallennusmalli, ei tallennusprotokolla, ja se voidaan toteuttaa monin tavoin. Esimerkiksi instanssitallennus toteutetaan joskus käyttämällä DAS: ää itse solmuissa. Tällä tavoin sitä kutsutaan usein lyhytaikaiseksi tallennukseksi, koska varastointi ei yleensä ole kovin luotettavaa.

Ilmentymien tallennus voidaan toteuttaa myös luotettavana tallennustilana käyttämällä NAS- tai volyymivarastointia, toista seuraavaksi kuvattua tallennustilamallia. Esimerkiksi OpenStack antaa käyttäjille mahdollisuuden toteuttaa instanssitallennusta lyhytaikaisena tallennustilana isäntinä, tiedostoina NFS-kiinnityskohdissa tai Cinder-taltioina käynnistyslevystä.

Tilavuuden tallennus: SAN ei fyysinen

Ilmentymien tallennuksella on kuitenkin rajoituksia. Pilvipohjaisten sovellusten kehittäjät erottavat usein nimenomaisesti määritystiedot, kuten käyttöjärjestelmän ja sovellustiedot, käyttäjätiedoista, kuten tietokantataulukoista tai datatiedostoista. Jakamalla nämä kaksi kehittäjät voivat sitten tehdä kokoonpanosta ohimenevän ja uudelleenrakennettavan säilyttäen samalla vahvan luotettavuuden käyttäjätiedoille.

Tämä ero puolestaan ​​johtaa toisen tyyppiseen tallennustilaan: levytallennustilaan, esimerkkitallennuksen ja SAN: n yhdistelmään. Tilavuus on ensisijainen tilavuuden tallennusväline eikä virtuaalikone. Tilavuus voidaan irrottaa yhdestä virtuaalikoneesta ja liittää toiseen. Kuitenkin, kuten virtuaalilevy, äänenvoimakkuus muistuttaa tiedostoa enemmän kuin LUN mittakaavassa ja abstraktissa. Toisin kuin esimerkkitallennus, levytilan oletetaan yleensä olevan erittäin luotettava ja sitä käytetään usein käyttäjätietoihin.

OpenStack's Cinder on esimerkki volyymikaupasta, samoin kuin Dockerin itsenäinen volyymi. Huomaa vielä kerran, että levytallennus on tallennusmalli, ei tallennusprotokolla. Levytallennus voidaan toteuttaa tiedostoprotokollien, kuten NFS: n, tai lohkoprotokollien, kuten iSCSI, päälle sovellukselle avoimesti.

Objektin tallennus: Web-mittakaavan NAS

Pilvipohjaiset natiivisovellukset tarvitsevat myös kodin virtuaalikoneiden väliselle jaetulle tiedolle, mutta ne tarvitsevat usein nimitiloja, jotka voivat skaalata useisiin datakeskuksiin maantieteellisillä alueilla. Kohdetallennus tarjoaa täsmälleen tällaisen tallennustilan. Esimerkiksi Amazonin S3 tarjoaa yhden loogisen nimitilan koko alueelle ja epäilemättä koko maailmalle. Saavuttaakseen tämän asteikon S3: n täytyi uhrata perinteisen NAS: n vahva sakeus ja hienorakeiset päivitykset.

Objektitallennus tarjoaa tiedostomaisen abstraktion, jota kutsutaan objektiksi, mutta se tarjoaa mahdollisen johdonmukaisuuden. Tämä tarkoittaa, että vaikka kaikki asiakkaat saavat lopulta samat vastaukset pyyntöihinsä, he voivat tilapäisesti saada erilaisia ​​vastauksia. Tämä yhdenmukaisuus on samanlainen kuin Dropboxin tarjoama yhdenmukaisuus kahden tietokoneen välillä; asiakkaat voivat tilapäisesti ajautua pois synkronoinnista, mutta lopulta kaikki lähentyvät toisiaan.

Perinteiset objektimyymälät tarjoavat myös yksinkertaistetun joukon datatoimintoja, jotka on viritetty käytettäväksi suuriviiveisissä WAN-yhteyksissä: luetellaan objektit "ämpärissä", luetaan objekti kokonaisuudessaan ja korvataan objektin tiedot kokonaan uusilla tiedoilla. Tämä malli tarjoaa perustavanlaatuisemman toimintojoukon kuin NAS, jonka avulla sovellukset voivat lukea ja kirjoittaa pieniä lohkoja tiedostossa, katkaista tiedostoja uusiin kokoihin, siirtää tiedostoja hakemistojen välillä ja niin edelleen.

$config[zx-auto] not found$config[zx-overlay] not found