Promovarea Bcachefs în nucleul Linux

Kent Overstreet, autor al sistemului de cache pentru dispozitive bloc pe SSD BCache, a rezumat rezultatele muncii sale în promovarea sistemului de fișiere Bcachefs în nucleul principal Linux, în timpul prezentării sale la conferința LSFMM 2023 (Linux Storage, Filesystem, Memory Management & BPF Summit). În mai, a fost propus un set actualizat de patch-uri pentru revizuire și includerea în nucleul principal Linux, cu implementarea sistemului de fișiere Bcachefs. Bcachefs s-a dezvoltat timp de aproape 10 ani. Anunțul privind pregătirea pentru revizuirea implementării Bcachefs a fost făcut încă la sfârșitul anului 2020, iar în varianta curentă a patch-urilor au fost luate în considerare observațiile și necorectările identificate în revizuirea anterioară.

Obiectivul dezvoltării Bcachefs este atingerea performanței, fiabilității și scalabilității la nivelul XFS, oferind în același timp funcționalități suplimentare caracteristice Btrfs și ZFS, cum ar fi integrarea mai multor dispozitive în secțiune, aranjamente de stocare multilayer, replicare (RAID 1/10), caching, compresie transparentă a datelor (modurile LZ4, gzip și ZSTD), instantanee (snapshots), verificare a integrității prin checksum-uri, posibilitatea stocării codurilor de corecție a erorilor Reed-Solomon (RAID 5/6), stocarea informațiilor în formă criptată (folosind ChaCha20 și Poly1305). În ceea ce privește performanța, Bcachefs depășește Btrfs și alte sisteme de fișiere bazate pe mecanismul Copy-on-Write, demonstrând o viteză de lucru apropiată de Ext4 și XFS.

Între realizările recente în dezvoltarea Bcachefs se numără stabilizarea implementării snapshot-urilor, disponibile pentru scriere. Comparativ cu Btrfs, snapshot-urile din Bcachefs se scalează acum semnificativ mai bine și sunt lipsite de problemele specifice Btrfs. În practică, funcționarea snapshot-urilor a fost testată în organizarea copiilor de rezervă MySQL. De asemenea, în Bcachefs s-au realizat progrese semnificative în îmbunătățirea scalabilității — sistemul de fișiere s-a comportat bine în testele efectuate pe stocări cu o capacitate de 100 TB, iar în curând se așteaptă implementarea Bcachefs pe o stocare de 1 PB. A fost adăugat un nou mod nocow pentru dezactivarea mecanismului „copy-on-write” (nocow). În timpul verii, se intenționează stabilizarea implementării codurilor de corectare a erorilor și RAIDZ, precum și rezolvarea problemelor legate de consumul ridicat de memorie la restaurare și verificarea sistemului de fișiere cu utilitarul fsck.

În ceea ce privește planurile de viitor, se menționează dorința de a utiliza limbajul Rust în dezvoltarea Bcachefs. Potrivit autorului Bcachefs, îi place să programeze, nu să debugeze codul, și acum îi se pare nebunesc să scrie cod în C, când există o opțiune mai bună. Rust este deja folosit în Bcachefs pentru implementarea unor utilitare care rulează în spațiul utilizatorului. Mai mult, se conturează ideea de a rescrie treptat Bcachefs complet în Rust, deoarece utilizarea acestui limbaj economisește semnificativ timp pentru debugging.

În ceea ce privește promovarea Bcachefs în kernelul principal Linux, procesul de acceptare ar putea dura din cauza dimensiunii considerabile a modificărilor (2500 de patch-uri și aproximativ 90 de mii de linii de cod), care sunt greu de revizuit. Pentru a accelera revizuirea, unii dezvoltatori au propus împărțirea seriei de patch-uri în părți mai mici și logic separate. În cadrul discuției, unii participanți au atras, de asemenea, atenția asupra dezvoltării proiectului de către un singur dezvoltator și asupra pericolului ca codul să rămână fără suport, în cazul în care cu dezvoltatorul său se întâmplă ceva (la proiect își manifestă interesul doi angajați de la Red Hat, dar activitatea lor este, deocamdată, limitată la corectarea erorilor).

Bcachefs se dezvoltă folosind tehnologii deja testate în dezvoltarea dispozitivului de bloc Bcache, destinat cache-ului accesului la discuri rigide lente pe SSD-uri rapide (inclus în nucleu începând cu versiunea 3.10). Bcachefs utilizează un mecanism Copy-on-Write (COW), prin care modificările nu duc la rescrierea datelor — noul stadiu este scris într-o nouă locație, după care se schimbă pointerul spre stadiul actual.

O caracteristică a Bcachefs este suportul pentru conectarea stratificată a unităților de stocare, în care stocarea este compusă din mai multe straturi — cel mai jos strat este conectat la cele mai rapide unități de stocare (SSD), care sunt folosite pentru a face cache datelor frecvent utilizate, în timp ce stratul superior este format din discuri mai mari și mai ieftine, care asigură stocarea datelor mai puțin solicitate. Între straturi poate fi aplicată cache-ul în modul scriere întârziată (writeback). Unitățile pot fi adăugate și deconectate din secțiune dinamic fără a opri utilizarea sistemului de fișiere (datele migrează automat).

Sursa: opennet.ro

Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS | ProHoster