FAST VP pe stocarea Unity: cum funcționează

Astăzi vom vorbi despre o tehnologie interesantă implementată în sistemele de stocare Unity/Unity XT - FAST VP. Dacă este prima dată când auziți despre Unity, atunci puteți verifica caracteristicile sistemului folosind linkul de la sfârșitul articolului. Am lucrat la FAST VP în echipa de proiect Dell EMC timp de peste un an. Astăzi vreau să vorbesc despre această tehnologie mai detaliat și să dezvălui câteva detalii despre implementarea ei. Desigur, doar cele care au voie să fie dezvăluite. Dacă sunteți interesat de problemele de stocare eficientă a datelor sau pur și simplu nu ați înțeles pe deplin documentația, atunci acest articol va fi cu siguranță util și interesant.

FAST VP pe stocarea Unity: cum funcționează

Îți voi spune imediat ce nu va fi în material. Nu va exista nicio căutare a concurenților și comparație cu aceștia. De asemenea, nu intenționez să vorbesc despre tehnologii similare din open source, pentru că cititorul curios știe deja despre ele. Și, desigur, nu am de gând să fac reclamă pentru nimic.

Nivelul de stocare. Obiectivele și obiectivele FAST VP

FAST VP înseamnă Fully Automated Storage Tiring for Virtual Pool. Puțin dificil? Nicio problemă, o să ne dăm seama acum. Nivelarea este o modalitate de organizare a stocării datelor în care există mai multe niveluri (niveluri) în care sunt stocate aceste date. Fiecare are propriile sale caracteristici. Cele mai importante: performanța, volumul și prețul stocării unei unități de informații. Desigur, există o relație între ei.

O caracteristică importantă a nivelurilor este că accesul la date este asigurat uniform, indiferent de nivelul de stocare la care se află în prezent, iar dimensiunea pool-ului este egală cu suma dimensiunilor resurselor incluse în acesta. Aici se află diferențele față de memoria cache: dimensiunea memoriei cache nu este adăugată la volumul total al resursei (pool în acest caz), iar datele din cache dublează un fragment din datele media principale (sau se vor duplica dacă datele din cache nu au fost încă scrise). De asemenea, distribuirea datelor pe niveluri este ascunsă utilizatorului. Adică nu vede exact ce date se află la fiecare nivel, deși poate influența acest lucru indirect prin stabilirea politicilor (mai multe despre ele mai târziu).

Acum să ne uităm la caracteristicile implementării nivelurilor de stocare în Unity. Unity are 3 niveluri, sau nivel:

  • Performanță extremă (SSD-uri)
  • Performanță (SAS HDD 10k/15k RPM)
  • Capacitate (NL-SAS HDD 7200 RPM)

Sunt prezentate în ordine descrescătoare a performanței și prețului. Performanța extremă include doar unități cu stare solidă (SSD). Celelalte două niveluri includ unități de disc magnetice, care diferă ca viteză de rotație și, în consecință, performanță.

Mediile de stocare de același nivel și aceeași dimensiune sunt combinate într-o matrice RAID, formând un grup RAID (grup RAID, prescurtat ca RG); Puteți citi despre nivelurile RAID disponibile și recomandate în documentația oficială. Pool-urile de stocare sunt formate din grupuri RAID de la unul sau mai multe niveluri, din care apoi este distribuit spațiul liber. Și din pool este alocat spațiu pentru sistemele de fișiere și LUN-uri.

FAST VP pe stocarea Unity: cum funcționează

De ce am nevoie de nivelare?

Pe scurt și abstract: pentru a obține rezultate mai mari folosind un minim de resurse. Mai precis, rezultatul este de obicei înțeles ca un set de caracteristici ale sistemului de stocare - viteza și timpul de acces, costul de stocare și altele. Minimul de resurse înseamnă cea mai mică cheltuială: bani, energie și așa mai departe. FAST VP implementează mecanisme pentru redistribuirea datelor la diferite niveluri în sistemele de stocare Unity/Unity XT. Dacă mă credeți, atunci puteți sări peste următorul paragraf. În rest, vă mai spun puțin.

