Flash Virtualization Platformi (FVP) põhielemendid, 2. osa. Oma platvormi või failisüsteemi kasutamine

Üks teemasid, mida ma Satyami ja Murali Vilayannuriga arutasin, oli failisüsteem, mida kasutatakse flash-seadmetes andmete salvestamiseks. Tuleb meeles pidada järgmisi tähelepanuväärseid fakte: Satyam lõi VMFS3, Murali oli VMFS5 juhtiv arendaja. Sellest vaatenurgast tundub VMFSi kasutamine ilmselge. Kuid suur üllatus minu jaoks oli see, et välisseadmete puhul ei kasuta me VMFS-i, veelgi suurem üllatus oli see, et me ei kasuta failisüsteemi üldse.

Miks mitte VMFS?
Failisüsteemid pakuvad funktsioone, mida ei ole vaja ja mõnikord isegi vastuolus platvormi nõuetega, mis töötlevad aktiivsele I / O-le välklampides. Üks suurimaid probleeme VMFS-i sarnase failisüsteemi kasutamisel flash-seadmes on see, et see on optimeeritud SAN-salvestussüsteemide ja nende andmehaldusmudelite jaoks; Satyam kirjutas selle kohta ACM-ile artikli VMware'is töötamise kohta. Kahjuks muudab failisüsteem FVP ülesannete jaoks sobimatuks tööriistaks.

Otsese aadressifailisüsteemi ülekoormuse välklambid, mis vähendavad nende eluiga, ei töötle optimaalselt suvalisi I / O operatsioone, testivad nende (sageli väga habras) prügi kogumise algoritme tugevuse jaoks ning nende objektid (failid ja kataloogid) on vähem sobivad virtuaalse masina tase ja teenuste haldamise kvaliteet, mis on FVP ülesannete jaoks äärmiselt oluline. Järgmises osas kirjeldatakse üksikasjalikult flash-seadmete andmete haldamise probleemi, kuid nüüd on lühike järeldus: kui teie flash-seade on teile kallis, ärge pange sellele otsest adresseerimissüsteemi.

Failisüsteemid pakuvad ka võimalusi, mis ületavad oluliselt FVP vajadusi. Näiteks ketaslukud. VMFS-il on täiustatud hajutatud lukustushaldur, mis kontrollib erinevate ESXi hostide juurdepääsu kettale. FVP haldab peremehe kohalikke plaate ja ei nõua lukustusi teistes hostides, mistõttu jagatud lukustushaldur muutub täiesti ülearuseks. Sama võib öelda ka POSIXi ühilduvuse ja hajutatud tehingute kohta. Ja nii edasi.

Madala taseme välklambid
Siin on näide sellest, kuidas flash-seadmetele kirjutamine erineb oluliselt kõvakettal olevate salvestiste hulgast. Flash ei saa olemasolevaid andmeid üle kirjutada. Flash-mälu andmeid saab kirjutada ainult tühjal lehel. Välkmälu funktsiooniks on see, et salvestusi saab teha lehekülgedel ja kustutamist saab teha ainult plokkidena. Mis on leht ja mis on plokk? Flash salvestab andmeid lahtritesse; rakud ühendatakse lehtedeks (4 KB); leheküljed on rühmitatud plokkidesse. Enamik tootjaid ühendab 128 lehekülge üheks plokiks. Kui soovite lehe kustutada, peate kogu ploki kustutama. Kõik vajalikud andmed teistelt lehekülgedelt tuleb salvestada mujale. On üldteada, et flash-seadmetel on piiratud arv kirjutus- ja kustutamistsükleid.

Järelikult võib juhuslik I / O kirjutamine avaldada suuremat mõju kui sa arvasid. Probleem on selles, et enamik failisüsteeme töötati välja 80ndatel ja 90ndatel ning ei ole sellest ajast alates edenenud. Failisüsteemides ei võeta arvesse kõvakettale mõeldud madala taseme operatsioone kasutavatele välklambitele põhjustatud jõudluse halvenemist; Enamik välklambitootjaid rakendab erinevaid mehhanisme, et võtta arvesse progressiivset jõudluse halvenemist. Mitme skeemi abil kaalume neid mehhanisme ja selgitame, miks killustamisel on selline efekt välisseadmetele.

Kulumise juhtimine
Pange tähele, et lihtsuse huvides otsustasin näidata 9 lehekülge ühes plokis 128 lehekülje asemel ploki kohta.

Alustame kulumise juhtimise protsessist. Selles näites on rakendus juba loonud andmed ja salvestanud need lehekülgedele A, B ja C plokis 1 (1. etapp). Saabuvad uued andmed (2. etapp), mis kirjutatakse lehekülgedele D, E ja F. Rakendus uuendab eelmisi andmeid (AC) ja eelmiste lehekülgede asemel kasutab flash seade uusi lehti. Need uued andmed on märgistatud A-1, B-1 ja C-1. Andmete võimalikult ühtlaseks jaotamiseks nimetatakse kulumist. Vanad leheküljed on nüüd märgitud aegunud.

Prügi kogumine ja mitmekordne sisestamine
Selles näites on plokk A täis, mis juhtub, kui kasutaja jaoks salvestamiseks saadaval olev ruum on otsa saanud ja saabuvad uued andmed?

