L'almacenamiento LINSTOR è a so integrazione cù OpenNebula

L'almacenamiento LINSTOR è a so integrazione cù OpenNebula

Ù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 PPA pronta:

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 documentazione ufficiale.

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 documentazione ufficiale, chì vi ricumandemu di riferite, parleraghju solu di l'integrazione di OpenNebula cù Linstor.

linstor_un

Per risolve stu prublema, aghju scrittu u mo propiu driver - linstor_un, hè attualmente dispunibule cum'è plugin è deve esse stallatu separatamente.

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 ccà.

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 README prughjettu.

Questu cumpleta a cunfigurazione, avà pudete scaricà qualchì apparecchiu da l'ufficiale Mercatu OpenNebula è crea macchine virtuale da ellu.

Link di u prughjettu:
https://github.com/OpenNebula/addon-linstor_un

Source: www.habr.com

Add a comment