I dag skal vi snakke om en interessant teknologi implementert i lagringssystemet Unity/Unity XT â FAST VP. Hvis du hĂžrer om Unity for fĂžrste gang, finner du en lenke til systemspesifikasjonene pĂ„ slutten av artikkelen. I prosjektteamet hos Dell EMC har jeg jobbet med FAST VP i over ett Ă„r. I dag vil jeg fortelle mer om denne teknologien og avdekke noen detaljer om implementeringen. SelvfĂžlgelig bare de detaljene som kan deles. Hvis du er interessert i effektive datalagringsmetoder, eller hvis du ikke er helt sikker pĂ„ dokumentasjonen, vil denne artikkelen garantert vĂŠre nyttig og interessant.

La meg straks si hva dette materialet ikke vil inneholde. Det vil ikke vĂŠre noen sĂžk etter konkurrenter eller sammenligning med dem. Jeg planlegger heller ikke Ă„ diskutere lignende teknologier fra open source, fordi nysgjerrige lesere allerede vet om dem. Og selvfĂžlgelig har jeg ikke tenkt Ă„ reklamere for noe.
Lagringstiering. MÄl og oppgaver for FAST VP
FAST VP stÄr for Fully Automated Storage Tiering for Virtual Pool. Litt komplisert? Ingen fare, vi skal gÄ gjennom det. Tiering er en metode for datalagring der det finnes flere nivÄer (tiers) hvor dataene lagres. Hvert nivÄ har sine egne egenskaper. De viktigste er: ytelse, volum og pris for lagring av informasjon. SelvfÞlgelig er det en sammenheng mellom dem.
En viktig egenskap ved tiering er at tilgangen til dataene er ensartet, uavhengig av hvilket lagringsnivÄ de befinner seg pÄ, og stÞrrelsen pÄ lageret er lik summen av stÞrrelsene til ressursene som inngÄr i det. Her ligger forskjellene fra cache: stÞrrelsen pÄ cachen legges ikke til den totale stÞrrelsen pÄ ressursen (lageret i dette tilfellet), og cachedataene dupliserer et fragment av dataene pÄ hovedmediet (eller vil duplisere det hvis dataene fra cachen ennÄ ikke er lagret). Fordelingen av data pÄ nivÄene er ogsÄ skjult for brukeren. Det vil si at han ikke ser hvilke data som ligger pÄ hvert nivÄ, selv om han kan pÄvirke dette indirekte ved Ä angi politikker (om dem senere).
La oss nÄ se pÄ funksjonene ved implementeringen av lagringstiering i Unity. I Unity skilles det mellom 3 nivÄer eller tiers:
- Ekstrem ytelse (SSD-er)
- Ytelse (SAS HDD 10k/15k RPM)
- Lagringskapasitet (NL-SAS HDD 7200 RPM)
De er listet i synkende rekkefÞlge etter ytelse og pris. I Extreme performance inngÄr utelukkende solid state-disker (SSD). De to andre nivÄene har magnetiske lagringsmedier, som skiller seg i rotasjonshastighet og dermed ytelse.
InformasjonsbĂŠrere fra ett nivĂ„ og Ă©n stĂžrrelse kombineres i et RAID-array, som danner en RAID-gruppe (RAID group, forkortet â RG); du kan lese om tilgjengelige og anbefalte RAID-nivĂ„er i den offisielle dokumentasjonen. Fra RAID-grupper av ett eller flere nivĂ„er dannes lagringspuljer (Storage pool), deretter distribueres den ledige plassen. Fra puljen tildeles plass til filsystemer og LUN-er.