Flash kopeerib praegused andmed tühjadesse lahtritesse. Bloki tegelikke andmeid loetakse ja kirjutatakse teise plokki. Viivised andmed jäävad oma lehtedele ja kustutatakse koos ülejäänud plokkidega. Seda protsessi nimetatakse prügi kogumiseks.

Prügi kogumine on hea, kuid selle toimimise ajal esinev mitmekordne sissekanne põhjustab flash-seadmetele olulist kahju. 3 lehekülje salvestamiseks peab flash seade lugema 6 lehekülge ja kirjutama 6 lehekülge teisele kohale, enne kui saab uusi andmeid kirjutada. Ja ärge unustage kustutamistsüklit. Oletame, et stsenaarium, kus ketas on täis, kuhu me ajutiselt teisaldame andmeid enne uute andmete salvestamist? Minu skeemis lisasin sellele valikule ploki B. Selleks, et seda teha reaalses olukorras (failisüsteemi kasutamisel), peate eraldama kontrolleri poolt reserveeritud liigse ruumi.

Selleks, et seda teha reaalses olukorras (failisüsteemi kasutamisel), peate eraldama kontrolleri poolt reserveeritud liigse ruumi

Liigne ruum
Välklambi võimsust saab reserveerida flash-kontrolleri hallatavatele protsessidele. Seda saab teha nii välklambi tootja kui ka kasutaja. Näiteks, kui ostate 160 GB suuruse Flash PCIe kiirendi, saate tegelikult 192 GB kaardi. 160 GB on kasutajale kättesaadavad ja 32 GB on reserveeritud ka välklambi kontrolleri tasemel toimingutele, nagu prügi kogumine, veaparandus ja kontrolleri püsivara. Kui ostate mitte-tööstusliku SSD-draivi, siis saad tavaliselt vähe reserveeritud liigse ruumi. Selle välisseadme vormindamisel mis tahes failisüsteemis peaksite neid funktsioone teadma ja võimalusel lisama ruumi väljaspool olemasolevat võimsust. Praegu ei ole standardiseeritud skaalamise soovitusi, nii et peate tegema valikuid oma kogemuste põhjal. Halvimal juhul leiad end killustatud kettaga ja SSD peab pidevalt andmeid edastama, et neid uusi kirjutada. Kujutage ette, et lapsed mängivad silti, vaid liikumise muster on veidi keerulisem.

Flash-seadmete andmete haldamise uuesti läbivaatamine
PernixData insenerid on välja töötanud uue vormingu andmete haldamiseks FVP-le. Üksikasjad avalikustatakse järgmistes artiklites ja nüüd mõnedes põhipunktides.

Optimeeritud välklambi jaoks
Formaat on mõeldud ajutiste I / O-andmete salvestamiseks minimaalse võimaliku metaandmete kogumiga ja töötama koos välklambiga maksimaalse võimaliku jõudlusega. See teisendab juhuslikke kirjeid järjestikusteks, et kasutada järjestikuse kirjutamise režiimis kõrgemat välgu jõudlust. See vähendab üleliigsete andmete kirjutamise ja kustutamise tsüklite arvu. Algoritm ei sisalda failisüsteemide päritud piiranguid, nagu suured plokkide suurused, kataloogid, failid, pikad tehingud, lukuhaldurid jne.

Dünaamiliselt jagatud võime virtuaalsete masinate vahel
Tänan sügav integratsioon VMkerneli abil saab FVP jälgida andmeplokke ja määrata, kas nende virtuaalne masin loeb või kirjutab. Selliste toimingute sõltumatult jälgides saab platvorm skaala- ja kirjutuspuhvreid skaleerida virtuaalmasinale eraldatud ruumis. FVP võib vahemälust salvestada või kustutada meelevaldse virtuaalmasina andmete kogumi. Seevastu on flash-seadme tavapärase failisüsteemi andmete evakueerimise poliitika optimaalne ja tulemuseks on mitu ümberkirjutamist, kuna failisüsteem saab kirjutada andmeid ainult faili lõpuni või kustutada ka plokid lõpust.

See tähendab ka seda, et te ei pea määrama iga virtuaalmasina jaoks staatilist vahemälu konfiguratsiooni, nagu oleks siis, kui kasutate otsesaadetusega failisüsteemi. See oli meile suur otsus; toote kogemus peaks olema võimalikult intuitiivne.

Tsiteerin meie tootejuhti Bala: "Toote elegants on minu arvates see, et ta täidab põhiülesandeid, mis ei nõua kasutajalt uusi või ebatavalisi toiminguid."

Igapäevases töös on see suurepärane: te ei pea iga virtuaalmasina vahemälu eelnevalt mõõtma. See tähendab, et te ei pea teadma ja ennustama välklambi kasutamist tulevikus - FVP teeb kõik teie heaks. Raskete ressursside eraldamise puudumine tähendab, et väljalülitamata virtuaalarvutid ei kasuta välklambi alahinnangut ja on ebapiisavate kiirklahvide suurusega aktiivsete virtuaalsete masinate jaoks üleliigsed plokkide puhastustsüklid. See minimeerib mitme salvestuse probleemi ning tagab välgumisseadmete maksimaalse jõudluse ja usaldusväärsuse.

Algne artikkel .

Alates 2016. aastast loobus FVP müügist.

Miks mitte VMFS?
Mis on leht ja mis on plokk?
Oletame, et stsenaarium, kus ketas on täis, kuhu me ajutiselt teisaldame andmeid enne uute andmete salvestamist?