Distribuția corectă a datelor pe nivelurile de stocare vă permite să economisiți costul total al stocării prin sacrificarea vitezei de acces la unele informații rar utilizate și să îmbunătățiți performanța prin mutarea datelor utilizate frecvent pe medii mai rapide. Aici cineva ar putea argumenta că, chiar și fără nivelare, un administrator normal știe unde să plaseze ce date, care sunt caracteristicile de dorit ale unui sistem de stocare pentru sarcina sa etc. Acest lucru este, fără îndoială, adevărat, dar distribuirea manuală a datelor are dezavantajele sale:

  • necesită timp și atenție din partea administratorului;
  • Nu este întotdeauna posibilă „redesenarea” resurselor de stocare pentru a se potrivi condițiilor în schimbare;
  • dispare un avantaj important: accesul unificat la resursele situate la diferite niveluri de stocare.

Pentru ca administratorii de stocare să-și facă mai puțin griji cu privire la securitatea locurilor de muncă, voi adăuga că și aici este necesară o planificare competentă a resurselor. Acum că sarcinile de nivelare sunt subliniate pe scurt, să aruncăm o privire la ce vă puteți aștepta de la FAST VP. Acum este momentul să revenim la definiție. Primele două cuvinte – complet automatizat – sunt traduse literal ca „complet automatizat” și înseamnă că distribuția între niveluri are loc automat. Ei bine, Virtual Pool este un pool de date care include resurse de la diferite niveluri de stocare. Cam asa arata:

FAST VP pe stocarea Unity: cum funcționează

Privind în viitor, voi spune că FAST VP mută datele doar într-un singur pool, și nu între mai multe pool-uri.

Probleme rezolvate de FAST VP

Să vorbim mai întâi abstract. Avem un pool și un mecanism care poate redistribui datele în acest pool. Amintindu-ne că scopul nostru este să atingem productivitatea maximă, să ne întrebăm: prin ce modalități o putem atinge? S-ar putea să fie mai multe dintre ele, iar aici FAST VP are ceva de oferit utilizatorului, deoarece tehnologia este ceva mai mult decât un simplu nivel de stocare. Iată câteva modalități prin care FAST VP poate crește performanța piscinei:

  • Distribuția datelor pe diferite tipuri de discuri, niveluri
  • Distribuirea datelor între discuri de același tip
  • Distribuția datelor la extinderea pool-ului

Înainte de a ne uita la modul în care sunt rezolvate aceste sarcini, trebuie să cunoaștem câteva fapte necesare despre modul în care funcționează FAST VP. FAST VP operează cu blocuri de o anumită dimensiune - 256 megaocteți. Aceasta este cea mai mică „buncătură” contiguă de date care poate fi mutată. În documentație așa o numesc: felie. Din punctul de vedere al FAST VP, toate grupurile RAID constau dintr-un set de astfel de „piese”. În consecință, toate statisticile I/O sunt acumulate pentru astfel de blocuri de date. De ce a fost aleasă această dimensiune a blocului și va fi redusă? Blocul este destul de mare, dar acesta este un compromis între granularitatea datelor (dimensiunea mai mică a blocului înseamnă o distribuție mai precisă) și resursele de calcul disponibile: având în vedere limitările stricte existente asupra RAM și un număr mare de blocuri, datele statistice pot ocupa prea mult, iar numărul de calcule va crește proporțional.

Cât de FAST VP alocă date pool-ului. Politicienii

Pentru a controla plasarea datelor într-un pool cu ​​FAST VP activat, există următoarele politici:

  • Cel mai înalt nivel disponibil
  • Nivel automat
  • Start High, apoi Auto-Tier (implicit)
  • Cel mai mic nivel disponibil

Acestea afectează atât alocarea inițială a blocurilor (datele scrise mai întâi), cât și realocarea ulterioară. Când datele sunt deja localizate pe discuri, redistribuirea va fi inițiată conform unui program sau manual.

Cel mai înalt nivel disponibil încearcă să plaseze un nou bloc la nivelul cu cele mai înalte performanțe. Dacă nu există suficient spațiu pe el, acesta este plasat la următorul nivel cel mai productiv, dar apoi datele pot fi mutate la un nivel mai productiv (dacă există spațiu sau prin deplasarea altor date). Auto-Tier plasează date noi la diferite niveluri în funcție de cantitatea de spațiu disponibil și sunt redistribuite în funcție de cerere și de spațiul liber. Start High, apoi Auto-Tier este politica implicită și, de asemenea, recomandată. Când este plasat inițial, funcționează ca cel mai înalt nivel disponibil, iar apoi datele sunt mutate în funcție de statisticile de utilizare. Politica Nivelului cel mai scăzut disponibil urmărește să plaseze datele în nivelul cel mai puțin productiv.

