Pagrindiniai „Flash Virtualization Platform“ (FVP) elementai, 2 dalis. Savo platformos ar failų sistemos naudojimas

Viena iš temų, kurias aptariau su Satyam ir Murali Vilayannur, buvo failų sistema, naudojama duomenims saugoti „flash“ įrenginiuose. Reikėtų atkreipti dėmesį į šiuos svarbius faktus: Satyam sukūrė VMFS3, Murali buvo pirmaujanti VMFS5 kūrėja. Šiuo požiūriu VMFS naudojimas būtų akivaizdus. Tačiau man buvo didelis siurprizas, kad naudojant „flash“ įrenginius nenaudojame „VMFS“, o dar didesnis siurprizas buvo tai, kad nenaudojame failų sistemos.

Kodėl gi ne VMFS?
Failų sistemos suteikia funkcijų, kurių nereikia ir kartais netgi prieštarauja platformos, kuri apdoroja aktyviuosius I / O blykstės įrenginiuose, reikalavimus. Viena iš didžiausių problemų naudojant „Flash“ įrenginyje panašią į „VMFS“ failų sistemą yra ta, kad ji yra optimizuota SAN saugojimo sistemoms ir jų duomenų valdymo modeliams; Dirbdamas VMware, „Satyam“ parašė straipsnį apie tai ACM. Deja, dėl to failų sistema tampa netinkama FVP užduočių priemonė.

Tiesioginių adresų failų sistemos perkrovos blykstės įrenginiai, mažinantys jų naudojimo trukmę, optimaliai neapdoroja savavališkų I / O operacijų, išbando jų (dažnai labai trapius) šiukšlių surinkimo algoritmus stiprumui ir jų objektai (failai ir katalogai) yra mažiau tinkami virtualios mašinos lygis ir paslaugų valdymo kokybė, kuri yra labai svarbi FVP užduotims. Kitame skyriuje bus išsamiai aprašyta duomenų tvarkymo „flash“ įrenginiuose problema, tačiau trumpai daroma išvada: jei jūsų „flash“ įrenginys jums yra brangus, nedėkite tiesioginės adresų failų sistemos.

Failų sistemos taip pat suteikia galimybes, kurios labai viršija FVP poreikius. Pavyzdžiui, diskų užraktai. „VMFS“ turi išplėstinį paskirstytą užrakto tvarkyklę, kuri kontroliuoja įvairių ESXi kompiuterių prieigą prie diskų. FVP valdo vietinius kompiuterio diskus ir nereikalauja užrakinti kitų kompiuterių, todėl paskirstyto užrakto tvarkyklė tampa visiškai nereikalinga. Tas pats pasakytina apie POSIX suderinamumą ir paskirstytus sandorius. Ir taip toliau.

Žemo lygio blykstės operacijos
Štai pavyzdys, kaip rašymas į „flash“ įrenginius iš esmės skiriasi nuo įrašų standžiajame diske. „Flash“ negali perrašyti esamų duomenų. „Flash“ atmintyje esantys duomenys gali būti rašomi tik tuščiame puslapyje. „Flash“ atminties funkcija yra ta, kad įrašymas gali būti atliekamas puslapiais, o ištrynimas gali būti atliekamas tik blokais. Kas yra puslapis ir kas yra blokas? „Flash“ saugo duomenis ląstelėse; ląstelės yra sujungtos į puslapius (4 KB); puslapiai yra suskirstyti į blokus. Dauguma gamintojų sujungia 128 puslapius į vieną bloką. Jei norite ištrinti puslapį, reikia ištrinti visą bloką. Visi reikalingi duomenys iš kitų puslapių turėtų būti išsaugoti kitur. Plačiai žinoma, kad „flash“ įrenginiuose yra ribotas rašymo ir ištrynimo ciklų skaičius.

