A prima versione di Blockstor, un sistema di gestione di almacenamentu in blocchi distribuitu open-source per Kubernetes chì furnisce a replicazione di dati via DRBD, hè avà dispunibule. Blockstor hè cumpatibile cù l'API REST cù LINSTOR è funziona perfettamente cù l'ecosistema client esistente, cumprese l'utilità di linea di cummanda linstor, u driver CSI, l'operatore Piraeus, u controller ha è a biblioteca golinstor. U prugettu hè una implementazione in sala bianca in Go, chì ùn usa micca u codice surghjente originale. U codice hè distribuitu sottu a licenza Apache 2.0 è hè sviluppatu in a piattaforma Cozystack (prughjettu CNCF Sandbox).
L'autore di u prugettu hè Andrey Kvapil (@kvaps), u fundatore di Cozystack è membru di l'urganizazione senza scopu di lucro Piraeus, chì sviluppa l'operatore LINSTOR è u driver CSI per Kubernetes. Hè cunnisciutu in a cumunità Kubernetes cum'è un difensore di LINSTOR è hà datu numerose presentazioni tecniche nantu à u tema. Inizialmente cuncipitu cum'è una piccula iniziativa "di u venneri", u prugettu s'hè evolutu infine in circa 20 ghjorni di travagliu cuntinuu. Attualmente, u prugettu hè sviluppatu cum'è un prugettu di ricerca, ma hè cunsideratu per u futuru cum'è un putenziale rimpiazzamentu di LINSTOR cum'è sistema di almacenamentu predefinitu in Cozystack.
I motivi citati per a creazione di u novu prughjettu includenu difficultà à mantene u prughjettu originale è à trasferisce i cambiamenti à u prughjettu principale, è ancu limitazioni architettoniche di LINSTOR. U prughjettu originale usa un mudellu di trasfurmazione di e richieste in tempu reale basatu annantu à e richieste, chì rivela prublemi à grande scala, mentre chì l'autore crede chì l'approcciu di ricunciliazione dichjarativa di Kubernetes è u runtime di u controller di u framework sò significativamente più adatti per a custruzione di sistemi distribuiti.
À u cuntrariu di LINSTOR, l'architettura di Blockstor hè interamente basata annantu à l'approcciu di runtime di u controller di Kubernetes. A cunfigurazione è u statu attuale di u sistema sò rapprisentati cum'è oggetti CRD di Kubernetes, è u sistema stessu ùn hè micca cuncipitu per operà fora di un cluster di Kubernetes.
Trà e caratteristiche principali di Blockstor:
- Volumi replicati sopra DRBD basati nantu à LVM, LVM-thin, ZFS, ZFS-thin è backend di file.
- Piazzamentu automaticu di repliche basatu annantu à e zone, e pruprietà di i nodi è e regule di repliche diverse.
- Supportu per TieBreaker, quorum è ridimensionamentu di volumi in diretta.
- Capacità di travaglià senza DRBD in modu di almacenamentu lucale (discu unicu di replica) o senza discu.
- Crittografia di volumi cù LUKS.
- Supportu di snapshot: creà, rollback, clonà è restaurà cum'è una nova risorsa.
- Trasferimentu di snapshots in un cluster cù zfs send/recv è thin-send-recv.
- Creazione di pool di almacenamiento da dischi fisichi.
- Imagine di container compilate per diverse architetture (linux/amd64 è linux/arm64) publicate in GHCR.
Una caratteristica distintiva di u prugettu hè stata l'usu estensivu di strumenti di IA durante u sviluppu. Quasi tuttu u codice hè statu preparatu cù Claude Code (mudellu Opus 4.7) da Anthropic. U sviluppu hè statu realizatu guasi senza interruzzione per circa 20 ghjorni. In certi punti, finu à 60 agenti di IA eranu in esecuzione simultaneamente, è u dialogu generale di sviluppu hè statu custituitu da circa 1320 richieste da l'autore è circa 36 risposte di mudellu in una sola sessione cuntinua.
U risultatu finale hè statu custituitu da 1500 commit, cumpresi 83 linee di codice per l'implementazione è altre 137 linee di codice per i test. Sicondu e stime preliminari, un totale di circa 18.9 miliardi di gettoni sò stati spesi, è u costu equivalente di questu vulume utilizendu piani API saria statu di circa $ 40.
L'autore hà inizialmente previstu un sviluppu guasi cumpletamente autonomu da u mudellu IA, ma a logica cumplessa di DRBD richiedeva un intervenzione umana custante. L'aspetti i più difficiuli includenu scenarii di cunvergenza trà i stati DRBD, u travagliu cù l'Identificatore di Generazione (GI), u saltu di a sincronizazione iniziale è u trattamentu di scenarii di split-brain.
Siccomu u LINSTOR uriginale hè distribuitu sottu a GPL, u so codice ùn pudia esse adupratu direttamente. A maiò parte di l'implementazione hè stata creata analizendu i cuntratti API, u cumpurtamentu di l'utilità, u cliente LINSTOR Python è i prughjetti cumpatibili cù a licenza, cumpresi piraeus-operator è u driver CSI.
In i casi i più cumplessi, hè statu utilizatu un schema cù roli d'agente IA separati: un agente hà analizatu u codice surghjente LINSTOR è hà generatu una specificazione di cumpurtamentu testuale, dopu à quale un altru agente hà implementatu a funziunalità solu basendu si nantu à sta specificazione, senza copià direttamente u codice surghjente. A causa di a mancanza di testi open-source per u prugettu originale, a basa di test hà avutu à esse custruita indipindentamente.
Source: opennet.ru
