Mitte nii kaua aega tagasi esitlesid LINBITi poisid oma uut SDS-lahendust - Linstorit. See on täiesti tasuta salvestusruum, mis põhineb tõestatud tehnoloogiatel: DRBD, LVM, ZFS. Linstor ühendab endas lihtsuse ja hästi läbimõeldud arhitektuuri, mis võimaldab saavutada stabiilsust ja üsna muljetavaldavaid tulemusi.
Täna tahaksin sellest veidi rohkem rääkida ja näidata, kui lihtsalt saab seda OpenNebulaga integreerida, kasutades linstor_un - uut draiverit, mille ma spetsiaalselt selleks otstarbeks välja töötasin.
Linstor koos OpenNebulaga võimaldab teil luua kiire ja töökindla pilve, mida saab hõlpsasti oma infrastruktuuris kasutusele võtta.
Linstori arhitektuur
Linstor ei ole iseenesest failisüsteem ega plokkmälu, Linstor on orkestraator, mis pakub abstraktsioonikihti, et automatiseerida köidete loomist LVM-is või ZFS-is ja kopeerida neid DRBD9 abil.
Stereotüüpide murdmine
Aga oota, DRBD? - Miks seda automatiseerida ja kuidas see üldse toimida saab?
Meenutagem minevikku, kui DRBD8 oli väga populaarne. Selle standardkasutus tähendas ühe suure plokkseadme loomist ja selle lõikamist paljudeks väikesteks tükkideks, kasutades sama LVM-i. Omamoodi mdadm RAID-1, kuid võrgu replikatsiooniga.
See lähenemine ei ole ilma puudusteta ja seetõttu on DRBD9 tulekuga muutunud salvestuse ülesehituse põhimõtted, nüüd luuakse iga virtuaalmasina jaoks eraldi DRBD-seade.
Sõltumatu plokkseadme lähenemine võimaldab klastris ruumi paremini ära kasutada ja lisab ka mitmeid lisafunktsioone. Näiteks saate iga sellise seadme jaoks määrata koopiate arvu, nende asukoha ja individuaalsed seaded. Neid on lihtne luua/kustutada, teha hetktõmmiseid, muuta suurust, lubada krüptimist ja palju muud. Väärib märkimist, et DRBD9 säilitab ka kvoorumi, mis väldib lõhenenud aju olukordi.
Ressursid ja taustaprogrammid
Uue plokkseadme loomisel paigutab Linstor klastri erinevatele sõlmedele vajaliku arvu replikaid. Me nimetame iga sellist koopiat DRBD-ressursiks.
Ressursid on kahte tüüpi:
- Andmeressurss - esindavad DRBD-seadet, mis asub LVM-i või ZFS-i kogumi sõlmes.
Hetkel on tugi mitmele taustaprogrammile ja nende arv kasvab pidevalt. Toetatakse LVM-i, ThinLVM-i ja ZFS-i. Viimased kaks võimaldavad teil luua ja kasutada hetktõmmiseid. - Kettata ressurss - on DRBD-seade, mida hostitakse ilma taustaprogrammita sõlmes, kuid võimaldades seda käsitleda tavalise plokkseadmena, suunatakse kõik lugemis-/kirjutustoimingud ümber andmeressurssidesse. Kettata ressursside lähim analoog on iSCSI LUN.
Igal DRBD ressursil võib olla kuni 8 koopiat ja ainult üks neist saab vaikimisi aktiivne olla esmane, kõik ülejäänud on Kesk- ja nende kasutamine on võimatu seni, kuni on olemas vähemalt üks esmane, st nad lihtsalt kopeerivad andmeid omavahel.
Paigaldades DRBD-seadme süsteemi, muutub see automaatselt esmane, seega võib isegi kettata ressurss DRBD terminoloogias olla esmane.
Miks me siis Linstorit vajame?
Usaldades kõik ressursimahukad ülesanded kernelile, on Linstor sisuliselt tavaline Java rakendus, mis võimaldab DRBD ressursside loomist lihtsalt automatiseerida.
Samal ajal on iga tema loodud ressurss iseseisev DRBD klaster, mis töötab sõltumatult, sõltumata juhttasandi ja muude DRBD ressursside olekust.
Linstor koosneb ainult kahest komponendist:
- linstor-kontroller - Peamine kontroller, mis pakub API-d ressursside loomiseks ja haldamiseks. Samuti suhtleb see satelliitidega, kontrollib nende vaba ruumi ning saadab töid uute ressursside loomiseks ja kustutamiseks. Töötab ühes eksemplaris ja kasutab andmebaasi, mis võib olla sisemine (H2) või väline (PostgreSQL, MySQL, MariaDB)
- linstor-satelliit - Installitud kõikidesse salvestussõlmedesse ja annab kontrollerile teavet vaba ruumi kohta ning täidab ka kontrollerilt saadud ülesandeid, et luua ja kustutada nende peale uusi köiteid ja DRBD-seadmeid.
Linstor töötab järgmiste põhikontseptsioonidega:
- sõlme — füüsiline server, kus luuakse ja kasutatakse DRBD-ressursse.
- Hoiubassein - LVM- või ZFS-bassein, mis on loodud sõlmes, kuhu DRBD-ressursid paigutatakse. Võimalik on ka kettata kogum – see on bassein, kuhu paigutatakse ainult kettata ressursid.
- ressursi määratlus - Ressursi määratlus, tegelikult on see prototüüp, mis kirjeldab nime ja kõiki selle omadusi.
- mahu määratlus — mahu määratlus. Iga ressurss võib koosneda mitmest köitest, igal köitel peab olema suurus.
- Ressurss - Loodud plokkseadme eksemplar, iga ressurss tuleb paigutada konkreetsesse sõlme ja mõnda salvestusbasseini.
Linstori paigaldus
Soovitan süsteemina kasutada Ubuntut, sest. on tema jaoks olemas
add-apt-repository ppa:linbit/linbit-drbd9-stack
apt-get update
Või Debian, kuhu Linstori saab installida ametlikust Proxmoxi hoidlast:
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
kontroller
Siin on kõik lihtne:
apt-get install linstor-controller linstor-client
systemctl enable linstor-controller
systemctl start linstor-controller
Salvestussõlmed
Linuxi kernel tarnitakse praegu koos puusisese kerneli mooduliga DRBD8, kahjuks see meile ei sobi ja peame installima DRBD9:
apt-get install drbd-dkms
Nagu praktika näitab, tekib enamik raskusi just sellest, et süsteemi laaditakse moodul DRBD8, mitte DRBD9. Õnneks on seda lihtne kontrollida, käivitades:
modprobe drbd
cat /proc/drbd
Kui näed versioon: 9 - kõik on hästi, kui versioon: 8 - see tähendab, et midagi läks valesti ja põhjuste väljaselgitamiseks peate astuma täiendavaid samme.
Nüüd installime linstor-satelliit и drbd-utils:
apt-get install linstor-satellite drbd-utils
systemctl enable linstor-satellite
systemctl start linstor-satellite
Looge klaster
Salvestusbasseinid ja sõlmed
Taustaprogrammina võtame ThinLVM, sest see on kõige lihtsam ja toetab hetktõmmiseid.
Komplekt lvm2, kui te pole seda veel teinud, ja loome ThinLVM-i kogumi kõigis meie salvestussõlmedes:
sudo vgcreate drbdpool /dev/sdb
sudo lvcreate -L 800G -T drbdpool/thinpool
Kõiki edasisi toiminguid saab teha otse kontrolleriga:
Lisame oma sõlmed:
linstor node create node1 127.0.0.11
linstor node create node2 127.0.0.12
linstor node create node3 127.0.0.13
Loome salvestusbasseinid:
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
Nüüd kontrollime loodud basseine:
linstor storage-pool list
Kui kõik on õigesti tehtud, peaksime nägema midagi sellist:
+-------------------------------------------------- -------------------------------------------------- ----+ | StoragePool | sõlm | juht | basseini nimi | vaba võimsus | koguvõimsus | Toetab Snapshots | |-------------------------------------------------- -------------------------------------------------- ----| | andmed | sõlm1 | LVM_THIN | drbdpool/thinpool | 64 GiB | 64 GiB | tõsi | | andmed | sõlm2 | LVM_THIN | drbdpool/thinpool | 64 GiB | 64 GiB | tõsi | | andmed | sõlm3 | LVM_THIN | drbdpool/thinpool | 64 GiB | 64 GiB | tõsi | +-------------------------------------------------- -------------------------------------------------- ----+
DRBD ressursid
Proovime nüüd luua oma uut DRBD ressurssi:
linstor resource-definition create myres
linstor volume-definition create myres 1G
linstor resource create myres --auto-place 2
Kontrollime loodud ressursse:
linstor resource list
+-------------------------------------------------- -------------------------------------------------- ---+ | sõlm | ressurss | StoragePool | KöideNr | MinorNr | Seadme nimi | Eraldatud | kasutusel | olek | |-------------------------------------------------- -------------------------------------------------- ---| | sõlm1 | müre | andmed | 0 | 1084 | /dev/drbd1084 | 52 KiB | Kasutamata | UpToDate | | sõlm2 | müre | andmed | 0 | 1084 | /dev/drbd1084 | 52 KiB | Kasutamata | UpToDate | +-------------------------------------------------- -------------------------------------------------- ---+
Suurepärane! - näeme, et ressurss loodi kahes esimeses sõlmes, samuti võime proovida luua kettata ressurssi kolmandas:
linstor resource create --diskless node3 myres
Sõlmedel leiate selle seadme alati kui /dev/drbd1084
või /dev/drbd/by-res/myres/0
Linstor töötab nii, täpsemat infot saad aadressilt
Nüüd räägin sellest, kuidas seda OpenNebulaga integreerida
OpenNebula seadistamine
Ma ei lähe OpenNebula häälestusprotsessi liiga sügavale, sest Kõik sammud on üksikasjalikult kirjeldatud
linstor_un
Selle probleemi lahendamiseks kirjutasin oma draiveri -
Kogu installimine viiakse läbi esiotsa OpenNebula sõlmedes ja see ei nõua arvutussõlmedes täiendavaid toiminguid.
Kõigepealt peame veenduma, et meil on jq и linstor-klient:
apt-get install jq linstor-client
Meeskond linstor node list
peaks kuvama sõlmede loendi. Kõik OpenNebula arvutussõlmed tuleb lisada Linstori klastrisse.
Laadige alla ja installige pistikprogramm:
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
Nüüd peame selle lisama OpenNebula konfiguratsiooni, selleks järgime kirjeldatud lihtsaid samme
Seejärel taaskäivitage OpenNebula:
systemctl restart opennebula
Ja lisage meie andmesalved, süsteem:
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
Ja pildipood:
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
- Parameeter
AUTO_PLACE
kuvab andmekoopiate arvu, mis luuakse iga uue pildi jaoks OpenNebulas. - Parameeter
CLONE_MODE
näitab täpselt, kuidas pilte uute virtuaalmasinate loomisel kloonitakse,snapshot
- loob pildist hetktõmmise ja juurutab hetktõmmise põhjal virtuaalse masina,copy
- teeb iga virtuaalmasina pildist täieliku koopia. - В
BRIDGE_LIST
soovitatav on määrata kõik sõlmed, mida kasutatakse kujutiste kloonimise toimingute tegemiseks.
Toetatud valikute täieliku loendi vaatamiseks vt
See lõpetab seadistamise ja nüüd saate mõne seadme ametlikult alla laadida
Projekti link:
Allikas: www.habr.com