LINSTOR хадгалалт ба түүнийг OpenNebula-тай нэгтгэх

LINSTOR хадгалалт ба түүнийг OpenNebula-тай нэгтгэх

Тун удалгүй LINBIT-ийн залуус шинэ SDS шийдлийг танилцуулсан - Linstor. Энэ бол батлагдсан технологид суурилсан үнэгүй хадгалах сан юм: DRBD, LVM, ZFS. Linstor нь энгийн байдал, сайн зохион бүтээгдсэн архитектурыг хослуулсан бөгөөд энэ нь тогтвортой байдал, гайхалтай үр дүнд хүрэх боломжийг олгодог.

Өнөөдөр би энэ талаар бага зэрэг дэлгэрэнгүй ярьж, энэ зорилгоор тусгайлан боловсруулсан шинэ драйвер болох linstor_un ашиглан OpenNebula-тай хэрхэн хялбар нэгтгэж болохыг харуулахыг хүсч байна.

Linstor нь OpenNebula-тай хослуулан өөрийн дэд бүтцэд хялбархан байршуулж болох хурдан бөгөөд найдвартай үүл бүтээх боломжийг танд олгоно.

Linstor архитектур

Linstor бол файлын систем эсвэл блок хадгалах газар биш, Linstor бол LVM эсвэл ZFS дээр эзлэхүүн үүсгэх ажлыг автоматжуулах, DRBD9 ашиглан хуулбарлах боломжийг олгодог хийсвэрлэлийн давхаргаар хангадаг найруулагч юм.

Хэвшмэл ойлголтыг эвдэх

Гэхдээ хүлээгээрэй, DRBD? — Яагаад үүнийг автоматжуулж, яаж ажиллах вэ?

DRBD8 маш их алдартай байсан өнгөрсөн үеийг санацгаая. Үүний стандарт хэрэглээ нь нэг том блок төхөөрөмжийг бүтээж, ижил LVM ашиглан олон жижиг хэсгүүдэд хуваасан. Нэг төрлийн mdadm RAID-1 боловч сүлжээгээр хуулбарлах боломжтой.

Энэ арга нь сул талгүй бөгөөд DRBD9 гарч ирснээр хадгалах дизайны зарчим өөрчлөгдсөн бөгөөд одоо виртуал машин бүрт тусдаа DRBD төхөөрөмж бий болсон.

Бие даасан блок төхөөрөмжүүдийн арга барил нь кластер дахь орон зайг илүү сайн ашиглах боломжийг олгодог бөгөөд мөн хэд хэдэн нэмэлт функцуудыг нэмж өгдөг. Жишээлбэл, ийм төхөөрөмж бүрийн хувьд та хуулбарын тоо, тэдгээрийн байршил, хувийн тохиргоог тодорхойлж болно. Тэдгээрийг үүсгэх/устгах, агшин зуурын зураг авах, хэмжээг өөрчлөх, шифрлэлтийг идэвхжүүлэх зэрэгт хялбар байдаг. DRBD9 нь чуулгыг дэмждэг бөгөөд энэ нь тархи хуваагдахаас зайлсхийх боломжийг олгодог гэдгийг тэмдэглэх нь зүйтэй.

Нөөц ба нөөц

Шинэ блок төхөөрөмж үүсгэх үед Linstor шаардлагатай тооны хуулбарыг кластерын өөр өөр зангилаанууд дээр байрлуулдаг. Бид ийм хуулбар бүрийг DRBD нөөц гэж нэрлэх болно.

Хоёр төрлийн нөөц байдаг:

  • Өгөгдлийн нөөц — нь LVM эсвэл ZFS сан дахь зангилаа дээр байрлах DRBD төхөөрөмж юм.
    Одоогийн байдлаар хэд хэдэн арын хэсэгт дэмжлэг үзүүлж байгаа бөгөөд тэдний тоо байнга нэмэгдэж байна. LVM, ThinLVM болон ZFS-ийн дэмжлэг байдаг. Сүүлийн хоёр нь хормын хувилбар үүсгэх, ашиглах боломжийг танд олгоно.
  • Дискгүй нөөц — DRBD төхөөрөмж нь арын хэсэггүй зангилаа дээр байрладаг, гэхдээ үүнийг ердийн блок төхөөрөмж гэж үзэх боломжийг олгодог; бүх унших/бичих үйлдлүүд өгөгдлийн нөөц рүү дахин чиглэгдэх болно. Дискгүй нөөцийн хамгийн ойрын аналог бол iSCSI LUN юм.

