{"id":33523,"date":"2019-10-31T21:53:05","date_gmt":"2019-10-31T18:53:05","guid":{"rendered":"https:\/\/prohoster.info\/blog\/hranilishhe-linstor-i-ego-integratsiya-s-opennebula\/"},"modified":"2019-10-31T21:53:05","modified_gmt":"2019-10-31T18:53:05","slug":"hranilishhe-linstor-i-ego-integratsiya-s-opennebula","status":"publish","type":"post","link":"https:\/\/prohoster.info\/pl\/blog\/administrirovanie\/hranilishhe-linstor-i-ego-integratsiya-s-opennebula","title":{"rendered":"Magazyn LINSTOR i jego integracja z OpenNebula","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Magazyn LINSTOR i jego integracja z OpenNebula\" src=\"\/wp-content\/uploads\/2019\/05\/c8b6a7c02c4e5b043be327838152f8a1.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Nie tak dawno temu zesp\u00f3\u0142 LINBIT zaprezentowa\u0142 swoje nowe rozwi\u0105zanie SDS - Linstor. To w pe\u0142ni otwarte przechowywanie danych, kt\u00f3re opiera si\u0119 na sprawdzonych technologiach: DRBD, LVM, ZFS. Linstor \u0142\u0105czy w sobie prostot\u0119 i dobrze przemy\u015blan\u0105 architektur\u0119, co pozwala osi\u0105gn\u0105\u0107 stabilno\u015b\u0107 i imponuj\u0105ce wyniki.<\/p>\n<p><\/p>\n<p>Dzi\u015b chcia\u0142bym opowiedzie\u0107 nieco wi\u0119cej o nim i pokaza\u0107, jak \u0142atwo mo\u017cna zintegrowa\u0107 go z OpenNebula, korzystaj\u0105c z linstor_un - nowego sterownika, kt\u00f3ry opracowa\u0142em specjalnie w tym celu.<\/p>\n<p><\/p>\n<p>Linstor w po\u0142\u0105czeniu z OpenNebula pozwala zbudowa\u0107 szybkie i niezawodne chmury, kt\u00f3re mo\u017cna bez problemu wdro\u017cy\u0107 na w\u0142asnej infrastrukturze.<\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h2 id=\"arhitektura-linstor\">Architektura Linstor<\/h2>\n<p><\/p>\n<p>Linstor nie jest ani systemem plik\u00f3w, ani samodzielnym blokowym magazynem; Linstor to orkiestrator, kt\u00f3ry zapewnia warstw\u0119 abstrakcji, umo\u017cliwiaj\u0105c\u0105 automatyzacj\u0119 tworzenia wolumen\u00f3w w LVM lub ZFS i ich replikacj\u0119 za pomoc\u0105 DRBD9.<\/p>\n<p><\/p>\n<h5 id=\"lomaem-stereotipy\">\u0141amiemy stereotypy<\/h5>\n<p><\/p>\n<p>Ale poczekaj, DRBD? - Po co go automatyzowa\u0107 i jak to w og\u00f3le mo\u017ce dzia\u0142a\u0107?<\/p>\n<p><\/p>\n<p>Przypomnijmy sobie przesz\u0142o\u015b\u0107, kiedy DRBD8 cieszy\u0142 si\u0119 du\u017c\u0105 popularno\u015bci\u0105. Jego standardowe u\u017cycie zak\u0142ada\u0142o tworzenie jednego du\u017cego urz\u0105dzenia blokowego i dzielenie go na wiele ma\u0142ych kawa\u0142k\u00f3w, przy pomocy LVM. Co\u015b jak mdadm RAID-1, ale z replikacj\u0105 przez sie\u0107.<\/p>\n<p><\/p>\n<p>Takie podej\u015bcie ma swoje wady, dlatego wraz z nadej\u015bciem DRBD9 zasady budowy magazynu uleg\u0142y zmianie; teraz dla ka\u017cdej wirtualki tworzy si\u0119 oddzielne urz\u0105dzenie DRBD.<\/p>\n<p><\/p>\n<p>Podej\u015bcie z niezale\u017cnymi urz\u0105dzeniami blokowymi pozwala lepiej wykorzystywa\u0107 przestrze\u0144 w klastrze, a tak\u017ce dodaje szereg dodatkowych mo\u017cliwo\u015bci. Przyk\u0142adowo, dla ka\u017cdego z takich urz\u0105dze\u0144 mo\u017cna okre\u015bli\u0107 liczb\u0119 replik, ich lokalizacj\u0119 i indywidualne ustawienia. \u0141atwo je tworzy\u0107\/usuwa\u0107, robi\u0107 migawki, zmienia\u0107 rozmiar, w\u0142\u0105cza\u0107 szyfrowanie i wiele wi\u0119cej. Warto zauwa\u017cy\u0107, \u017ce DRBD9 wspiera r\u00f3wnie\u017c quorum, co pozwala unikn\u0105\u0107 sytuacji split-brain.<\/p>\n<p><\/p>\n<h5 id=\"resursy-i-bekendy\">Zasoby i backendy<\/h5>\n<p><\/p>\n<p>Tworz\u0105c nowe urz\u0105dzenie blokowe, Linstor umieszcza potrzebn\u0105 ilo\u015b\u0107 replik na r\u00f3\u017cnych w\u0119z\u0142ach w klastrze. Ka\u017cd\u0105 z takich replik b\u0119dziemy nazywa\u0107 zasobem DRBD.<\/p>\n<p><\/p>\n<p>Zasoby wyst\u0119puj\u0105 w dw\u00f3ch typach:<\/p>\n<p><\/p>\n<ul>\n<li><strong>Zas\u00f3b danych<\/strong> \u2014 reprezentuj\u0105 urz\u0105dzenie DRBD umieszczone na w\u0119\u017ale w puli LVM lub ZFS.<br \/>\nObecnie istnieje wsparcie dla kilku backend\u00f3w, a ich liczba stale ro\u015bnie. Dost\u0119pne s\u0105 LVM, ThinLVM i ZFS. Ostatnie dwa umo\u017cliwiaj\u0105 tworzenie i korzystanie ze snapshot\u00f3w.<\/li>\n<li><strong>Zas\u00f3b bezdyskowy<\/strong> \u2014 to urz\u0105dzenie DRBD umieszczone na w\u0119\u017ale bez backendu, ale pozwalaj\u0105ce na traktowanie go jak zwyk\u0142ego urz\u0105dzenia blokowego, wszystkie operacje odczytu\/zapisu b\u0119d\u0105 przekierowywane na zasoby danych. Najbli\u017cszym odpowiednikiem zasob\u00f3w bezdyskowych s\u0105 LUN iSCSI.<\/li>\n<\/ul>\n<p><\/p>\n<p>Ka\u017cdy zas\u00f3b DRBD mo\u017ce mie\u0107 do 8 replik, i tylko jedna z nich mo\u017ce by\u0107 domy\u015blnie aktywna \u2014 <strong>Primary<\/strong>, wszystkie pozosta\u0142e b\u0119d\u0105 <strong>Secondary<\/strong> i ich u\u017cycie b\u0119dzie niemo\u017cliwe, dop\u00f3ki jest przynajmniej jeden Primary, co oznacza, \u017ce po prostu b\u0119d\u0105 replikowa\u0107 dane mi\u0119dzy sob\u0105.<\/p>\n<p><\/p>\n<p>Montuj\u0105c urz\u0105dzenie DRBD w systemie, automatycznie staje si\u0119 ono <strong>Primary<\/strong>, w ten spos\u00f3b nawet zas\u00f3b bezdyskowy, w terminologii DRBD, mo\u017ce by\u0107 Primary.<\/p>\n<p><\/p>\n<h5 id=\"tak-zachem-nuzhen-linstor\">Wi\u0119c po co potrzebny jest Linstor?<\/h5>\n<p><\/p>\n<p>Powierzaj\u0105c wszystkie zasobo\u017cerne zadania rdzeniowi, Linstor w zasadzie jest zwyk\u0142\u0105 aplikacj\u0105 Java, kt\u00f3ra umo\u017cliwia \u0142atw\u0105 automatyzacj\u0119 tworzenia zasob\u00f3w DRBD.<br \/>\nPrzy tym ka\u017cdy zas\u00f3b utworzony przez Linstor b\u0119dzie niezale\u017cnym klastrem DRBD, kt\u00f3ry dzia\u0142a samodzielnie, niezale\u017cnie od stanu kontrolera i innych zasob\u00f3w DRBD.<\/p>\n<p><\/p>\n<p><strong>Linstor sk\u0142ada si\u0119 z dw\u00f3ch komponent\u00f3w:<\/strong><\/p>\n<p><\/p>\n<ul>\n<li><strong>Linstor-controller<\/strong> \u2014 G\u0142\u00f3wny kontroler, kt\u00f3ry zapewnia API do tworzenia i zarz\u0105dzania zasobami. Komunikuje si\u0119 r\u00f3wnie\u017c z satelitami, sprawdzaj\u0105c wolne miejsce na nich, oraz wysy\u0142a zadania do tworzenia i usuwania nowych zasob\u00f3w. Uruchamiany w pojedynczej instancji i korzysta z bazy danych, kt\u00f3ra mo\u017ce by\u0107 wewn\u0119trzna (H2) lub zewn\u0119trzna (PostgreSQL, MySQL, MariaDB)<\/li>\n<li><strong>Linstor-satellite<\/strong> \u2014 Instalowany na wszystkich w\u0119z\u0142ach storage i dostarcza kontrolerowi informacje o wolnej przestrzeni, a tak\u017ce wykonuje zadania otrzymane od kontrolera w celu tworzenia i usuwania nowych wolumin\u00f3w oraz urz\u0105dze\u0144 DRBD na ich podstawie.<\/li>\n<\/ul>\n<p><\/p>\n<p><strong>Linstor operuje na nast\u0119puj\u0105cych kluczowych poj\u0119ciach:<\/strong><\/p>\n<p><\/p>\n<ul>\n<li><strong>W\u0119ze\u0142<\/strong> \u2014 fizyczny serwer, na kt\u00f3rym b\u0119d\u0105 tworzone i u\u017cywane zasoby DRBD.<\/li>\n<li><strong>Pula pami\u0119ci masowej<\/strong> \u2014 Pula LVM lub ZFS utworzona na w\u0119\u017ale, w kt\u00f3rej b\u0119d\u0105 przechowywane zasoby DRBD. Istnieje r\u00f3wnie\u017c mo\u017cliwo\u015b\u0107 utworzenia puli bezdyskowej \u2014 jest to pula, w kt\u00f3rej b\u0119d\u0105 przechowywane tylko zasoby bezdyskowe.<\/li>\n<li><strong>Definicja zasobu<\/strong> \u2014 Definicja zasobu, w zasadzie jest to prototyp, kt\u00f3ry opisuje nazw\u0119 i wszystkie jej w\u0142a\u015bciwo\u015bci.<\/li>\n<li><strong>Definicja wolumenu<\/strong> \u2014 Definicja wolumenu. Ka\u017cdy zas\u00f3b mo\u017ce sk\u0142ada\u0107 si\u0119 z kilku wolumen\u00f3w, a ka\u017cdy wolumen musi mie\u0107 rozmiar.<\/li>\n<li><strong>Zas\u00f3b<\/strong> \u2014 Utworzony egzemplarz bloku urz\u0105dzenia, ka\u017cdy zas\u00f3b musi by\u0107 umieszczony na okre\u015blonym w\u0119\u017ale i w jakim\u015b storage pool.<\/li>\n<\/ul>\n<p><\/p>\n<h2 id=\"ustanovka-linstor\">Instalacja Linstor<\/h2>\n<p><\/p>\n<p>Jako system rekomenduj\u0119 u\u017cycie Ubuntu, poniewa\u017c istnieje dla niego <noindex><a rel=\"nofollow\" href=\"https:\/\/launchpad.net\/~linbit\/+archive\/ubuntu\/linbit-drbd9-stack\">gotowe PPA<\/a><\/noindex>:<\/p>\n<p><\/p>\n<pre><code class=\"bash\">add-apt-repository ppa:linbit\/linbit-drbd9-stack\napt-get update<\/code><\/pre>\n<p><\/p>\n<p>Lub Debian, gdzie Linstor mo\u017cna zainstalowa\u0107 z oficjalnego repozytorium dla Proxmox:<\/p>\n<p><\/p>\n<pre><code class=\"bash\">wget -O- https:\/\/packages.linbit.com\/package-signing-pubkey.asc | apt-key add -\nPVERS=5 &amp;&amp; echo \"deb http:\/\/packages.linbit.com\/proxmox\/ proxmox-$PVERS drbd-9.0\" &gt; \n    \/etc\/apt\/sources.list.d\/linbit.list\napt-get update<\/code><\/pre>\n<p><\/p>\n<h5 id=\"controller\">Kontroler<\/h5>\n<p><\/p>\n<p>Tutaj wszystko jest proste:<\/p>\n<p><\/p>\n<pre><code class=\"bash\">apt-get install linstor-controller linstor-client\nsystemctl enable linstor-controller\nsystemctl start linstor-controller<\/code><\/pre>\n<p><\/p>\n<h5 id=\"storage-nody\">W\u0119z\u0142y storage<\/h5>\n<p><\/p>\n<p>W chwili obecnej w j\u0105drze Linux dostarczany jest modu\u0142 j\u0105dra in-tree <strong>DRBD8<\/strong>, niestety nie jest odpowiedni i musimy zainstalowa\u0107 <strong>DRBD9<\/strong>:<\/p>\n<p><\/p>\n<pre><code class=\"bash\">apt-get install drbd-dkms<\/code><\/pre>\n<p><\/p>\n<p>Jak pokazuje praktyka, wi\u0119kszo\u015b\u0107 trudno\u015bci wynika z tego, \u017ce w systemie za\u0142adowany jest modu\u0142 DRBD8, a nie DRBD9. Na szcz\u0119\u015bcie mo\u017cna to \u0142atwo zweryfikowa\u0107, wykonuj\u0105c:<\/p>\n<p><\/p>\n<pre><code class=\"bash\">modprobe drbd\ncat \/proc\/drbd<\/code><\/pre>\n<p><\/p>\n<p>Je\u015bli zobaczysz <strong>wersja: 9<\/strong> \u2014 oznacza to, \u017ce wszystko jest w porz\u0105dku, je\u015bli <strong>wersja: 8<\/strong> \u2014 to znaczy, \u017ce co\u015b posz\u0142o nie tak i musisz podj\u0105\u0107 dodatkowe kroki w celu ustalenia przyczyn.<\/p>\n<p><\/p>\n<p>Teraz zainstalujemy <strong>linstor-satellite<\/strong> i <strong>drbd-utils<\/strong>:<\/p>\n<p><\/p>\n<pre><code class=\"bash\">apt-get install linstor-satellite drbd-utils\nsystemctl enable linstor-satellite\nsystemctl start linstor-satellite<\/code><\/pre>\n<p><\/p>\n<h2 id=\"sozdanie-klastera\">Tworzenie klastra<\/h2>\n<p><\/p>\n<p><strong>Storage pools i w\u0119z\u0142y<\/strong><\/p>\n<p><\/p>\n<p>Jako backend we\u017amiemy <strong>ThinLVM<\/strong>, poniewa\u017c jest najprostszy i obs\u0142uguje migawki.<br \/>\nZainstaluj <strong>lvm2<\/strong>, je\u015bli jeszcze tego nie zrobiono, i stw\u00f3rzmy ThinLVM pool na wszystkich naszych w\u0119z\u0142ach storage:<\/p>\n<p><\/p>\n<pre><code class=\"bash\">sudo vgcreate drbdpool \/dev\/sdb\nsudo lvcreate -L 800G -T drbdpool\/thinpool<\/code><\/pre>\n<p><\/p>\n<p>Wszystkie dalsze czynno\u015bci mo\u017cna wykona\u0107 bezpo\u015brednio na kontrolerze:<\/p>\n<p><\/p>\n<p>Dodajmy nasze w\u0119z\u0142y:<\/p>\n<p><\/p>\n<pre><code class=\"bash\">linstor node create node1 127.0.0.11\nlinstor node create node2 127.0.0.12\nlinstor node create node3 127.0.0.13<\/code><\/pre>\n<p><\/p>\n<p>Stw\u00f3rzmy storage pools:<\/p>\n<p><\/p>\n<pre><code class=\"bash\">linstor storage-pool create lvmthin node1 data drbdpool\/thinpool\nlinstor storage-pool create lvmthin node2 data drbdpool\/thinpool\nlinstor storage-pool create lvmthin node3 data drbdpool\/thinpool<\/code><\/pre>\n<p><\/p>\n<p>Teraz sprawd\u017amy utworzone pule:<\/p>\n<p><\/p>\n<pre><code class=\"bash\">linstor storage-pool list<\/code><\/pre>\n<p><\/p>\n<p>Je\u015bli wszystko zosta\u0142o wykonane poprawnie, powinni\u015bmy zobaczy\u0107 co\u015b takiego:<\/p>\n<p><\/p>\n<pre>+-------------------------------------------------------------------------------------------------------+\n| StoragePool | Node  | Driver   | PoolName          | FreeCapacity | TotalCapacity | SupportsSnapshots |\n|-------------------------------------------------------------------------------------------------------|\n| data        | node1 | LVM_THIN | drbdpool\/thinpool |       64 GiB |        64 GiB | true              |\n| data        | node2 | LVM_THIN | drbdpool\/thinpool |       64 GiB |        64 GiB | true              |\n| data        | node3 | LVM_THIN | drbdpool\/thinpool |       64 GiB |        64 GiB | true              |\n+-------------------------------------------------------------------------------------------------------+<\/pre>\n<p><\/p>\n<p><strong>Zasoby DRBD<\/strong><\/p>\n<p><\/p>\n<p>Teraz spr\u00f3bujmy stworzy\u0107 nasz nowy zas\u00f3b DRBD:<\/p>\n<p><\/p>\n<pre><code class=\"bash\">linstor resource-definition create myres\nlinstor volume-definition create myres 1G\nlinstor resource create myres --auto-place 2<\/code><\/pre>\n<p><\/p>\n<p>Sprawd\u017amy stworzone zasoby:<\/p>\n<p><\/p>\n<pre><code class=\"bash\">linstor resource list <\/code><\/pre>\n<p><\/p>\n<pre>+------------------------------------------------------------------------------------------------------+\n| Node  | Resource | StoragePool | VolumeNr | MinorNr | DeviceName    | Allocated  | InUse  |    State |\n|------------------------------------------------------------------------------------------------------|\n| node1 | myres    | data        | 0        | 1084    | \/dev\/drbd1084 | 52 KiB     | Unused | UpToDate |\n| node2 | myres    | data        | 0        | 1084    | \/dev\/drbd1084 | 52 KiB     | Unused | UpToDate |\n+------------------------------------------------------------------------------------------------------+<\/pre>\n<p><\/p>\n<p>\u015awietnie! \u2014 widzimy, \u017ce zas\u00f3b zosta\u0142 utworzony na dw\u00f3ch pierwszych w\u0119z\u0142ach, mo\u017cemy r\u00f3wnie\u017c spr\u00f3bowa\u0107 stworzy\u0107 zas\u00f3b bezdyskowy na trzecim: <\/p>\n<p><\/p>\n<pre><code class=\"bash\">linstor resource create --diskless node3 myres<\/code><\/pre>\n<p><\/p>\n<p>Na w\u0119z\u0142ach zawsze znajdziesz to urz\u0105dzenie jako <code>\/dev\/drbd1084<\/code> lub <code>\/dev\/drbd\/by-res\/myres\/0<\/code><\/p>\n<p><\/p>\n<p>Tak dzia\u0142a Linstor, mo\u017cesz uzyska\u0107 wi\u0119cej informacji z <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.linbit.com\/docs\/users-guide-9.0\/\">oficjalnej dokumentacji<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p>Teraz opowiem o tym, jak zintegrowa\u0107 go z OpenNebula<\/p>\n<p><\/p>\n<h2 id=\"nastroyka-opennebula\">Konfiguracja OpenNebula<\/h2>\n<p><\/p>\n<p>Nie b\u0119d\u0119 si\u0119 zbytnio zag\u0142\u0119bia\u0107 w proces konfiguracji OpenNebula, poniewa\u017c wszystkie kroki s\u0105 szczeg\u00f3\u0142owo opisane w <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.opennebula.org\/stable\/deployment\/opennebula_installation\/index.html\">oficjalnej dokumentacji<\/a><\/noindex>, do kt\u00f3rej zalecam si\u0119 odwo\u0142a\u0107, opowiem tylko o integracji OpenNebula z Linstor.<\/p>\n<p><\/p>\n<h5 id=\"linstor_un\">linstor_un<\/h5>\n<p><\/p>\n<p>Aby rozwi\u0105za\u0107 ten problem, napisa\u0142em w\u0142asny sterownik \u2014 <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/OpenNebula\/addon-linstor_un\">linstor_un<\/a><\/noindex>, obecnie dost\u0119pny jako wtyczka i nale\u017cy go zainstalowa\u0107 osobno.<\/p>\n<p><\/p>\n<p>Ca\u0142a instalacja odbywa si\u0119 na frontendowych w\u0119z\u0142ach OpenNebula i nie wymaga dodatkowych dzia\u0142a\u0144 na w\u0119z\u0142ach obliczeniowych.<\/p>\n<p><\/p>\n<p>Na pocz\u0105tku musimy upewni\u0107 si\u0119, \u017ce mamy <strong>jq<\/strong> i <strong>linstor-client<\/strong>:<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">apt-get install jq linstor-client<\/code><\/pre>\n<p><\/p>\n<p>Zesp\u00f3\u0142 <code>linstor node list<\/code> powinno wy\u015bwietli\u0107 list\u0119 w\u0119z\u0142\u00f3w. Wszystkie w\u0119z\u0142y obliczeniowe OpenNebula powinny by\u0107 dodane do klastra Linstor.<\/p>\n<p><\/p>\n<p>Pobierzmy i zainstalujmy wtyczk\u0119:<\/p>\n<p><\/p>\n<pre><code class=\"bash\">curl -L https:\/\/github.com\/OpenNebula\/addon-linstor_un\/archive\/master.tar.gz | tar -xzvf - -C \/tmp\n\nmv \/tmp\/addon-linstor_un-master\/vmm\/kvm\/* \/var\/lib\/one\/remotes\/vmm\/kvm\/\n\nmkdir -p \/var\/lib\/one\/remotes\/etc\/datastore\/linstor_un\nmv \/tmp\/addon-linstor_un-master\/datastore\/linstor_un\/linstor_un.conf \/var\/lib\/one\/remotes\/etc\/datastore\/linstor_un\/linstor_un.conf\n\nmv \/tmp\/addon-linstor_un-master\/datastore\/linstor_un \/var\/lib\/one\/remotes\/datastore\/linstor_un\nmv \/tmp\/addon-linstor_un-master\/tm\/linstor_un \/var\/lib\/one\/remotes\/tm\/linstor_un\n\nrm -rf \/tmp\/addon-linstor_un-master<\/code><\/pre>\n<p><\/p>\n<p>Teraz musimy doda\u0107 go do konfiguracji OpenNebula, wykonuj\u0105c opisane proste kroki <strong><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/OpenNebula\/addon-linstor_un#update-onedconf\">tutaj<\/a><\/noindex><\/strong>.<\/p>\n<p><\/p>\n<p>Nast\u0119pnie uruchomimy ponownie OpenNebula:<\/p>\n<p><\/p>\n<pre><code class=\"bash\">systemctl restart opennebula<\/code><\/pre>\n<p><\/p>\n<p>Dodamy nasze datastores, systemowe:<\/p>\n<p><\/p>\n<pre><code class=\"bash\">cat &gt; system-ds.conf &lt;&lt;EOT\nNAME=&quot;linstor-system&quot;\nTYPE=&quot;SYSTEM_DS&quot;\nSTORAGE_POOL=&quot;data&quot;\nAUTO_PLACE=&quot;2&quot;\nCLONE_MODE=&quot;snapshot&quot;\nCHECKPOINT_AUTO_PLACE=&quot;1&quot;\nBRIDGE_LIST=&quot;node1 node2 node3&quot;\nTM_MAD=&quot;linstor_un&quot;\nEOT\n\nonedatastore create system-ds.conf<\/code><\/pre>\n<p><\/p>\n<p>I repozytorium obraz\u00f3w:<\/p>\n<p><\/p>\n<pre><code class=\"bash\">cat &gt; images-ds.conf &lt;&lt;EOT\nNAME=&quot;linstor-images&quot;\nTYPE=&quot;IMAGE_DS&quot;\nSTORAGE_POOL=&quot;data&quot;\nAUTO_PLACE=&quot;2&quot;\nBRIDGE_LIST=&quot;node1 node2 node3&quot;\nDISK_TYPE=&quot;BLOCK&quot;\nDS_MAD=&quot;linstor_un&quot;\nTM_MAD=&quot;linstor_un&quot;\nEOT\n\nonedatastore create images-ds.conf<\/code><\/pre>\n<p><\/p>\n<ul>\n<li>Parametr <code>AUTO_PLACE<\/code> okre\u015bla liczb\u0119 replik danych, kt\u00f3re b\u0119d\u0105 tworzone dla ka\u017cdego nowego obrazu w OpenNebula.<\/li>\n<li>Parametr <code>CLONE_MODE<\/code> okre\u015bla spos\u00f3b, w jaki b\u0119d\u0105 klonowane obrazy podczas tworzenia nowych maszyn wirtualnych, <code>snapshot<\/code> \u2014 b\u0119dzie tworzy\u0142 zrzut obrazu i na podstawie zrzutu uruchamia\u0142 maszyn\u0119 wirtualn\u0105, <code>copy<\/code> \u2014 b\u0119dzie robi\u0142 pe\u0142n\u0105 kopi\u0119 obrazu dla ka\u017cdej maszyny wirtualnej.<\/li>\n<li>W <code>BRIDGE_LIST<\/code> zaleca si\u0119 wskaza\u0107 wszystkie w\u0119z\u0142y, kt\u00f3re b\u0119d\u0105 u\u017cywane do przeprowadzania operacji klonowania obraz\u00f3w. <\/li>\n<\/ul>\n<p><\/p>\n<p>Pe\u0142na lista obs\u0142ugiwanych parametr\u00f3w znajduje si\u0119 w <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/OpenNebula\/addon-linstor_un#opennebula-configuration\">README<\/a><\/noindex> projektu.<\/p>\n<p><\/p>\n<p>Na tym koniec konfiguracji, teraz mo\u017cna za\u0142adowa\u0107 jaki\u015b appliance z oficjalnego <noindex><a rel=\"nofollow\" href=\"https:\/\/marketplace.opennebula.systems\/appliance\">OpenNebula Marketplace<\/a><\/noindex> i stworzy\u0107 z niego maszyny wirtualne.<\/p>\n<p><\/p>\n<p>Link do projektu:<br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/OpenNebula\/addon-linstor_un\">https:\/\/github.com\/OpenNebula\/addon-linstor_un<\/a><\/noindex><\/p>\n<p>\u0179r\u00f3d\u0142o: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/451186\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041d\u0435 \u0442\u0430\u043a \u0434\u0430\u0432\u043d\u043e \u0440\u0435\u0431\u044f\u0442\u0430 \u0438\u0437 LINBIT \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u043b\u0438 \u0441\u0432\u043e\u0435 \u043d\u043e\u0432\u043e\u0435 SDS-\u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u2014 Linstor. \u042d\u0442\u043e \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u043e\u0435 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435 \u0432 \u043e\u0441\u043d\u043e\u0432\u0435 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u0435\u043d\u043d\u044b\u0435 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0438: DRBD, LVM, ZFS. Linstor \u0441\u043e\u0447\u0435\u0442\u0430\u0435\u0442 \u0432 \u0441\u0435\u0431\u0435 \u043f\u0440\u043e\u0441\u0442\u043e\u0442\u0443 \u0438 \u0445\u043e\u0440\u043e\u0448\u043e \u043f\u0440\u043e\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u043d\u0443\u044e \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0443, \u0447\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0434\u043e\u0431\u0438\u0442\u044c\u0441\u044f \u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0438 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0432\u043d\u0443\u0448\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432. \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u044f \u0445\u043e\u0442\u0435\u043b \u0431\u044b \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c \u043f\u0440\u043e \u043d\u0435\u0433\u043e \u0447\u0443\u0442\u044c \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u0438 \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u043d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u043e\u0441\u0442\u043e [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":25221,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-33523","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.1.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041d\u0435 \u0442\u0430\u043a \u0434\u0430\u0432\u043d\u043e \u0440\u0435\u0431\u044f\u0442\u0430 \u0438\u0437 LINBIT.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/pl\/blog\/administrirovanie\/hranilishhe-linstor-i-ego-integratsiya-s-opennebula\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"pl_PL\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u0425\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435 LINSTOR \u0438 \u0435\u0433\u043e \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u044f \u0441 OpenNebula | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041d\u0435 \u0442\u0430\u043a \u0434\u0430\u0432\u043d\u043e \u0440\u0435\u0431\u044f\u0442\u0430 \u0438\u0437 LINBIT.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/pl\/blog\/administrirovanie\/hranilishhe-linstor-i-ego-integratsiya-s-opennebula\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-10-31T18:53:05+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T18:53:05+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47 Magazyn LINSTOR i jego integracja z OpenNebula | ProHoster","description":"Niedawno zesp\u00f3\u0142 z LINBIT.","canonical_url":"https:\/\/prohoster.info\/pl\/blog\/administrirovanie\/hranilishhe-linstor-i-ego-integratsiya-s-opennebula","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"pl_PL","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u0425\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435 LINSTOR \u0438 \u0435\u0433\u043e \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u044f \u0441 OpenNebula | ProHoster","og:description":"\u041d\u0435 \u0442\u0430\u043a \u0434\u0430\u0432\u043d\u043e \u0440\u0435\u0431\u044f\u0442\u0430 \u0438\u0437 LINBIT.","og:url":"https:\/\/prohoster.info\/pl\/blog\/administrirovanie\/hranilishhe-linstor-i-ego-integratsiya-s-opennebula","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-10-31T18:53:05+00:00","article:modified_time":"2019-10-31T18:53:05+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"33523","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-21 15:38:20","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 02:39:22","updated":"2026-01-21 15:38:20","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/posts\/33523","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/comments?post=33523"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/posts\/33523\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/media\/25221"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/media?parent=33523"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/categories?post=33523"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/tags?post=33523"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}