కొంతకాలం క్రితం, LINBIT నుండి వచ్చిన అబ్బాయిలు వారి కొత్త SDS సొల్యూషన్ను అందించారు - Linstor. ఇది నిరూపితమైన సాంకేతికతలపై ఆధారపడిన పూర్తిగా ఉచిత నిల్వ: DRBD, LVM, ZFS. Linstor సరళత మరియు బాగా రూపొందించిన నిర్మాణాన్ని మిళితం చేస్తుంది, ఇది స్థిరత్వం మరియు చాలా ఆకట్టుకునే ఫలితాలను సాధించడానికి మిమ్మల్ని అనుమతిస్తుంది.
ఈ రోజు నేను దాని గురించి కొంచెం వివరంగా మాట్లాడాలనుకుంటున్నాను మరియు linstor_unని ఉపయోగించి OpenNebulaతో దీన్ని ఎంత సులభంగా అనుసంధానించవచ్చో చూపించాలనుకుంటున్నాను - ఈ ప్రయోజనం కోసం నేను ప్రత్యేకంగా అభివృద్ధి చేసిన కొత్త డ్రైవర్.
OpenNebulaతో కలిపి Linstor మీ స్వంత అవస్థాపనలో సులభంగా అమర్చగలిగే వేగవంతమైన మరియు నమ్మదగిన క్లౌడ్ను రూపొందించడానికి మిమ్మల్ని అనుమతిస్తుంది.
లిన్స్టోర్ ఆర్కిటెక్చర్
Linstor అనేది ఫైల్ సిస్టమ్ లేదా బ్లాక్ స్టోరేజ్ పర్ సే కాదు, Linstor అనేది LVM లేదా ZFSలో వాల్యూమ్ల సృష్టిని ఆటోమేట్ చేయడానికి మరియు DRBD9ని ఉపయోగించి వాటిని పునరావృతం చేయడానికి మిమ్మల్ని అనుమతించే ఒక సంగ్రహణ పొరను అందించే ఆర్కెస్ట్రేటర్.
బ్రేకింగ్ స్టీరియోటైప్స్
అయితే వేచి ఉండండి, DRBD? — దీన్ని ఎందుకు ఆటోమేట్ చేయాలి మరియు అది ఎలా పని చేస్తుంది?
DRBD8 బాగా ప్రాచుర్యం పొందిన గతాన్ని గుర్తుచేసుకుందాం. దాని ప్రామాణిక ఉపయోగం ఒక పెద్ద బ్లాక్ పరికరాన్ని సృష్టించడం మరియు అదే LVMని ఉపయోగించి అనేక చిన్న ముక్కలుగా కత్తిరించడం. ఒక రకమైన mdadm RAID-1 కానీ నెట్వర్క్లో ప్రతిరూపణతో.
ఈ విధానం దాని లోపాలు లేకుండా లేదు, అందువలన, DRBD9 రాకతో, నిల్వ రూపకల్పన సూత్రాలు మారాయి; ఇప్పుడు ప్రతి వర్చువల్ మెషీన్ కోసం ప్రత్యేక DRBD పరికరం సృష్టించబడుతుంది.
స్వతంత్ర బ్లాక్ పరికరాలతో ఉన్న విధానం క్లస్టర్లో స్థలాన్ని మెరుగ్గా ఉపయోగించుకోవడానికి అనుమతిస్తుంది మరియు అనేక అదనపు లక్షణాలను కూడా జోడిస్తుంది. ఉదాహరణకు, అటువంటి ప్రతి పరికరానికి మీరు ప్రతిరూపాల సంఖ్య, వాటి స్థానం మరియు వ్యక్తిగత సెట్టింగ్లను నిర్ణయించవచ్చు. వాటిని సృష్టించడం/తొలగించడం, స్నాప్షాట్లు తీయడం, పరిమాణం మార్చడం, ఎన్క్రిప్షన్ని ప్రారంభించడం మరియు మరిన్ని చేయడం సులభం. DRBD9 కోరమ్కు కూడా మద్దతు ఇస్తుందని గమనించాలి, ఇది స్ప్లిట్-మెదడు పరిస్థితులను నివారించడానికి మిమ్మల్ని అనుమతిస్తుంది.
వనరులు మరియు బ్యాకెండ్లు
కొత్త బ్లాక్ పరికరాన్ని సృష్టిస్తున్నప్పుడు, లిన్స్టోర్ క్లస్టర్లోని వివిధ నోడ్లపై అవసరమైన ప్రతిరూపాలను ఉంచుతుంది. మేము అలాంటి ప్రతి ప్రతిరూపాన్ని DRBD వనరుగా పిలుస్తాము.
రెండు రకాల వనరులు ఉన్నాయి:
- డేటా వనరు — అనేది LVM లేదా ZFS పూల్లోని నోడ్పై ఉన్న DRBD పరికరం.
ప్రస్తుతానికి అనేక బ్యాకెండ్లకు మద్దతు ఉంది మరియు వారి సంఖ్య నిరంతరం పెరుగుతోంది. LVM, ThinLVM మరియు ZFSలకు మద్దతు ఉంది. చివరి రెండు స్నాప్షాట్లను సృష్టించడానికి మరియు ఉపయోగించడానికి మిమ్మల్ని అనుమతిస్తాయి. - డిస్క్ లేని వనరు — ఇది బ్యాకెండ్ లేకుండా నోడ్లో ఉంచబడిన DRBD పరికరం, కానీ దానిని సాధారణ బ్లాక్ పరికరంగా పరిగణించడానికి అనుమతిస్తుంది; అన్ని రీడ్/రైట్ ఆపరేషన్లు డేటా వనరులకు దారి మళ్లించబడతాయి. డిస్క్లెస్ వనరులకు దగ్గరగా ఉన్న అనలాగ్ iSCSI LUN.
ప్రతి DRBD వనరు గరిష్టంగా 8 ప్రతిరూపాలను కలిగి ఉంటుంది మరియు వాటిలో ఒకటి మాత్రమే డిఫాల్ట్గా సక్రియంగా ఉంటుంది - ప్రాథమిక, అందరూ ఉంటారు సెకండరీ మరియు కనీసం ఒక ప్రైమరీ ఉన్నంత వరకు వాటి ఉపయోగం అసాధ్యం, అంటే అవి తమ మధ్య డేటాను పునరావృతం చేస్తాయి.
సిస్టమ్లోకి DRBD పరికరాన్ని ఇన్స్టాల్ చేయడం ద్వారా, అది స్వయంచాలకంగా మారుతుంది ప్రాథమిక, కాబట్టి DRBD పరిభాషలో డిస్క్లెస్ వనరు కూడా ప్రాథమికంగా ఉంటుంది.
కాబట్టి మీకు Linstor ఎందుకు అవసరం?
అన్ని రిసోర్స్-ఇంటెన్సివ్ టాస్క్లను కెర్నల్కు అప్పగించడం ద్వారా, Linstor తప్పనిసరిగా ఒక సాధారణ జావా అప్లికేషన్, ఇది DRBD వనరుల సృష్టిని సులభంగా ఆటోమేట్ చేయడానికి మిమ్మల్ని అనుమతిస్తుంది.
అంతేకాకుండా, అతను సృష్టించిన ప్రతి వనరు ఒక స్వతంత్ర DRBD క్లస్టర్గా ఉంటుంది, ఇది నియంత్రణ-విమానం మరియు ఇతర DRBD వనరులతో సంబంధం లేకుండా స్వతంత్రంగా పనిచేస్తుంది.
Linstor రెండు భాగాలను మాత్రమే కలిగి ఉంటుంది:
- లిన్స్టోర్-కంట్రోలర్ - ప్రధాన నియంత్రిక, ఇది వనరులను సృష్టించడం మరియు నిర్వహించడం కోసం APIని అందిస్తుంది. ఇది ఉపగ్రహాలతో కమ్యూనికేట్ చేస్తుంది, వాటిపై ఖాళీ స్థలాన్ని తనిఖీ చేస్తుంది మరియు కొత్త వనరులను సృష్టించడానికి మరియు తొలగించడానికి టాస్క్లను పంపుతుంది. ఇది ఒకే సందర్భంలో నడుస్తుంది మరియు డేటాబేస్ను ఉపయోగిస్తుంది, ఇది అంతర్గత (H2) లేదా బాహ్య (PostgreSQL, MySQL, MariaDB)
- లిన్స్టోర్-ఉపగ్రహం — అన్ని స్టోరేజ్ నోడ్లలో ఇన్స్టాల్ చేయబడింది మరియు కంట్రోలర్కు ఖాళీ స్థలం గురించి సమాచారాన్ని అందిస్తుంది మరియు వాటి పైన కొత్త వాల్యూమ్లు మరియు DRBD పరికరాలను సృష్టించడానికి మరియు తొలగించడానికి కంట్రోలర్ నుండి స్వీకరించిన పనులను కూడా నిర్వహిస్తుంది.
Linstor క్రింది కీలక భావనలతో పనిచేస్తుంది:
- నోడ్ — DRBD వనరులు సృష్టించబడే మరియు ఉపయోగించబడే భౌతిక సర్వర్.
- నిల్వ కొలను — DRBD వనరులు ఉండే నోడ్లో LVM లేదా ZFS పూల్ సృష్టించబడింది. డిస్క్లెస్ పూల్ కూడా సాధ్యమే - ఇది డిస్క్లెస్ వనరులు మాత్రమే ఉండే పూల్.
- వనరుల నిర్వచనం - వనరు యొక్క నిర్వచనం తప్పనిసరిగా పేరు మరియు దాని అన్ని లక్షణాలను వివరించే ఒక నమూనా.
- వాల్యూమ్ నిర్వచనం - వాల్యూమ్ నిర్వచనం. ప్రతి వనరు బహుళ వాల్యూమ్లను కలిగి ఉంటుంది, ప్రతి వాల్యూమ్ తప్పనిసరిగా పరిమాణాన్ని కలిగి ఉండాలి.
- రిసోర్స్ — బ్లాక్ పరికరం యొక్క సృష్టించబడిన ఉదాహరణ, ప్రతి వనరు తప్పనిసరిగా నిర్దిష్ట నోడ్లో మరియు కొంత నిల్వ పూల్లో ఉంచాలి.
Linstor సంస్థాపన
ఉబుంటును సిస్టమ్గా ఉపయోగించమని నేను సిఫార్సు చేస్తున్నాను, ఎందుకంటే... ఆమె కోసం ఉంది
add-apt-repository ppa:linbit/linbit-drbd9-stack
apt-get update
లేదా డెబియన్, ప్రాక్స్మాక్స్ కోసం అధికారిక రిపోజిటరీ నుండి లిన్స్టోర్ను ఇన్స్టాల్ చేయవచ్చు:
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
కంట్రోలర్
ఇక్కడ ప్రతిదీ సులభం:
apt-get install linstor-controller linstor-client
systemctl enable linstor-controller
systemctl start linstor-controller
నిల్వ నోడ్స్
Linux కెర్నల్ ప్రస్తుతం ఇన్-ట్రీ కెర్నల్ మాడ్యూల్తో రవాణా చేయబడుతోంది DRBD8, దురదృష్టవశాత్తు ఇది మాకు సరిపోదు మరియు మేము ఇన్స్టాల్ చేయాలి DRBD9:
apt-get install drbd-dkms
ఆచరణలో చూపినట్లుగా, DRBD8 మాడ్యూల్ సిస్టమ్లోకి లోడ్ చేయబడినందున చాలా ఇబ్బందులు తలెత్తుతాయి మరియు DRBD9 కాదు. అదృష్టవశాత్తూ, దీన్ని అమలు చేయడం ద్వారా తనిఖీ చేయడం సులభం:
modprobe drbd
cat /proc/drbd
మీరు చూస్తే వెర్షన్: 9 - అంటే అంతా బాగానే ఉంటే వెర్షన్: 8 - ఏదో తప్పు జరిగిందని అర్థం మరియు కారణాలను తెలుసుకోవడానికి మీరు అదనపు చర్యలు తీసుకోవాలి.
ఇప్పుడు ఇన్స్టాల్ చేద్దాం linstor-ఉపగ్రహం и drbd-utils:
apt-get install linstor-satellite drbd-utils
systemctl enable linstor-satellite
systemctl start linstor-satellite
క్లస్టర్ను సృష్టించండి
నిల్వ కొలనులు మరియు నోడ్స్
బ్యాకెండ్గా మేము తీసుకుంటాము ThinLVM, ఎందుకంటే ఇది సరళమైనది మరియు స్నాప్షాట్లకు మద్దతు ఇస్తుంది.
ఇన్స్టాల్ lvm2, మీరు ఇప్పటికే అలా చేయకుంటే, మా అన్ని స్టోరేజ్ నోడ్లలో ThinLVM పూల్ని క్రియేట్ చేద్దాం:
sudo vgcreate drbdpool /dev/sdb
sudo lvcreate -L 800G -T drbdpool/thinpool
అన్ని తదుపరి చర్యలు నేరుగా కంట్రోలర్పై నిర్వహించబడతాయి:
మన నోడ్లను జోడిద్దాం:
linstor node create node1 127.0.0.11
linstor node create node2 127.0.0.12
linstor node create node3 127.0.0.13
నిల్వ కొలనులను సృష్టిద్దాం:
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
ఇప్పుడు సృష్టించిన కొలనులను తనిఖీ చేద్దాం:
linstor storage-pool list
ప్రతిదీ సరిగ్గా జరిగితే, మనం ఇలాంటివి చూడాలి:
+------------------------------------------------ ------------------------------------------------- ----+ | StoragePool | నోడ్ | డ్రైవర్ | పూల్ పేరు | ఉచిత కెపాసిటీ | మొత్తం కెపాసిటీ | మద్దతు స్నాప్షాట్లు | |------------------------------------------------ ------------------------------------------------- ---| | డేటా | నోడ్1 | LVM_THIN | drbdpool/thinpool | 64 GiB | 64 GiB | నిజం | | డేటా | నోడ్2 | LVM_THIN | drbdpool/thinpool | 64 GiB | 64 GiB | నిజం | | డేటా | నోడ్3 | LVM_THIN | drbdpool/thinpool | 64 GiB | 64 GiB | నిజం | +------------------------------------------------ ------------------------------------------------- ----+
DRBD వనరులు
ఇప్పుడు మన కొత్త DRBD వనరుని సృష్టించడానికి ప్రయత్నిద్దాం:
linstor resource-definition create myres
linstor volume-definition create myres 1G
linstor resource create myres --auto-place 2
సృష్టించిన వనరులను తనిఖీ చేద్దాం:
linstor resource list
+------------------------------------------------ ------------------------------------------------- ---+ | నోడ్ | వనరు | StoragePool | VolumeNr | MinorNr | పరికరం పేరు | కేటాయించబడింది | వాడుక | రాష్ట్రం | |------------------------------------------------ ------------------------------------------------- --| | నోడ్1 | మైరెస్ | డేటా | 0 | 1084 | /dev/drbd1084 | 52 కిబి | ఉపయోగించని | ఇప్పటి వరకు | | నోడ్2 | మైరెస్ | డేటా | 0 | 1084 | /dev/drbd1084 | 52 కిబి | ఉపయోగించని | ఇప్పటి వరకు | +------------------------------------------------ ------------------------------------------------- ---+
గొప్ప! - మొదటి రెండు నోడ్లలో వనరు సృష్టించబడిందని మేము చూస్తాము, మూడవదానిలో డిస్క్లెస్ వనరును సృష్టించడానికి కూడా ప్రయత్నించవచ్చు:
linstor resource create --diskless node3 myres
నోడ్లలో మీరు ఎల్లప్పుడూ ఈ పరికరాన్ని ఇలా కనుగొంటారు /dev/drbd1084
లేదా /dev/drbd/by-res/myres/0
ఈ విధంగా Linstor పని చేస్తుంది, మీరు మరింత సమాచారాన్ని పొందవచ్చు
ఇప్పుడు నేను ఓపెన్ నెబ్యులాతో ఎలా అనుసంధానించాలో మీకు చెప్తాను
OpenNebulaని సెటప్ చేస్తోంది
నేను OpenNebula సెటప్ ప్రాసెస్లో చాలా లోతుగా వెళ్లను, ఎందుకంటే... అన్ని దశలు వివరంగా వివరించబడ్డాయి
linstor_un
ఈ సమస్యను పరిష్కరించడానికి, నేను నా స్వంత డ్రైవర్ను వ్రాసాను -
మొత్తం ఇన్స్టాలేషన్ ఫ్రంటెండ్ ఓపెన్నెబ్యులా నోడ్లపై నిర్వహించబడుతుంది మరియు కంప్యూట్ నోడ్లపై అదనపు చర్యలు అవసరం లేదు.
అన్నింటిలో మొదటిది, మనకు ఉందని నిర్ధారించుకోవాలి jq и linstor-క్లయింట్:
apt-get install jq linstor-client
జట్టు linstor node list
నోడ్ల జాబితాను ప్రదర్శించాలి. అన్ని OpenNebula కంప్యూట్ నోడ్లు తప్పనిసరిగా Linstor క్లస్టర్కు జోడించబడాలి.
ప్లగిన్ని డౌన్లోడ్ చేసి, ఇన్స్టాల్ చేయండి:
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
ఇప్పుడు మనం దీన్ని OpenNebula configకి జోడించాలి, దీన్ని చేయడానికి మేము వివరించిన సాధారణ దశలను అనుసరిస్తాము
తర్వాత OpenNebulaని పునఃప్రారంభించండి:
systemctl restart opennebula
మరియు మా డేటాస్టోర్లను జోడించండి, సిస్టమ్:
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
మరియు ఇమేజ్ స్టోర్:
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
- పరామితి
AUTO_PLACE
OpenNebulaలో ప్రతి కొత్త చిత్రం కోసం సృష్టించబడే డేటా ప్రతిరూపాల సంఖ్యను ప్రదర్శిస్తుంది. - పరామితి
CLONE_MODE
కొత్త వర్చువల్ మిషన్లను సృష్టించేటప్పుడు ఇమేజ్లు ఎలా క్లోన్ చేయబడతాయో ఖచ్చితంగా సూచిస్తుంది,snapshot
- చిత్రం యొక్క స్నాప్షాట్ను సృష్టిస్తుంది మరియు స్నాప్షాట్ నుండి వర్చువల్ మెషీన్ను అమలు చేస్తుంది,copy
— ప్రతి వర్చువల్ మెషీన్ కోసం ఇమేజ్ యొక్క పూర్తి కాపీని చేస్తుంది. - В
BRIDGE_LIST
ఇమేజ్ క్లోనింగ్ ఆపరేషన్లను నిర్వహించడానికి ఉపయోగించే అన్ని నోడ్లను పేర్కొనమని సిఫార్సు చేయబడింది.
మద్దతు ఉన్న పారామితుల పూర్తి జాబితా కోసం, చూడండి
ఇది సెటప్ను పూర్తి చేస్తుంది, ఇప్పుడు మీరు అధికారిక నుండి కొంత ఉపకరణాన్ని డౌన్లోడ్ చేసుకోవచ్చు
ప్రాజెక్ట్ లింక్:
మూలం: www.habr.com