După un an de stagnare în dezvoltare activitatea la noua ramură a sistemului de fișiere distribuite reziliente și al doilea candidat pentru lansări. Recent schimbarea proprietarilor companiei care dezvoltă LizardFS, a fost numită o nouă conducere și s-au schimbat dezvoltatorii. Ultimii doi ani, proiectul s-a distanțat de comunitate și nu i-a acordat atenția cuvenită, dar noua echipă intenționează să reînvie relațiile anterioare cu comunitatea și să stabilească o interacțiune strânsă cu aceasta. Codul proiectului este scris în limbaje C și C++ și sub licența GPLv3.
LizardFS este un sistem de fișiere distribuite în cluster, care permite dispersarea datelor pe servere diferite, dar oferă acces la acestea sub forma unei singure secțiuni mari, lucrul cu care se realizează analogic cu secțiunile tradiționale ale discurilor. În secțiunea montată cu LizardFS sunt suportate atributele POSIX ale fișierelor, ACL, blocările, socketurile, canalele, fișierele de dispozitive, legăturile simbolice și hard. Sistemul nu are un singur punct de eșec, toate componentele sunt rezervate. Se suportă paralele operațiunilor cu datele (mai mulți clienți pot accesa simultan fișierele).
Pentru a asigura reziliența, datele sunt împărțite în replici, care sunt distribuite pe noduri diferite cu rezervare (pe noduri diferite sunt plasate mai multe copii) — în cazul în care nodurile sau unitățile de stocare ies din funcțiune, sistemul continuă să funcționeze fără pierderi de informație și redistribuie automat datele ținând cont de nodurile rămase. Pentru a extinde stocarea, este suficient să se conecteze noduri noi fără a opri lucrul pentru întreținere (sistemul replică singur o parte din date pe noi servere și echilibrează stocarea ținând cont de noile servere). În mod similar, poate fi procedat și pentru micșorarea dimensiunii cluster-ului — se poate pur și simplu deconecta echipamentul învechit din compunere.
Datele și metadatele sunt stocate separat. Pentru operare, se recomandă instalarea a două servere de metadate în modul master-slave și, de asemenea, cel puțin două servere pentru stocarea datelor (chunkserver). În plus, pentru rezervarea metadatelor pot fi utilizate servere de jurnal, care păstrează informații despre modificările metadatelor și permit recuperarea în cazul avarieri tuturor serverelor de metadate disponibile. Fiecare fișier este împărțit în blocuri (chunk) de dimensiuni de până la 64 MB. Blocurile sunt distribuite pe serverele de stocare în funcție de modul de replicare ales: standard (definirea explicită a numărului de copii pentru a fi plasate pe noduri diferite, inclusiv în raport cu directoare specifice – pentru date importante, numărul de copii poate fi crescut, iar pentru cele neesențiale poate fi redus), XOR (RAID5) și EC (RAID6).
Stocarea poate fi scalată până la dimensiuni de petabytes. Domeniile de aplicare includ arhivarea, stocarea imaginilor mașinilor virtuale, datelor multimedia, copiilor de rezervă, utilizarea ca DRC (Disaster Recovery Center) și ca stocare în clustere de calcul de înaltă performanță. LizardFS oferă o viteză foarte mare de citire a fișierelor de orice dimensiune, iar la scriere arată o performanță bună pentru scrierea integrală a fișierelor mari și medii, atunci când nu există modificări constante, activitate intensivă cu fișiere deschise și operațiuni unice cu o mulțime de fișiere mici.
Printre caracteristicile FS se numără și suportul pentru snapshot-uri, care reflectă starea fișierelor într-un moment dat, precum și implementarea integrată a „coșului de gunoi” (fișierele nu sunt șterse imediat și sunt disponibile pentru recuperare pentru o anumită perioadă de timp). Accesul la secțiune poate fi restricționat prin IP-adrtesă sau parolă (analog cu NFS). Există mecanisme de cote și gestionarea calității serviciului care permit limitarea dimensiunii și lățimii de bandă pentru anumite categorii de utilizatori. Este posibilă crearea de stocări distribuite teritorial, a căror segmente sunt plasate în centre de date diferite.
Proiectul LizardFS a fost fondat în 2013 ca un fork , și se distinge, în principal, prin prezența modului de replicare bazat pe coduri de corectare a erorilor Reed-Solomon (analoc raidzN), suport extins pentru ACL, existența unui client pentru platforma Windows, optimizări suplimentare (de exemplu, în cazul în care clientul și serverul de stocare sunt combinate, blocurile sunt returnate din nodul curent, iar metadatele sunt stocate în memorie), un sistem de configurare mai flexibil, suport pentru citirea anticipată a datelor, cote pe directoare și revizuiri interne.
Lansarea LizardFS 3.13.0 este planificată pentru sfârșitul lunii decembrie. Principalul noutate a LizardFS 3.13 este utilizarea unui algoritm de consens pentru asigurarea rezilienței (comutarea serverelor master în caz de eșec). (se folosește o implementare proprie a uRaft, care a fost utilizată anterior în produsele comerciale). Utilizarea uRaft simplifică configurarea și reduce întârzierile în procesul de recuperare după o defecțiune, dar necesită existența a cel puțin trei noduri funcționale, dintre care unul este folosit pentru cvorum.
Printre alte modificări: un nou client bazat pe subsistemul FUSE3, rezolvarea problemelor legate de corectarea erorilor, pluginul nfs-ganesha a fost rescris în limbajul C. În actualizarea 3.13.0-rc2 au fost corectate mai multe erori critice, care făceau versiuni anterioare ale ramurii 3.13 greu utilizabile (corectările pentru ramura 3.12 nu au fost încă publicate, iar actualizarea de la 3.12 la 3.13 continuă să ducă la pierderi complete de date).
În 2020, activitatea se va concentra pe dezvoltarea
, noul nucleu LizardFS complet rescris, care, conform dezvoltatorilor, va asigura o creștere a performanței de trei ori mai mare, comparativ cu ramura 3.12. În Agama, se va realiza trecerea la o arhitectură bazată pe evenimente (event driven), intrare/ieșire asincronă bazată pe , iar activitatea se va desfășura predominant în spațiul utilizatorului (pentru a reduce dependența de mecanismele de cache ale nucleului). În plus, vor fi propuse un nou subsistem de depanare și un analizator de activitate de rețea cu suport pentru auto-tuning al performanței.
Clientul LizardFS va include suport complet pentru versiunea operațiunilor de scriere, ceea ce va îmbunătăți fiabilitatea recuperării după o situație de urgență, va rezolva problemele apărute din accesul simultan al diferitelor clienți la aceleași date și va permite o creștere semnificativă a performanței. Clientul va fi mutat pe un subsistem de rețea propriu, care funcționează în spațiul utilizatorului. Primul prototip funcțional LizardFS bazat pe Agama este planificat să fie pregătit în trimestrul doi al anului 2020. În același timp, se promite implementarea unor instrumente pentru integrarea LizardFS cu platforma Kubernetes.
Sursa: opennet.ro