DRBD нөөц бүр 8 хүртэлх хуулбартай байж болох ба тэдгээрийн зөвхөн нэг нь анхдагчаар идэвхтэй байж болно. анхан шатны, бусад бүх хүмүүс байх болно Хоёрдогч ба наад зах нь нэг Анхдагч байгаа бол тэдгээрийг ашиглах боломжгүй болно, өөрөөр хэлбэл тэд өөр хоорондоо өгөгдлийг хуулбарлах болно.

DRBD төхөөрөмжийг системд суулгаснаар энэ нь автоматаар болдог анхан шатны, иймээс DRBD нэр томъёогоор Дискгүй нөөц ч гэсэн Үндсэн байж болно.

Тэгвэл яагаад танд Линстор хэрэгтэй байна вэ?

Нөөц их шаарддаг бүх ажлыг цөмд даатгаснаар Linstor нь үндсэндээ DRBD нөөцийг үүсгэх ажлыг хялбархан автоматжуулах боломжийг олгодог ердийн Java програм юм.
Түүгээр ч зогсохгүй түүний үүсгэсэн нөөц бүр нь хяналтын хавтгай болон бусад DRBD нөөцийн төлөв байдлаас үл хамааран бие даан ажилладаг бие даасан DRBD кластер байх болно.

Linstor нь зөвхөн хоёр бүрэлдэхүүн хэсгээс бүрдэнэ:

  • Линстор-хянагч - Нөөцийг бий болгох, удирдах API-г хангадаг үндсэн хянагч. Мөн хиймэл дагуулуудтай холбогдож, тэдгээрийн сул зайг шалгаж, шинэ нөөц үүсгэх, устгах даалгавар илгээдэг. Энэ нь нэг жишээнд ажилладаг бөгөөд дотоод (H2) эсвэл гадаад (PostgreSQL, MySQL, MariaDB) байж болох мэдээллийн санг ашигладаг.
  • Linstor хиймэл дагуул — Бүх хадгалах цэгүүд дээр суулгасан бөгөөд хянагчийг сул зайны талаарх мэдээллээр хангахаас гадна хянагчаас хүлээн авсан шинэ боть болон DRBD төхөөрөмжүүдийг үүсгэх, устгах ажлыг гүйцэтгэдэг.

Linstor нь дараах үндсэн ойлголтуудаар ажилладаг.

  • Зангилаа — DRBD нөөцийг үүсгэж ашиглах физик сервер.
  • Хадгалах сан — DRBD нөөцийг байрлуулах зангилаа дээр үүсгэсэн LVM эсвэл ZFS сан. Дискгүй сан бас боломжтой - энэ нь зөвхөн дискгүй нөөцийг байрлуулах сан юм.
  • Нөөцийн тодорхойлолт — Нөөцийн тодорхойлолт нь үндсэндээ нэр болон түүний бүх шинж чанарыг тодорхойлсон эх загвар юм.
  • Эзлэхүүний тодорхойлолт - Эзлэхүүний тодорхойлолт. Нөөц бүр олон ботиос бүрдэх боломжтой бөгөөд боть бүр хэмжээтэй байх ёстой.
  • нөөцийн — Блок төхөөрөмжийн үүсгэсэн жишээ, нөөц бүрийг тодорхой зангилаа болон зарим хадгалах санд байрлуулах ёстой.

Linstor суурилуулалт

Би Ubuntu-г систем болгон ашиглахыг зөвлөж байна, учир нь... түүний төлөө байдаг бэлэн PPA:

add-apt-repository ppa:linbit/linbit-drbd9-stack
apt-get update

Эсвэл Debian, Линсторыг 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

хянагчийн

Энд бүх зүйл энгийн:

apt-get install linstor-controller linstor-client
systemctl enable linstor-controller
systemctl start linstor-controller

Хадгалах цэгүүд

Линуксийн цөм нь одоогоор мод доторх цөмийн модулийн хамт ирдэг DRBD8, харамсалтай нь энэ нь бидэнд тохирохгүй байгаа бөгөөд бид суулгах шаардлагатай байна DRBD9:

apt-get install drbd-dkms

Практикаас харахад ихэнх бэрхшээлүүд DRBD8 биш харин DRBD9 модулийг системд ачаалснаас болж үүсдэг. Аз болоход үүнийг ажиллуулах замаар шалгахад хялбар байдаг:

modprobe drbd
cat /proc/drbd

