Doli për herë të parë Blockstor - një sistem i hapur menaxhimi për ruajtjen e shpërndarë të bllokut për Kubernetes, i cili siguron replikimin e të dhënave mbi DRBD. Blockstor është i pajtueshëm me REST API me LINSTOR dhe mund të funksionojë pa ndryshime me ekosistemat ekzistuese të klientëve, përfshirë komandën linstor, drejtuesin CSI, operuesin Piraeus, ha-controller dhe bibliotekën golinstor. Projekti përbën një implementim të plotë të pavarur (clean-room) në gjuhën Go, dhe nuk përdor kodin burimor të origjinës. Kodi shpërndahet nën licencën Apache 2.0 dhe zhvillohet brenda platformës Cozystack (projekti CNCF Sandbox).
Autori i projektit është Andrei Kvapil (@kvaps), themelues i Cozystack dhe anëtar i organizatës jofitimprurëse Piraeus, në kuadër të së cilës zhvillohen operuesi dhe drejtuesi CSI LINSTOR për Kubernetes. Autori është i njohur në komunitetin Kubernetes si promovues i LINSTOR dhe ka mbajtur vazhdimisht referate teknike mbi këtë temë. Fillimisht, zhvillimi u mendua si një iniciativë e vogël "e premtes", megjithatë përfundimisht u shndërrua në rreth 20 ditë punë të pandërprerë. Aktualisht, projekti zhvillohet si një hulumtim, por në perspektivë, shqyrtohet si një zëvendësim i mundshëm për LINSTOR si sistemin e ruajtjes në default në Cozystack.
Si arsye për krijimin e këtij projekti përmenden vështirësitë me mbështetje të projektit origjinal dhe kalimin e ndryshimeve në projektin kryesor, si dhe kufizime arkitektonike të LINSTOR. Projekti origjinal përdor modelin "request-based" për trajtimin e kërkesave në kohë reale, që tregon probleme në përmasa të mëdha, ndërsa qasja deklarative të reconciliation-it të Kubernetes dhe framework-u controller-runtime, sipas autorit, përshtaten shumë më mirë për ndërtimin e sistemeve të shpërndara.
Ndryshe nga LINSTOR, arkitektura e Blockstor është plotësisht e bazuar në qasjen e Kubernetes controller-runtime. Konfigurimi dhe gjendja aktuale e sistemit paraqiten si objekte Kubernetes CRD, dhe sistemi nuk është i destinuar për të funksionuar jashtë klasterit Kubernetes.
Midis mundësive kryesore të Blockstor:
- Replicate mbi DRBD volumet e bazuara në LVM, LVM-thin, ZFS, ZFS-thin dhe backend-e të skedarëve.
- Vendosje automatike e replikave duke marrë parasysh zonat, veçoritë e node-ve dhe rregullat "replicas-on-different".
- Mbështetje për TieBreaker, quorum dhe ndryshimin e madhësisë së volumit pa ndërprerje të operacioneve.
- Mundësia për të funksionuar pa DRBD në modalitetin lokal (single-replica diskful) ose pa ruajtje disk.
- Kriptimi i volumet përmes LUKS.
- Mbështetje për snaphoti: krijimi, kthimi, klonimi dhe rikthimi si një burim të ri.
- Transferimi i snaphoteve brenda klasterit përmes zfs send/recv dhe thin-send-recv.
- Krijimi i storage pool-eve nga disqet fizikë.
- I grumbulluar për arkitektura të ndryshme, imazhet e kontejnerëve (linux/amd64 dhe linux/arm64), të botuara në GHCR.
Veçoria e projektit ishte përdorimi aktiv i mjeteve AI gjatë zhvillimit. Praktikisht të gjithë kodi u përgatit me ndihmën e Claude Code (modeli Opus 4.7) të kompanisë Anthropic. Zhvillimi u realizua pothuajse 24 orë për rreth 20 ditë. Në momente të caktuara, deri në 60 agjentë AI funksiononin njëkohësisht, dhe dialogu i përgjithshëm i zhvillimit përbënte rreth 1320 kërkesa nga autori dhe rreth 36 mijë përgjigje të modelit brenda një seance të vazhdueshme.
Doli në fund 1500 komitete, ku 83 mijë rreshta kodi ishin rezervuar për implementimin dhe 137 mijë rreshta kodi për testet. Sipas vlerësimeve, në total u shpërdorën rreth 18.9 miliardë tokene, dhe kostoja ekuivalente për këtë vëllim do të ishte rreth 40 mijë dollarë duke përdorur tarifat e API.
Autori fillimisht e kishte parashikuar një zhvillim pothuajse plotësisht autonom me forcat e modelit AI, por logjika e komplikuar DRBD kërkonte pjesëmarrjen e vazhdueshme të njeriut. Sceneritë më të komplikuara u treguan ato të konvergjencës së gjendjeve të DRBD, punën me Identifierin e Brezit (GI), kalimin e sinkronizimit fillestar dhe trajtimin e skenarëve të ndarjes së trurit.
Deri në momentin që LINSTOR origjinal shpërndahet nën licencën GPL, nuk mund të përdorej kodi i tij drejtpërdrejt. Pjesa kryesore e implementimit u krijua mbi bazën e analizës së kontratave të API-së, sjelljes së utiliteteve, klientit Python të LINSTOR, si dhe projekteve të pajtueshme me licencë, duke përfshirë piraeus-operator dhe drejtuesin CSI.
Në rastet më të komplikuara, u aplikua një skemë me ndarjen e roleve të agjentëve AI: një agjent analizonte kodin burimor të LINSTOR dhe formonte një specifikim tekstual të sjelljes, pas së cilës një agjent tjetër realizonte funksionalitetin ekskluzivisht sipas këtij specifikimi pa kopjuar drejtpërdrejt kodin burimor. Për shkak të mungesës së testeve të hapura në projektin origjinal, baza e testeve duhej të formohej vetë.
Burimi: opennet.ru