Hvorfor trenger jeg tiering?
Kort og abstrakt: for Ă„ oppnĂ„ et bedre resultat ved Ă„ bruke minimum ressurser. Mer konkret, omtales resultatet vanligvis som en samling egenskaper ved lagringssystemet â hastighet og tilgangstid, lagringskostnad og sĂ„ videre. Minimum ressurser refererer til de laveste kostnadene: penger, energi, osv. FAST VP implementerer nettopp mekanismer for omfordeling av data pĂ„ ulike nivĂ„er i Unity/Unity XT-lagringssystemet. Hvis du vil, kan du hoppe over neste avsnitt. For de andre vil jeg forklare litt mer.
Riktig omfordeling av data pÄ lagringsnivÄer lar deg spare pÄ de totale kostnadene ved lagringssystemet, ved Ä ofre tilgangshastigheten til noe sjeldent brukt informasjon, og Þke ytelsen ved Ä flytte ofte brukte data til raskere medier. Her kan noen innvende at selv uten tiering vet en god administrator hvor ulike data skal plasseres, hvilke Þnskelige egenskaper lagringssystemet bÞr ha for oppgaven, osv. Uten tvil er dette sant, men manuell fordeling av data har sine ulemper:
- det krever tid og oppmerksomhet fra administratoren;
- det er ikke alltid mulig Ă„ "tilpasse" ressursene i lagringssystemet til endrede forhold;
- et viktig fordel forsvinner: enhetlig tilgang til ressurser som er pÄ ulike lagringsnivÄer.
For storage admins to worry less about job security, I will add that proper resource planning is essential here as well. Now that the tasks of tiering have been briefly outlined, let's look at what can be expected from FAST VP. Now is the perfect time to return to the definition. The first two words â Fully Automated â translate literally to "full automation" and mean that tier distribution occurs automatically. And Virtual Pool refers to a data pool that includes resources from different storage levels. Here's how it looks:

To jump ahead, I will say that FAST VP only moves data within a single pool, not between multiple pools.
Tasks solved by FAST VP
Let's start with a general discussion. We have a pool and some mechanism that can redistribute data within that pool. Keeping in mind that our goal is to achieve maximum performance, let's ask the question: How can this be achieved? There may be several ways, and FAST VP has much to offer users, as the technology represents something more than just storage tiering. Here are ways FAST VP can enhance the performance of the pool:
- Data distribution across different types of disks and levels
- Data distribution among disks of the same type
- Data distribution during pool expansion
Before we delve into how these tasks are addressed, we need to know some necessary facts about how FAST VP works. FAST VP operates with blocks of a specific size â 256 megabytes. This is the minimum continuous "chunk" of data that can be moved. In the documentation, it is referred to as a slice. From the perspective of FAST VP, all RAID groups consist of a set of such "chunks." Accordingly, all input-output statistics are accumulated for such data blocks. Why is this particular block size chosen, and will it be reduced? The block is large enough, but this is a compromise between data granularity (smaller block size â more precise distribution) and the available computational resources: with existing strict memory limitations and a large number of blocks, data statistics can take up too much space, and the number of calculations will increase proportionally.
How FAST VP places data in the pool. Policies
For managing data placement in a pool with FAST VP enabled, there are the following policies:
- HÞyest tilgjengelig nivÄ
- Auto-nivÄ
- Start hÞy sÄ auto-nivÄ (standard)
- Lavest tilgjengelig nivÄ
De pÄvirker bÄde den opprinnelige plasseringen av blokken (data skrevet for fÞrste gang) og den pÄfÞlgende omfordelingen. NÄr dataene fÞrst er plassert pÄ diskene, vil omfordelingen bli initiert etter timeplan eller manuelt.
Highest Available Tier prÞver Ä plassere en ny blokk pÄ det mest ytelsesorienterte nivÄet. Hvis det ikke er nok plass pÄ det nivÄet, gÄr den til neste beste ytelse, men dataene kan deretter flyttes til et mer ytelsesorientert nivÄ (nÄr det er plass, eller ved Ä fortrenge andre data). Auto-Tier plasserer nye data pÄ forskjellige nivÄer avhengig av stÞrrelsen pÄ tilgjengelig plass, og de omfordeles basert pÄ etterspÞrselen og ledig plass. Start High then Auto-Tier er standardpolitikken og ogsÄ den anbefalte. Ved den opprinnelige plasseringen fungerer den som Highest Available Tier, og deretter skjer flyttingen av dataene basert pÄ bruksstatistikken. Politikken Lowest Available Tier prÞver Ä plassere dataene pÄ det minst ytelsesorienterte nivÄet.
Dataflytting skjer med lav prioritet for Ä ikke forstyrre den nyttige driften av lagringssystemet, men det er en innstilling kalt «Data relocation rate» som endrer prioriteten. Det er en spesiell egenskap her: ikke alle datablokker har samme prioritet for omfordeling. For eksempel vil blokker som er merket som metadata, bli flyttet til et raskere nivÄ fÞrst. Metadata er i sÄ mÄte 'data om data', en slags tilleggsinformasjon som ikke er brukerdata, men som lagrer beskrivelsen deres. For eksempel informasjon i filsystemet om hvilken blokk en bestemt fil befinner seg i. Det betyr at tilgangen til data avhenger av tilgangen til metadata. Gitt at metadata vanligvis er mye mindre i stÞrrelse, er gevinsten fra deres flytting til mer ytelsesorienterte disker forventet Ä vÊre stÞrre.
Kriteriene som Fast VP bruker i sitt arbeid
Hovudkriteriet for hver blokk, om vi skal vÊre veldig grove, er karakteristikken for «etterspÞrselen» etter data, som avhenger av antall lese- og skriveoperasjoner for datadelen. Denne karakteristikken kaller vi «Temperatur». Det finnes etterspurte (hot) data som er «varmere» enn ikke-etterspurte. Den beregnes periodisk, som standard med et intervall pÄ én time.
Funksjonen for Ă„ beregne temperatur har fĂžlgende egenskaper:
- NÄr det ikke er noe inn- eller utdata, «kjÞler» dataene over tid.
- Ved mer eller mindre jevn belastning over tid, stiger temperaturen fÞrst og stabiliseres deretter innenfor et visst omrÄde.
Deretter tas politikker omtalt ovenfor, samt ledig plass pÄ hvert nivÄ, i betraktning. For Ä illustrere dette, vil jeg bringe opp et bilde fra dokumentasjonen. Her er blokkene med hÞy, medium og lav temperatur merket med rÞdt, gult og blÄtt henholdsvis.