Todėl atsitiktinis I / O rašymas gali turėti didesnį poveikį nei jūs manėte. Problema yra ta, kad dauguma failų sistemų buvo sukurtos devintajame ir devintajame dešimtmetyje ir nuo to laiko nebuvo pažengusios. Failų sistemose neatsižvelgiama į našumo blogėjimą, kurį jie sukelia „flash“ įrenginiams, naudojantiems žemo lygio operacijas, skirtas kietiesiems diskams; Dauguma „flash“ įrenginių gamintojų įgyvendina įvairius mechanizmus, kad būtų atsižvelgta į pažangų veikimo pablogėjimą. Naudodamiesi keliomis schemomis, mes svarstome šiuos mechanizmus ir išsiaiškiname, kodėl fragmentacija turi tokį poveikį „flash“ įrenginiams.

Dėvėjimo valdymas
Atkreipkite dėmesį, kad dėl paprastumo nusprendžiau rodyti 9 puslapius viename bloke, o ne 128 puslapiuose viename bloke.

Pradėkime nuo nusidėvėjimo valdymo proceso. Šiame pavyzdyje programa jau sukūrė duomenis ir įrašė juos A, B ir C puslapiuose 1 langelyje (1 veiksmas). Atvyksta nauji duomenys (2 veiksmas), parašytas D, E ir F puslapiuose. Programa atnaujina ankstesnius duomenis (AC), o vietoj ankstesnių puslapių blykstės įrenginys ir toliau naudoja naujus puslapius. Šie nauji duomenys yra pažymėti A-1, B-1 ir C-1. Įrašų skleidimas kuo tolygiau vadinamas „nusidėvėjimo valdymu“. Senieji puslapiai dabar pažymėti kaip pasibaigę.

Šiukšlių surinkimas ir daugkartinis įvedimas
Šiame pavyzdyje „A“ blokas yra pilnas, kas atsitinka, jei naudotojui prieinama įrašymo vieta baigėsi ir atsiranda naujų duomenų?

„Flash“ kopijuos dabartinius duomenis į tuščias ląsteles. Faktiniai duomenys bloke skaitomi ir įrašomi į kitą bloką. Pavėluoti duomenys liks jo puslapiuose ir bus ištrinti kartu su likusiais blokų puslapiais. Šis procesas vadinamas „šiukšlių surinkimu“.

Šiukšlių surinkimas yra gerai, tačiau daugkartinis įrašas, kuris įvyksta jo veikimo metu, sukelia didelę žalą „flash“ įrenginiams. Norėdami įrašyti 3 puslapius, blykstės įrenginys turi perskaityti 6 puslapius ir 6 puslapius įrašyti į kitą vietą, kol jis gali rašyti naujus duomenis. Ir nepamirškite apie ištrinimo ciklą. Tarkime, kad scenarijus, kuriame diskas yra pilnas, kur mes (laikinai) perkeliame duomenis prieš įrašant naujus duomenis? Diagramoje pridėjau šią parinktį B bloką. Tam, kad tai padarytumėte realioje situacijoje (naudojant failų sistemą), turite priskirti valdiklio blykstę.

Tam, kad tai padarytumėte realioje situacijoje (naudojant failų sistemą), turite priskirti valdiklio blykstę

Perteklinė erdvė
Blykstės talpą galima rezervuoti procesams, kuriuos valdo „flash“ valdiklis. Tai gali atlikti ir „flash“ įrenginio gamintojas, ir vartotojas. Pavyzdžiui, perkant 160 GB „Flash PCIe“ akceleratorių, iš tikrųjų gaunate 192 GB kortelę. 160 GB yra prieinami vartotojui ir 32 GB yra papildomai skirti blykstės lygio valdiklio lygmens operacijoms, pvz., Šiukšlių surinkimui, klaidų taisymui ir valdiklio programinei įrangai. Perkant ne pramoninį SSD diską, paprastai būna šiek tiek rezervuota perteklinė erdvė. Formatuodami šį „flash“ įrenginį bet kurioje failų sistemoje, turėtumėte žinoti apie šias funkcijas ir, galbūt, rezervuoti papildomą vietą už turimos talpos. Šiuo metu nėra standartizuotų mastelio rekomendacijų, todėl jūs turite pasirinkti pagal savo patirtį. Blogiausiu atveju atsidursite susiskaldžiusiame diske, o SSD turės nuolat perduoti duomenis, kad galėtumėte rašyti naujus. Įsivaizduokite vaikus žaisdami žymą, tik judėjimo modelis yra šiek tiek sudėtingesnis.

