Elemente de bază ale Platformei de virtualizare Flash (FVP), partea 2. Folosind propria platformă sau sistem de fișiere

Unul dintre subiectele pe care le-am discutat cu Satyam și Murali Vilayannur a fost sistemul de fișiere care este folosit pentru stocarea datelor pe dispozitive flash. Următoarele fapte notabile trebuie ținute cont: Satyam a creat VMFS3, Murali a fost principalul dezvoltator al VMFS5. Din acest punct de vedere, utilizarea VMFS ar părea evidentă. Cu toate acestea, marea surpriză pentru mine a fost faptul că pentru dispozitivele flash nu folosim VMFS, o surpriză și mai mare a fost că nu folosim deloc sistemul de fișiere.

De ce nu VMFS?
Sistemele de fișiere oferă funcții care nu sunt necesare și, uneori, chiar sunt în conflict cu cerințele platformei care procesează I / O active pe dispozitive flash. Una dintre cele mai mari probleme cu utilizarea unui sistem de fișiere similar cu VMFS pe un dispozitiv flash este că este optimizat pentru sistemele de stocare SAN și modelele lor de gestionare a datelor; Satyam a scris un articol despre ACM în timp ce lucra în VMware. Din păcate, acest lucru face sistemul de fișiere un instrument inadecvat pentru sarcinile FVP.

Sistemele de fișiere cu adrese directe suprasolicită dispozitivele flash, reducându-le durata de viață, nu procesează în mod optim operațiile I / O arbitrare, testează algoritmii de colectare a gunoiului (adesea foarte fragili) pentru rezistență, iar obiectele (fișierele și directoarele) nivelul mașinilor virtuale și managementul calității serviciilor, ceea ce este extrem de important pentru sarcinile FVP. Următoarea secțiune va detalia problema gestionării datelor pe dispozitivele flash, dar pentru moment o concluzie succintă: dacă dispozitivul dvs. flash este scump pentru dvs., nu puneți un sistem de adresare direct pe el.

Sistemele de fișiere oferă, de asemenea, capabilități care depășesc cu mult nevoile FVP. De exemplu, blochează discul. VMFS are un manager avansat de blocare distribuit care controlează accesul diferitelor gazde ESXi la discuri. FVP gestionează discurile locale ale gazdei și nu necesită încuietori pe alte gazde, ca urmare managerul de blocare distribuit devine complet inutil. Același lucru se poate spune despre compatibilitatea POSIX și tranzacțiile distribuite. Și așa mai departe.

Operațiuni de bliț la nivel scăzut
Iată un exemplu despre modul în care scrierea pe dispozitivele flash este fundamental diferită de cea înregistrată pe hard disk-uri. Flash nu poate suprascrie datele existente. Datele din memoria flash pot fi scrise numai pe o pagină goală. O caracteristică a memoriei flash este că înregistrarea se poate face prin pagini, iar ștergerea se poate face numai în blocuri. Ce este o pagină și ce este un bloc? Flash stochează datele în celule; celulele sunt combinate în pagini (4 KB); paginile sunt grupate în blocuri. Majoritatea producătorilor combină 128 de pagini într-un singur bloc. Dacă doriți să ștergeți pagina, trebuie să ștergeți întregul bloc. Toate datele necesare din alte pagini ar trebui salvate în altă parte. Este cunoscut faptul că dispozitivele flash au un număr limitat de cicluri de scriere și de ștergere.

În consecință, o scriere aleatorie I / O poate avea un impact mai mare decât credeți. Problema este că majoritatea sistemelor de fișiere au fost dezvoltate în anii '80 și '90 și nu au progresat de atunci. Sistemele de fișiere nu iau în considerare degradarea performanțelor pe care le provoacă pentru a bloca dispozitivele utilizând operații la nivel scăzut proiectate pentru hard disk-uri; Majoritatea producătorilor de dispozitive flash implementează diverse mecanisme care să contribuie la degradarea performanțelor progresive. Cu ajutorul mai multor scheme, luăm în considerare aceste mecanisme și aflăm de ce fragmentarea are un astfel de efect asupra dispozitivelor flash.

Managementul uzurii
Rețineți, pentru simplitate, am decis să afișați 9 pagini într-un bloc în loc de 128 de pagini pe bloc.

Să începem cu procesul de uzură. În acest exemplu, aplicația a creat deja datele și le-a înregistrat în paginile A, B și C din blocul 1 (Etapa 1). Se primesc date noi (pasul 2), care este scris în paginile D, E și F. Aplicația actualizează datele anterioare (AC) și, în loc să folosească paginile anterioare, dispozitivul flash continuă să folosească noile pagini. Aceste date noi sunt etichetate A-1, B-1 și C-1. Distribuirea înregistrărilor cât mai uniform posibil se numește "managementul uzurii". Paginile vechi sunt acum marcate ca expirat.

Colectarea gunoiului și intrarea multiplă
În acest exemplu, blocul A este plin, ceea ce se întâmplă dacă spațiul disponibil pentru utilizator pentru înregistrare a expirat și sosesc date noi?

Flash va copia datele curente în celule goale. Datele reale din bloc sunt citite și scrise într-un alt bloc. Datele restante vor rămâne în paginile lor și vor fi șterse împreună cu restul paginilor bloc. Acest proces se numește "colectare de gunoi".