Хэрэв та харвал хувилбар: 9 - Хэрэв бүх зүйл сайхан байна гэсэн үг хувилбар: 8 - Энэ нь ямар нэг зүйл буруу болсон гэсэн үг бөгөөд шалтгааныг олж мэдэхийн тулд нэмэлт арга хэмжээ авах шаардлагатай байна.

Одоо суулгацгаая линстор хиймэл дагуул и 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 | Зангилаа | Жолооч | PoolName | FreeCapacity | Нийт хүчин чадал | SupportsSnapshots |
|------------------------------------------------ - ------------------------------------------------- - ---|
| өгөгдөл | зангилаа1 | LVM_THIN | drbdpool/thinpool | 64 ГБ | 64 ГБ | үнэн |
| өгөгдөл | зангилаа2 | LVM_THIN | drbdpool/thinpool | 64 ГБ | 64 ГБ | үнэн |
| өгөгдөл | зангилаа3 | LVM_THIN | drbdpool/thinpool | 64 ГБ | 64 ГБ | үнэн |
+------------------------------------------------ ------------------------------------------------- ----+

DRBD нөөц

Одоо шинэ DRBD нөөцийг бий болгохыг хичээцгээе:

linstor resource-definition create myres
linstor volume-definition create myres 1G
linstor resource create myres --auto-place 2

Үүсгэсэн нөөцийг шалгацгаая:

linstor resource list 

+------------------------------------------------ ------------------------------------------------- ---+
| Зангилаа | Нөөц | StoragePool | ЭзлэхүүнNr | MinorNr | Төхөөрөмжийн нэр | Хуваарилагдсан | InUse | Төрийн |
|------------------------------------------------ - ------------------------------------------------- - --|
| зангилаа1 | myres | өгөгдөл | 0 | 1084 | /dev/drbd1084 | 52 КБ | Ашиглагдаагүй | UpToDate |
| зангилаа2 | myres | өгөгдөл | 0 | 1084 | /dev/drbd1084 | 52 КБ | Ашиглагдаагүй | UpToDate |
+------------------------------------------------ ------------------------------------------------- ---+

Агуу их! - эхний хоёр зангилаа дээр нөөц үүсгэгдсэн болохыг бид харж байна, бид гурав дахь дээр дискгүй нөөц үүсгэхийг оролдож болно:

linstor resource create --diskless node3 myres

Зангилаанууд дээр та энэ төхөөрөмжийг үргэлж олох болно /dev/drbd1084 буюу /dev/drbd/by-res/myres/0

Linstor ингэж ажилладаг тул та эндээс дэлгэрэнгүй мэдээлэл авах боломжтой албан ёсны баримт бичиг.

Одоо би үүнийг OpenNebula-тай хэрхэн нэгтгэхийг танд хэлэх болно

OpenNebula-г тохируулж байна

Би OpenNebula-г тохируулах процесс руу хэт гүнзгий орохгүй, учир нь... бүх алхамыг дэлгэрэнгүй тайлбарласан болно албан ёсны баримт бичиг, би танд холбоо барихыг зөвлөж байна, би зөвхөн OpenNebula-г Линстортой нэгтгэх тухай л хэлэх болно.

linstor_un

Энэ асуудлыг шийдэхийн тулд би өөрийн жолоочийг бичсэн. linstor_un, энэ нь одоогоор залгаас хэлбэрээр байгаа бөгөөд тусад нь суулгасан байх ёстой.

Суулгацыг бүхэлд нь урд талын OpenNebula зангилаанууд дээр гүйцэтгэдэг бөгөөд тооцоолох цэгүүд дээр нэмэлт үйлдэл хийх шаардлагагүй.

Юуны өмнө бид байгаа эсэхийг шалгах хэрэгтэй 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 тохиргоонд нэмэх хэрэгтэй бөгөөд үүнийг хийхийн тулд бид тайлбарласан энгийн алхмуудыг дагана уу энд.

Дараа нь 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 Зургийг хувилах үйлдлийг гүйцэтгэхэд ашиглагдах бүх зангилааг зааж өгөхийг зөвлөж байна.

Дэмжигдсэн параметрүүдийн бүрэн жагсаалтыг үзнэ үү README төсөл.

Энэ нь тохиргоог хийж дууслаа, одоо та албан ёсны төхөөрөмжөөс зарим төхөөрөмжийг татаж авах боломжтой OpenNebula Marketplace мөн үүнээс виртуал машин үүсгэх.

Төслийн холбоос:
https://github.com/OpenNebula/addon-linstor_un

Эх сурвалж: www.habr.com

сэтгэгдэл нэмэх