Ùn hè tantu tempu, i picciotti di LINBIT presentavanu a so nova suluzione SDS - Linstor. Questu hè un almacenamentu completamente gratuitu basatu nantu à tecnulugia pruvata: DRBD, LVM, ZFS. Linstor combina simplicità è architettura ben cuncepita, chì vi permette di ottene stabilità è risultati abbastanza impressiunanti.
Oghje vogliu parlà un pocu di più è dimustrà quantu faciule pò esse integratu cù OpenNebula cù linstor_un - un novu driver chì aghju sviluppatu apposta per questu scopu.
Linstor in cumbinazione cù OpenNebula permette di custruisce un nuvulu veloce è affidabile chì pò esse facilmente implementatu nantu à a vostra propria infrastruttura.
L'architettura di Linstor
Linstor ùn hè nè un sistema di fugliale nè u almacenamentu di bloccu in sè stessu, Linstor hè un orchestratore chì furnisce una capa di astrazione per automatizà a creazione di volumi in LVM o ZFS è riplicà cù DRBD9.
Rupture di stereotipi
Ma aspetta, DRBD? - Perchè l'automatizà è cumu pò travaglià in tuttu?
Ricurdemu u passatu quandu DRBD8 era assai populari. U so usu standard significava creà un grande dispositivu di bloccu è tagliatu in parechji pezzi chjuchi, utilizendu u stessu LVM. Un tipu di mdadm RAID-1 ma cù a replicazione di a rete.
Stu approcciu ùn hè micca senza inconvenienti, è per quessa, cù l'avventu di DRBD9, i principii di a custruzzione di almacenamiento sò cambiati, avà un dispositivu DRBD separatu hè creatu per ogni macchina virtuale.
L'approcciu di u dispositivu di bloccu indipendenti permette una megliu utilizazione di u spaziu in u cluster, è aghjunghje ancu una quantità di funzioni supplementari. Per esempiu, per ogni tali dispusitivu, pudete determinà u numeru di rèpliche, u so locu è i paràmetri individuali. Sò faciuli di creà / sguassate, piglià snapshots, ridimensionà, attivà a criptografia, è più. Hè da nutà chì DRBD9 mantene ancu un quorum, chì evita situazioni di split-brain.
Risorse è backend
Quandu crea un novu dispositivu di bloccu, Linstor mette u numeru necessariu di repliche in diversi nodi in u cluster. Chjameremu ogni tali replica una risorsa DRBD.
I risorse sò di dui tipi:
- Risorsa di dati - rapprisentanu un dispositivu DRBD situatu nantu à un node in una piscina LVM o ZFS.
À u mumentu ci hè supportu per parechji backends è u so numeru hè in constantemente crescente. Ci hè supportu per LVM, ThinLVM è ZFS. L'ultimi dui permettenu di creà è aduprà snapshots. - Risorsa senza discu - hè un dispositivu DRBD allughjatu in un node senza backend, ma chì permette di esse trattatu cum'è un dispositivu di bloccu regulare, tutte l'operazioni di lettura / scrittura seranu redirette à risorse di dati. L'analogicu più vicinu à e risorse senza discu hè iSCSI LUN.
Ogni risorsa DRBD pò avè finu à 8 rèpliche è solu una di elle pò esse attiva per automaticamente - Primary, tuttu u restu sarà Vicu è u so usu sarà impussibile finu à chì ci hè almenu una Primary, chì hè, si simpricimenti riplicà dati trà elli.
Muntendu un dispositivu DRBD in u sistema, diventa automaticamente Primary, cusì ancu una risorsa Diskless, in a terminologia DRBD, pò esse Primary.
Allora perchè avemu bisognu di Linstor?
Cunfidendu tutti i travaglii intensivi di risorse à u kernel, Linstor hè essenzialmente una applicazione Java regulare chì permette di automatizà facilmente a creazione di risorse DRBD.
À u listessu tempu, ogni risorsa creata da ellu serà un cluster DRBD indipendente chì travaglia indipindentamente, indipendentemente da u statu di u pianu di cuntrollu è altri risorse DRBD.
Linstor hè custituitu da solu dui cumpunenti:
- linstor-controller - U controller principale, chì furnisce una API per a creazione è a gestione di risorse. Hè ancu cumunicà cù satelliti, cuntrollà u spaziu liberu nantu à elli, è manda impieghi per creà è sguassà novi risorse. Funziona in una sola istanza è usa una basa di dati chì pò esse sia interna (H2) sia esterna (PostgreSQL, MySQL, MariaDB)
- linstor-satellite - Installatu nantu à tutti i nodi di almacenamento è furnisce u controller cù infurmazioni nantu à u spaziu liberu, è ancu eseguisce i travaglii ricevuti da u controller per creà è sguassà novi volumi è dispositi DRBD sopra à elli.
Linstor opera cù i seguenti cuncetti chjave:
- Nodu - un servitore fisicu nantu à quale risorse DRBD seranu create è utilizate.
- Piscina di almacenamiento - LVM o ZFS pool creatu nantu à u node in quale risorse DRBD seranu piazzate. Un pool senza discu hè ancu pussibule - questu hè un pool in quale solu risorse senza discu seranu posti.
- Definizione di risorsa - Definizione di una risorsa, in fatti hè un prototipu chì descrive u nome è tutte e so proprietà.
- definizione di u voluminu - Definizione di u voluminu. Ogni risorsa pò esse cumpostu di parechji volumi, ogni vulume deve avè una dimensione.
- Parti Pirate - Creatu una istanza di un dispositivu di bloccu, ogni risorsa deve esse piazzata nantu à un node specificu è in una piscina di almacenamiento.
Installazione di Linstor
Vi cunsigliu di utilizà Ubuntu cum'è sistema, perchè. esiste per ella
add-apt-repository ppa:linbit/linbit-drbd9-stack
apt-get update
O Debian, induve Linstor pò esse installatu da u repositoriu ufficiale di Proxmox:
wget -O- https://packages.linbit.com/package-signing-pubkey.asc | apt-key add -
PVERS=5 && echo "deb http://packages.linbit.com/proxmox/ proxmox-$PVERS drbd-9.0" >
/etc/apt/sources.list.d/linbit.list
apt-get update
Curriculum Vitae
Tuttu hè simplice quì:
apt-get install linstor-controller linstor-client
systemctl enable linstor-controller
systemctl start linstor-controller
Nodi di almacenamiento
U kernel Linux hè attualmente speditu cù un modulu di kernel in-tree DRBD8, sfurtunatamenti ùn ci cunvene micca è avemu bisognu di stallà DRBD9:
apt-get install drbd-dkms
Cum'è a pratica mostra, a maiò parte di e difficultà si sviluppanu precisamente cù u fattu chì u modulu DRBD8 hè carricu in u sistema, è micca DRBD9. Per furtuna, questu hè faciule da verificà eseguendu:
modprobe drbd
cat /proc/drbd
Se vede versione: 9 - tuttu hè bè si versione: 8 - significa chì qualcosa hè andatu male è avete bisognu di piglià passi supplementari per scopre i motivi.
Avà stallà linstor-satellite и drbd-utils:
apt-get install linstor-satellite drbd-utils
systemctl enable linstor-satellite
systemctl start linstor-satellite
Crea un cluster
Piscine di almacenamento è nodi
Cum'è un backend avemu da piglià ThinLVM, perchè hè u più simplice è supporta snapshots.
Installa lvm2, s'ellu ùn l'avete micca digià fattu, è creemu un pool ThinLVM in tutti i nostri nodi di almacenamiento:
sudo vgcreate drbdpool /dev/sdb
sudo lvcreate -L 800G -T drbdpool/thinpool
Tutte e altre azzioni ponu esse realizate direttamente nantu à u controller:
Aghjunghjemu i nostri nodi:
linstor node create node1 127.0.0.11
linstor node create node2 127.0.0.12
linstor node create node3 127.0.0.13
Creemu pools di almacenamiento:
linstor storage-pool create lvmthin node1 data drbdpool/thinpool
linstor storage-pool create lvmthin node2 data drbdpool/thinpool
linstor storage-pool create lvmthin node3 data drbdpool/thinpool
Avà andemu à verificà e piscine create:
linstor storage-pool list
Se tuttu hè fattu bè, allora duvemu vede qualcosa cum'è:
+------------------------------------------------- -------------------------------------------------- ----+ | StoragePool | nodu | driver | poolname | capacità libera | capacità tutale | Supporta Snapshots | |------------------------------------------------- -------------------------------------------------- ----| | dati | nodu1 | LVM_THIN | drbdpool/thinpool | 64 GiB | 64 GiB | veru | | dati | nodu 2 | LVM_THIN | drbdpool/thinpool | 64 GiB | 64 GiB | veru | | dati | node3 | LVM_THIN | drbdpool/thinpool | 64 GiB | 64 GiB | veru | +------------------------------------------------- -------------------------------------------------- ----+
risorse DRBD
Avà pruvemu à creà a nostra nova risorsa DRBD:
linstor resource-definition create myres
linstor volume-definition create myres 1G
linstor resource create myres --auto-place 2
Cuntrollamu e risorse create:
linstor resource list
+------------------------------------------------- -------------------------------------------------- ---+ | nodu | risorsa | StoragePool | VolumeNr | MinorNr | DeviceName | Assignatu | in usu | statu | |------------------------------------------------- -------------------------------------------------- ---| | nodu1 | mire | dati | 0 | 1084 | /dev/drbd1084 | 52 KiB | Inutilisatu | UpToDate | | nodu 2 | mire | dati | 0 | 1084 | /dev/drbd1084 | 52 KiB | Inutilisatu | UpToDate | +------------------------------------------------- -------------------------------------------------- ---+
Perfettu! - vedemu chì a risorsa hè stata creata nantu à i primi dui nodi, pudemu ancu pruvà à creà una risorsa senza discu in u terzu:
linstor resource create --diskless node3 myres
Nantu à i nodi sempre truvà stu dispusitivu cum'è /dev/drbd1084
o /dev/drbd/by-res/myres/0
Questu hè cumu Linstor travaglia, pudete ottene più infurmazione da
Avà vi parlerà di cumu integrà cù OpenNebula
Configurazione di OpenNebula
Ùn andaraghju troppu in u prucessu di cunfigurazione OpenNebula, perchè Tutti i passi sò detallati in
linstor_un
Per risolve stu prublema, aghju scrittu u mo propiu driver -
L'installazione sana hè realizata nantu à i nodi OpenNebula di frontend è ùn necessita micca azzioni supplementari nantu à i nodi di compute.
Prima di tuttu, avemu bisognu di assicurà chì avemu jq и linstor-client:
apt-get install jq linstor-client
squadra linstor node list
deve vede una lista di nodi. Tutti i nodi di compute OpenNebula devenu esse aghjuntu à u cluster Linstor.
Scaricate è installate u plugin:
curl -L https://github.com/OpenNebula/addon-linstor_un/archive/master.tar.gz | tar -xzvf - -C /tmp
mv /tmp/addon-linstor_un-master/vmm/kvm/* /var/lib/one/remotes/vmm/kvm/
mkdir -p /var/lib/one/remotes/etc/datastore/linstor_un
mv /tmp/addon-linstor_un-master/datastore/linstor_un/linstor_un.conf /var/lib/one/remotes/etc/datastore/linstor_un/linstor_un.conf
mv /tmp/addon-linstor_un-master/datastore/linstor_un /var/lib/one/remotes/datastore/linstor_un
mv /tmp/addon-linstor_un-master/tm/linstor_un /var/lib/one/remotes/tm/linstor_un
rm -rf /tmp/addon-linstor_un-master
Avà avemu bisognu di aghjunghje à a cunfigurazione OpenNebula, per questu avemu seguitu i passi simplici descritti
Allora riavvia OpenNebula:
systemctl restart opennebula
È aghjunghje i nostri datastores, sistema:
cat > system-ds.conf <<EOT
NAME="linstor-system"
TYPE="SYSTEM_DS"
STORAGE_POOL="data"
AUTO_PLACE="2"
CLONE_MODE="snapshot"
CHECKPOINT_AUTO_PLACE="1"
BRIDGE_LIST="node1 node2 node3"
TM_MAD="linstor_un"
EOT
onedatastore create system-ds.conf
È a tenda di l'imaghjini:
cat > images-ds.conf <<EOT
NAME="linstor-images"
TYPE="IMAGE_DS"
STORAGE_POOL="data"
AUTO_PLACE="2"
BRIDGE_LIST="node1 node2 node3"
DISK_TYPE="BLOCK"
DS_MAD="linstor_un"
TM_MAD="linstor_un"
EOT
onedatastore create images-ds.conf
- Parameter
AUTO_PLACE
mostra u numeru di repliche di dati chì saranu creati per ogni nova imagine in OpenNebula. - Parameter
CLONE_MODE
indica esattamente cumu l'imaghjini seranu clonati quandu creanu novi macchine virtuali,snapshot
- Creà una istantanea di l'imaghjina è implementà una macchina virtuale da l'istantanea,copy
- farà una copia completa di l'imaghjini per ogni macchina virtuale. - В
BRIDGE_LIST
hè cunsigliatu di specificà tutti i nodi chì seranu utilizati per fà operazioni di clonazione di l'imaghjini.
Per una lista cumpleta di l'opzioni supportate, vede
Questu cumpleta a cunfigurazione, avà pudete scaricà qualchì apparecchiu da l'ufficiale
Link di u prughjettu:
Source: www.habr.com