Mecanisme de caching din MFS: ARC și L2ARC
Cred că mulți oameni știu că ZFS are un număr foarte mare de funcții extrem de interesante. Caching-ul nu este o excepție - aici ZFS are în arsenal două mecanisme: ARC și L2ARC.
De ce se cheamă așa de ciudat, ARC? Aceste cache-uri primesc numele lor în onoarea algoritmului de cache pe care se bazează, algoritmul ARC. În plus, LRU este, de asemenea, distribuită pe scară largă, dar ARC este considerată mai productivă.
ARC - această memorie cache ZFS, localizat în memoria RAM, L2ARC - continuarea sa (Layer 2, al doilea nivel), dar mai lent decât purtătorul de memorie (dar are o cantitate mare) și, în același timp, mai rapid decât discuri ale matricei în sine. De obicei, rolul mass-media pentru L2ARC folosesc unitățile SSD, ca citit lor / scrie cu ușurință depăși ultima viteză model de SAS.
Vorbind despre lucruri abstracte, cum ar fi cache-uri, cu toate acestea, dificil să nu se uite la partea practică - da, drive-urile SSD sunt bune la citire a datelor, ei o fac bine, foarte repede, dar Wee acest lucru nu este la toate mass-media SSD lucruri bune cu viteze de scriere lucruri . Va scrie în cache încetinirea citirii direct? Nu, nu există nici o intrare în cache pe un ZFS este asincron și nu poate afecta citirea cu ZFS.
Cum funcționează acest lucru în practică?
Completarea cache: atunci când citirea datelor, care este accesul cel mai frecvent sunt plasate în cache ARC, în timp, devine plin, iar datele din memoria cache ARC eliminat pe L2ARC de numerar până la vremuri mai bune, și numai apoi eliminate complet.
Utilizarea cache: atunci când încearcă să citească datele de pe disc, un ZFS caută mai întâi ei în memoria (ARC), în cazul în care există datele necesare nu sunt disponibile, atunci încercarea de a le găsi în L2ARC cache și numai în caz de eșec al acestei etape va fi executat lectura reală de pe dispozitivul fizic .
Mulți oameni pot observa - nu este mai ușor să creați o memorie cache uriașă ARC, deoarece memoria RAM este extrem de ieftină? Nu, nu este mai simplu, este extrem de problematic să puneți pe server, să zicem, 256 gigaocteți de memorie pentru memoria cache a TB de matrice pentru 150 :)
Așa cum am menționat mai sus, aceste cache-uri sunt folosite în primul rând în lectură, și chiar sub ea dau efectul maxim, dar ce zici atunci când scrii? Nu puteți stoca datele pentru o lungă perioadă de timp în memorie, în caz contrar este plină cu pierderea puterii lor este pierdut (dar pentru ZFS este absolut sigur - nu doare, doar datele vor fi înregistrate și toate konsistenost același sistem de fișiere va fi în afara amenințării). În acest caz (pentru a accelera operațiile de scriere), ZFS are și tehnologie de cache (dar nu date, dar tranzacții), care se numește ZIL. Dar voi scrie despre asta într-un post separat.