Persvarstyti duomenų valdymą „flash“ įrenginiuose
PernixData inžinieriai sukūrė naują „Flash“ įrenginių duomenų tvarkymo formatą. Išsami informacija bus atskleista šiuose straipsniuose, o dabar - keliuose pagrindiniuose punktuose.

Optimizuota blykstei
Formatas skirtas laikinajam I / O duomenų saugojimui su minimaliu galimu metaduomenų rinkiniu ir dirbti su „flash“ įrenginiu su didžiausiu galimu našumu. Jis konvertuoja atsitiktinius įrašus iš eilės, kad išnaudotų didesnį blykstės našumą nuosekliu rašymo režimu. Tai sumažina nereikalingų duomenų perrašymo ir ištrynimo ciklų skaičių. Be to, algoritme nėra paveldėtų failų sistemų apribojimų, tokių kaip dideli blokų dydžiai, katalogai, failai, ilgos operacijos, užrakto valdytojai ir kt.

Dinamiškai dalijamasis pajėgumas tarp virtualių mašinų
Ačiū gilios integracijos Su „VMkernel“ FVP gali stebėti duomenų blokus ir nustatyti, ar jų virtualioji mašina skaito ar rašo. Nepriklausomai stebėdamas tokias operacijas, platforma gali skaityti skaitymo ir rašymo buferius virtualioje mašinoje skirtoje erdvėje. FVP gali talpinti arba ištrinti savavališką virtualių mašinų duomenų rinkinį iš talpyklos. Priešingai, tradicinių „flash“ įrenginių failų evakuacijos politika bus neoptimali ir dėl to bus perrašyta daug kartų, nes failų sistema gali įrašyti duomenis tik į failo pabaigą arba ištrinti blokus nuo pabaigos.

Tai taip pat reiškia, kad jums nereikia priskirti statinės talpyklos erdvės konfigūracijos kiekvienai virtualiai mašinai, kaip būtų, jei naudojate failų sistemą su tiesioginiu adresavimu. Tai buvo puikus sprendimas mums; vartotojo patirtis iš produkto turėtų būti kuo intuityvesnė.

Citinuojau mūsų produktų vadybininką Bala: „Produkto elegancija, mano nuomone, yra tai, kad ji atlieka pagrindinius uždavinius, kuriems nereikia jokių naujų ar neįprastų veiksmų.

Kalbant apie kasdienį darbą, tai yra puikus: nereikia iš anksto nustatyti kiekvieno virtualios mašinos talpyklos. Tai reiškia, kad jums nereikia žinoti ir numatyti būsimo „flash“ naudojimo - FVP padarys viską už jus. Sunkių išteklių paskirstymo stoka reiškia, kad neišnaudotų virtualių mašinų blykstė nepakankamai panaudota, o aktyvių virtualių mašinų su nepakankamu „flash“ talpyklos dydžiu atsiranda nereikalingų blokų valymo ciklų. Tai sumažina keleto įrašų problemą ir užtikrina maksimalų „flash“ įrenginių veikimą ir patikimumą.

Originalus straipsnis .

Nuo 2016 m. FVP pasitraukė iš pardavimo.

Kodėl gi ne VMFS?
Kas yra puslapis ir kas yra blokas?
Tarkime, kad scenarijus, kuriame diskas yra pilnas, kur mes (laikinai) perkeliame duomenis prieš įrašant naujus duomenis?