Transferul de date are loc cu prioritate scăzută pentru a nu interfera cu funcționarea utilă a sistemului de stocare, cu toate acestea, există o setare „Rata de relocare a datelor” care modifică prioritatea. Există o particularitate aici: nu toate blocurile de date au aceeași ordine de redistribuire. De exemplu, blocurile marcate ca metadate vor fi mutate mai întâi la un nivel mai rapid. Metadatele sunt, ca să spunem așa, „date despre date”, unele informații suplimentare care nu sunt date de utilizator, ci stochează descrierea acesteia. De exemplu, informații din sistemul de fișiere despre blocul în care se află un anumit fișier. Aceasta înseamnă că viteza de acces la date depinde de viteza de acces la metadate. Având în vedere că metadatele sunt de obicei mult mai mici ca dimensiune, beneficiile mutării lor pe discuri cu performanțe mai mari sunt de așteptat să fie mai mari.

Criterii pe care Fast VP le folosește în activitatea sa

Criteriul principal pentru fiecare bloc, foarte aproximativ, este caracteristica „cererii” de date, care depinde de numărul de operații de citire și scriere a unui fragment de date. Numim această caracteristică „Temperatura”. Există date solicitate (fierbinte) care sunt „mai fierbinți” decât datele nerevendicate. Se calculează periodic, implicit la intervale de o oră.

Funcția de calcul al temperaturii are următoarele proprietăți:

  • În absența I/O, datele „se răcesc” în timp.
  • Sub sarcină mai mult sau mai puțin egală în timp, temperatura crește mai întâi și apoi se stabilizează într-un anumit interval.

În continuare, sunt luate în considerare politicile descrise mai sus și spațiul liber la fiecare nivel. Pentru claritate, voi oferi o poză din documentație. Aici culorile roșu, galben și albastru indică blocuri cu temperaturi ridicate, medii și, respectiv, scăzute.

FAST VP pe stocarea Unity: cum funcționează

Dar să revenim la sarcini. Deci, putem începe să analizăm ce se face pentru a rezolva problemele FAST VP.

A. Distribuția datelor pe diferite tipuri de discuri, niveluri

De fapt, aceasta este sarcina principală a FAST VP. Restul, într-un fel, sunt derivate ale acestuia. În funcție de politica selectată, datele vor fi distribuite pe diferite niveluri de stocare. In primul rand se tine cont de politica de plasare, apoi de temperatura blocului si de marimea/viteza grupurilor RAID.

Pentru politicile de nivel cel mai înalt/mai mic disponibil, totul este destul de simplu. Pentru celelalte două acesta este cazul. Datele sunt distribuite pe diferite niveluri, luând în considerare dimensiunea și performanța grupurilor RAID: astfel încât raportul dintre „temperatura” totală a blocurilor și „performanța maximă condiționată” a fiecărui grup RAID să fie aproximativ același. Astfel, sarcina este distribuită mai mult sau mai puțin uniform. Mai multe date solicitate sunt mutate pe medii de stocare rapide, iar datele utilizate rar sunt mutate pe medii mai lente. În mod ideal, distribuția ar trebui să arate cam așa:

FAST VP pe stocarea Unity: cum funcționează

B. Distribuția datelor între discuri de același tip

Amintiți-vă, la început am scris acel suport de stocare din una sau mai multe nivelurile sunt combinate într-un singur bazin? În cazul unui singur nivel, FAST VP mai are de lucru. Pentru a obține performanțe maxime la orice nivel, este recomandabil să distribuiți datele în mod uniform între discuri. Acest lucru vă va permite (teoretic) să obțineți cantitatea maximă de IOPS. Datele dintr-un grup RAID pot fi considerate distribuite uniform pe discuri, dar acest lucru nu este întotdeauna cazul între grupurile RAID. În cazul unui dezechilibru, FAST VP va muta datele între grupurile RAID proporțional cu volumul și „performanța condiționată” (în termeni numerici). Pentru claritate, voi arăta o schemă de reechilibrare între trei grupuri RAID:

FAST VP pe stocarea Unity: cum funcționează

B. Distribuția datelor la extinderea pool-ului

Această sarcină este un caz special al celei anterioare și este efectuată atunci când un grup RAID este adăugat la pool. Pentru a vă asigura că grupul RAID nou adăugat nu rămâne inactiv, unele dintre date vor fi transferate către acesta, ceea ce înseamnă că încărcarea va fi redistribuită în toate grupurile RAID.

Nivelarea uzurii SSD

Prin utilizarea nivelării uzurii, FAST VP poate prelungi durata de viață a unui SSD, deși această caracteristică nu este direct legată de Storage Tiering. Deoarece datele de temperatură sunt deja disponibile, se ia în considerare și numărul de operații de scriere și știm cum să mutăm blocurile de date, ar fi logic ca FAST VP să rezolve această problemă.

Dacă numărul de intrări dintr-un grup RAID depășește semnificativ numărul de intrări dintr-un altul, FAST VP va redistribui datele în funcție de numărul de operațiuni de scriere. Pe de o parte, acest lucru ușurează sarcina și economisește resursele unor discuri, pe de altă parte, adaugă „muncă” pentru cele mai puțin încărcate, crescând performanța generală.

În acest fel, FAST VP preia provocările tradiționale ale Storage Tiering și face puțin mai mult decât atât. Toate acestea vă permit să stocați datele destul de eficient în sistemul de stocare Unity.

Câteva sfaturi

  1. Nu neglijați citirea documentației. Există cele mai bune practici și funcționează destul de bine. Dacă le urmați, atunci, de regulă, nu apar probleme serioase. Restul sfaturilor practic le repetă sau le completează.
  2. Dacă ați configurat și activat FAST VP, este mai bine să îl lăsați activat. Lăsați-l să distribuie datele în timpul alocat și puțin câte puțin de o dată pe an și având un impact grav asupra îndeplinirii altor sarcini. În astfel de cazuri, redistribuirea datelor poate dura mult timp.
  3. Fiți atenți când alegeți o fereastră de relocare. Deși acest lucru este evident, încercați să alegeți un timp cu cea mai mică încărcare pentru Unity și să alocați o perioadă suficientă de timp.
  4. Planifică să-ți extinzi sistemul de stocare, fă-o la timp. Aceasta este o recomandare generală care este importantă și pentru FAST VP. Dacă spațiul liber este foarte mic, atunci mișcarea datelor va încetini sau va deveni imposibilă. Mai ales dacă ai neglijat punctul 2.
  5. Când extindeți un pool cu ​​FAST VP activat, nu ar trebui să începeți cu cele mai lente discuri. Adică, fie adăugăm toate grupurile RAID planificate simultan, fie adăugăm mai întâi cele mai rapide discuri. În acest caz, redistribuirea datelor pe noi discuri „rapide” va crește viteza totală a pool-ului. În caz contrar, începerea cu discuri „lente” poate duce la o situație foarte neplăcută. Mai întâi, datele vor fi transferate pe discuri noi, relativ lente, iar apoi, când se adaugă altele mai rapide, în direcția opusă. Există aici nuanțe legate de diferite politici FAST VP, dar, în general, o situație similară este posibilă.

Dacă vă uitați la acest produs, puteți încerca Unity gratuit, descarcând dispozitivul virtual Unity VSA.

FAST VP pe stocarea Unity: cum funcționează

La sfârșitul materialului, împărtășesc câteva link-uri utile:

Concluzie

Mi-ar plăcea să scriu multe, dar înțeleg că nu toate detaliile vor fi interesante pentru cititor. De exemplu, puteți vorbi mai detaliat despre criteriile după care FAST VP ia decizii cu privire la transferul de date, despre procesele de analiză a statisticilor I/O. De asemenea, subiectul interacțiunii cu Bazine dinamice, iar acesta merită un articol separat. Puteți chiar să fantezi despre dezvoltarea acestei tehnologii. Sper că nu a fost plictisitor și că nu te-am plictisit. Ne mai vedem!

Sursa: www.habr.com

Adauga un comentariu