Colectarea gunoiului este bine, dar intrarea multiplă care apare în timpul funcționării sale provoacă daune semnificative dispozitivelor flash. Pentru a înregistra 3 pagini, dispozitivul flash trebuie să citească 6 pagini și să scrie cele 6 pagini în alt loc înainte de a putea scrie noi date. Și nu uitați de ciclul de ștergere. Să presupunem că un scenariu în care discul este plin, unde vom muta (temporar) datele înainte de a înregistra noi date? În diagrama mea, am adăugat blocul B pentru această opțiune. Pentru a face acest lucru într-o situație reală (atunci când utilizați sistemul de fișiere), trebuie să alocați excesul de spațiu rezervat de blițul controlerului.

Pentru a face acest lucru într-o situație reală (atunci când utilizați sistemul de fișiere), trebuie să alocați excesul de spațiu rezervat de blițul controlerului

Spațiu excesiv
Capacitatea blițului poate fi rezervată proceselor gestionate de un controler de bliț. Acest lucru se poate face atât de către producătorul dispozitivului flash, cât și de către utilizator. De exemplu, când cumperi un accelerator PCIe flash de 160 GB, de fapt, primești o cartelă de 192 GB. 160 GB sunt disponibile pentru utilizator și 32 GB sunt rezervate suplimentar pentru operațiile la nivel de controler de nivel flash, cum ar fi colectarea de gunoi, corectarea erorilor și firmware-ul controlerului. Când achiziționați o unitate SSD non-industrială, obțineți de obicei un mic spațiu rezervat în exces. Când formatați acest dispozitiv flash în orice sistem de fișiere, trebuie să știți aceste caracteristici și, eventual, să rezervați spațiu suplimentar în afara capacității disponibile. În prezent, nu există recomandări standardizate de scalare, deci trebuie să faceți alegeri pe baza experienței proprii. În cel mai rău caz, veți găsi un disc fragmentat, iar SSD va trebui să transfere în mod constant date pentru a scrie altele noi. Imaginați-vă că copiii se joacă, doar modelul mișcării este puțin mai complicat.

Reconsiderarea gestionării datelor pe dispozitive flash
Inginerii PernixData au dezvoltat un nou format pentru gestionarea datelor pe dispozitivele flash pentru FVP. Detaliile vor fi dezvăluite în următoarele articole, iar acum câteva puncte fundamentale.

Optimizat pentru bliț
Formatul este conceput pentru a stoca date temporare de intrare / ieșire cu setul minim de metadate posibil și pentru a lucra cu un dispozitiv flash cu performanța maximă disponibilă pentru acesta. Convertește intrările aleatorii la cele consecutive, pentru a profita de performanța blițului superior în modul de scriere secvențială. Acest lucru reduce numărul de suprascriere de date redundante și cicluri de ștergere. Și algoritmul nu conține limitările moștenite ale sistemelor de fișiere, cum ar fi dimensiunile mari ale blocurilor, directoarele, fișierele, tranzacțiile lungi, managerii de blocare etc.

Capacitatea dinamică partajată între mașinile virtuale
mulțumesc integrare profundă Cu VMkernel, FVP poate urmări blocurile de date și poate determina dacă mașina lor virtuală citește sau scrie. Urmărirea independentă a unor astfel de operațiuni, platforma poate scala tampoanele de citire și scriere în spațiul alocat mașinii virtuale. FVP poate memora cache-ul sau șterge un set arbitrar de date despre mașină virtuală din memoria cache. În schimb, politica de evacuare a datelor din sistemul tradițional de fișiere pentru un dispozitiv flash va fi suboptimală și va avea ca rezultat rescrieri multiple, deoarece sistemul de fișiere poate scrie numai date la sfârșitul fișierului sau poate șterge blocuri de la capăt, de asemenea.

De asemenea, înseamnă că nu este necesar să atribuiți o configurație spațială cache pentru fiecare mașină virtuală, așa cum ar fi dacă utilizați un sistem de fișiere cu adresare directă. A fost o mare decizie pentru noi; experiența utilizatorilor din produs ar trebui să fie cât mai intuitivă posibil.

Citez managerul nostru de produse Bala: "Eleganța produsului, în opinia mea, este că îndeplinește sarcini de bază, care nu necesită acțiuni noi sau neobișnuite de la utilizator."

În ceea ce privește munca de zi cu zi, acest lucru este excelent: nu este necesar să pre-scară cache-ul pentru fiecare mașină virtuală. Aceasta înseamnă că nu este nevoie să cunoașteți și să prezicați utilizarea ulterioară a fulgerului - FVP va face totul pentru dvs. Lipsa unei alocări dure de resurse înseamnă lipsa subutilizării flash-ului de către mașinile virtuale descărcate și apariția ciclurilor redundante de curățare a blocurilor pentru mașinile virtuale active cu o dimensiune insuficientă a cache-ului flash. Acest lucru minimizează problema înregistrărilor multiple și asigură performanța maximă și fiabilitatea dispozitivelor flash.

Articolul original .

Din 2016, FVP a fost retras din vânzare.

De ce nu VMFS?
Ce este o pagină și ce este un bloc?
Să presupunem că un scenariu în care discul este plin, unde vom muta (temporar) datele înainte de a înregistra noi date?

Новости