Men la oss gÄ tilbake til oppgavene. SÄ, vi kan begynne Ä se pÄ hva som gjÞres for Ä lÞse oppgavene til FAST VP.
A. Fordeling av data pÄ forskjellige typer disker, nivÄer
Dette er faktisk hovedoppgaven til FAST VP. De andre er pÄ en eller annen mÄte avledet fra den. Avhengig av valgt politikk, vil dataene bli fordelt pÄ forskjellige lagringsnivÄer. FÞrst og fremst vurderes plasseringPolitikk, deretter blokktemperatur og stÞrrelse/hastighet pÄ RAID-gruppene.
For politikkene HÞyeste/Laveste Tilgjengelige NivÄ er det ganske enkelt. For de to andre er saken slik. Dataene fordeles pÄ forskjellige nivÄer med hensyn til stÞrrelse og ytelse pÄ RAID-gruppene: slik at forholdet mellom den samlede blokkens «temperatur» og den «tevÊre maksimale ytelsen» til hver RAID-gruppe er omtrent lik. Dermed fordeles belastningen mer eller mindre jevnt. Mer etterspurte data flyttes til raske lagringsenheter, sjeldent brukte til langsommere. Ideelt sett skal fordelingen bli omtrent slik:

B. Fordeling av data mellom disker av samme type
Husker du, i begynnelsen nevnte jeg at lagringsmediene fra ett eller flere blokk nivÄer blir slÄtt sammen til en pool? I tilegg til det enkelt nivÄet for FAST VP, er det ogsÄ arbeid. For at ytelsen til et nivÄ skal vÊre maksimal, er det Þnskelig Ä fordele data jevnt mellom diskene. Dette vil (teoretisk) gi maksimal IOPS. Dataene inne i RAID-gruppen kan anses Ä vÊre jevnt fordelt pÄ diskene, men mellom RAID-grupper er det langt fra alltid slik. Ved ubalanse vil FAST VP flytte data mellom RAID-gruppene proporsjonalt med deres volum og «betinget ytelse» (i numerisk uttrykk). For Ä illustrere, vil jeg vise et rebalanseringsskjema mellom tre RAID-grupper:

B. Fordeling av data ved utvidelse av pool
Denne oppgaven er et spesialtilfelle av den forrige og utfÞres nÄr en RAID-gruppe legges til i poolen. For at den nylig tillagte RAID-gruppen ikke skal vÊre inaktiv, vil en del av dataene bli flyttet til den, og dermed vil belastningen fordeles om pÄ alle RAID-gruppene.
Ubalansert slitasje av SSD
Gjennom balansering av slitasje kan FAST VP forlenge levetiden til SSD, selv om denne funksjonen ikke direkte gjelder Storage Tiering. Siden temperaturopplysningene allerede er tilgjengelige, tas ogsÄ antall skriveoperasjoner i betraktning, og vi kan flytte datablokker, sÄ det ville vÊrt logisk for FAST VP Ä lÞse denne oppgaven.
Hvis antallet skriveoperasjoner til en RAID-gruppe betydelig overstiger antallet skriveoperasjoner til en annen, vil FAST VP omfordele dataene i samsvar med antall skriveoperasjoner. PÄ den ene siden reduserer dette belastningen og bevarer ressursene pÄ noen disker, mens det pÄ den annen side Þker «arbeidet» for mindre belastede, og forbedrer den totale ytelsen.
Dermed pÄtar FAST VP seg de tradisjonelle oppgavene med Storage Tiering, og gjÞr enda litt mer i tillegg. Alt dette gjÞr det mulig Ä lagre data ganske effektivt i Unity-familien av lagringssystemer.
Noen tips
- Ikke forsÞm Ä lese dokumentasjonen. Det finnes beste praksiser, og de fungerer ganske godt. Hvis man fÞlger dem, oppstÄr det vanligvis ikke alvorlige problemer. De andre tipsene gjentar eller supplerer dem for det meste.
- Dersom du har konfigurert og aktivert FAST VP, bÞr du la det stÄ pÄ. La det fordele data over tid, litt etter litt, i stedet for én gang i Äret med betydelig pÄvirkning pÄ ytelsen til andre oppgaver. I slike tilfeller kan datafordelingen ta lang tid.
- VÊr nÞye med valget av vindu for relokalisering. Selv om dette er Äpenbart, prÞv Ä velge et tidspunkt med minst belastning pÄ Unity, og sÞrg for Ä sette av tilstrekkelig tid.
- Planlegg utvidelsen av lagringssystemet, og gjÞr det i tide. Dette er et generelt rÄd som ogsÄ er viktig for FAST VP. Hvis mengden ledig plass er veldig lite, vil flytting av data bli forsinket eller bli umulig. Spesielt hvis du har oversett punkt 2.
- NÄr du utvider pulen med FAST VP aktivert, bÞr du ikke begynne med de tregeste diskene. Det vil si at vi enten legger til alle planlagte RAID-grupper samtidig, eller fÞrst legger til de raskeste diskene. I sÄ fall vil omfordeling av data pÄ de nye «raske» diskene Þke den totale hastigheten pÄ pulen. Hvis vi derimot starter med de «trege» diskene, kan det oppstÄ en veldig ubehagelig situasjon. FÞrst vil data bli overfÞrt til de nye, relativt sakte diskene, og deretter, nÄr raskere diskene legges til, vil det skje i motsatt retning. Her er det nyanser knyttet til forskjellige politikker for FAST VP, men i all hovedsak er en slik situasjon mulig.
Hvis du vurderer dette produktet, kan du prĂžve Unity gratis ved Ă„ laste ned Unity VSA virtuelle applikasjon.

Avslutningsvis deler jeg noen nyttige lenker:
- Side
- â en kort beskrivelse av funksjonen
- , pdf-format
Konklusjon
Det er mye jeg Þnsker Ä skrive om, men jeg forstÄr at ikke alle detaljer vil interessere leserne. For eksempel kan jeg utdype kriteriene FAST VP bruker for Ä ta beslutninger om datamigrering, og prosessene for analyse av inn- og utdata-statistikk. Temaet om samhandling med , er helt uteglemt, og det fortjener en egen artikkel. Man kan til og med spekulere om utviklingen av denne teknologien. Jeg hÄper det ikke ble for kjedelig, og at jeg ikke har utmattet dere. Vi sees neste gang!
Kilde: habr.com
