{"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\/pt\/blog\/administrirovanie\/hranilishhe-linstor-i-ego-integratsiya-s-opennebula","title":{"rendered":"Armazenamento LINSTOR e sua integra\u00e7\u00e3o com OpenNebula","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Armazenamento LINSTOR e sua integra\u00e7\u00e3o com OpenNebula\" src=\"\/wp-content\/uploads\/2019\/05\/c8b6a7c02c4e5b043be327838152f8a1.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Recentemente, a equipe da LINBIT apresentou sua nova solu\u00e7\u00e3o SDS \u2014 Linstor. Trata-se de um armazenamento completamente livre, baseado em tecnologias testadas: DRBD, LVM, ZFS. O Linstor combina simplicidade com uma arquitetura bem elaborada, permitindo alcan\u00e7ar resultados est\u00e1veis e expressivos.<\/p>\n<p><\/p>\n<p>Hoje, gostaria de falar sobre ele com mais detalhes e mostrar como \u00e9 simples integr\u00e1-lo ao OpenNebula usando o linstor_un \u2014 um novo driver que desenvolvi especialmente para este fim.<\/p>\n<p><\/p>\n<p>O Linstor em conjunto com o OpenNebula permite construir uma nuvem r\u00e1pida e confi\u00e1vel, que pode ser implantada sem problemas em sua pr\u00f3pria infraestrutura.<\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h2 id=\"arhitektura-linstor\">Arquitetura Linstor<\/h2>\n<p><\/p>\n<p>O Linstor n\u00e3o \u00e9 um sistema de arquivos nem um armazenamento em bloco por si s\u00f3, \u00e9 um orquestrador que fornece uma camada de abstra\u00e7\u00e3o, permitindo automatizar a cria\u00e7\u00e3o de volumes no LVM ou ZFS e replic\u00e1-los usando o DRBD9.<\/p>\n<p><\/p>\n<h5 id=\"lomaem-stereotipy\">Quebrando estere\u00f3tipos<\/h5>\n<p><\/p>\n<p>Mas espere, DRBD? \u2014 Por que automatiz\u00e1-lo e como isso pode funcionar?<\/p>\n<p><\/p>\n<p>Vamos recordar o passado, quando o DRBD8 era amplamente popular. Seu uso padr\u00e3o envolvia a cria\u00e7\u00e3o de um grande dispositivo de bloco e sua divis\u00e3o em muitos pequenos peda\u00e7os, com o mesmo LVM. Uma esp\u00e9cie de RAID-1 do mdadm, por\u00e9m com replica\u00e7\u00e3o pela rede.<\/p>\n<p><\/p>\n<p>Esse approach n\u00e3o \u00e9 isento de desvantagens, e por isso, com a chegada do DRBD9, os princ\u00edpios de constru\u00e7\u00e3o do armazenamento mudaram, agora um dispositivo DRBD separado \u00e9 criado para cada m\u00e1quina virtual.<\/p>\n<p><\/p>\n<p>A abordagem com dispositivos de bloco independentes permite uma melhor utiliza\u00e7\u00e3o do espa\u00e7o no cluster, al\u00e9m de adicionar uma s\u00e9rie de possibilidades adicionais. Por exemplo, para cada um desses dispositivos, podemos definir o n\u00famero de r\u00e9plicas, sua localiza\u00e7\u00e3o e configura\u00e7\u00f5es individuais. Elas s\u00e3o f\u00e1ceis de criar\/remover, tirar snapshots, alterar o tamanho, habilitar criptografia e muito mais. Vale a pena notar que o DRBD9 tamb\u00e9m suporta qu\u00f3rum, o que ajuda a evitar situa\u00e7\u00f5es de split-brain.<\/p>\n<p><\/p>\n<h5 id=\"resursy-i-bekendy\">Recursos e backends<\/h5>\n<p><\/p>\n<p>Ao criar um novo dispositivo de bloco, o Linstor aloca o n\u00famero necess\u00e1rio de r\u00e9plicas em diferentes n\u00f3s no cluster. Cada uma dessas r\u00e9plicas ser\u00e1 chamada de recurso DRBD.<\/p>\n<p><\/p>\n<p>Os recursos v\u00eam em dois tipos:<\/p>\n<p><\/p>\n<ul>\n<li><strong>Recurso de Dados<\/strong> \u2014 s\u00e3o um dispositivo DRBD localizado em um n\u00f3 em um pool LVM ou ZFS.<br \/>\nAtualmente, h\u00e1 suporte para v\u00e1rios backends e seu n\u00famero est\u00e1 em crescimento constante. H\u00e1 suporte para LVM, ThinLVM e ZFS. Os dois \u00faltimos permitem a cria\u00e7\u00e3o e uso de snapshots.<\/li>\n<li><strong>Recurso sem disco<\/strong> \u2014 \u00e9 um dispositivo DRBD localizado em um n\u00f3 sem backend, mas que permite ser tratado como um dispositivo de bloco comum; todas as opera\u00e7\u00f5es de leitura\/escrita ser\u00e3o redirecionadas para os recursos de dados. O an\u00e1logo mais pr\u00f3ximo aos recursos sem disco \u00e9 um LUN iSCSI.<\/li>\n<\/ul>\n<p><\/p>\n<p>Cada recurso DRBD pode ter at\u00e9 8 r\u00e9plicas, e apenas uma delas pode estar ativa por padr\u00e3o \u2014 <strong>Prim\u00e1ria<\/strong>, todas as outras ser\u00e3o <strong>Secund\u00e1rias<\/strong> e seu uso ser\u00e1 imposs\u00edvel enquanto houver pelo menos uma Prim\u00e1ria, ou seja, elas apenas ir\u00e3o replicar dados entre si.<\/p>\n<p><\/p>\n<p>Ao montar um dispositivo DRBD no sistema, ele automaticamente se torna <strong>Prim\u00e1ria<\/strong>, assim at\u00e9 mesmo o recurso sem disco, na terminologia DRBD, pode ser Prim\u00e1rio.<\/p>\n<p><\/p>\n<h5 id=\"tak-zachem-nuzhen-linstor\">Ent\u00e3o, para que serve o Linstor?<\/h5>\n<p><\/p>\n<p>Ao confiar todas as tarefas intensivas em recursos ao n\u00facleo, o Linstor \u00e9 essencialmente um aplicativo Java comum que facilita a automa\u00e7\u00e3o da cria\u00e7\u00e3o de recursos DRBD.<br \/>\nCada recurso criado por ele ser\u00e1 um cluster DRBD independente, que opera de forma aut\u00f4noma, independentemente do estado do control-plane e dos outros recursos DRBD.<\/p>\n<p><\/p>\n<p><strong>O Linstor consiste em apenas dois componentes:<\/strong><\/p>\n<p><\/p>\n<ul>\n<li><strong>Linstor-controller<\/strong> \u2014 O controlador principal, que fornece uma API para cria\u00e7\u00e3o e gerenciamento de recursos. Ele tamb\u00e9m se comunica com os sat\u00e9lites, verificando o espa\u00e7o livre neles e enviando tarefas para criar e excluir novos recursos. \u00c9 executado em uma \u00fanica inst\u00e2ncia e utiliza um banco de dados que pode ser interno (H2) ou externo (PostgreSQL, MySQL, MariaDB)<\/li>\n<li><strong>Linstor-satellite<\/strong> \u2014 Instalado em todos os n\u00f3s de armazenamento e fornece ao controlador informa\u00e7\u00f5es sobre o espa\u00e7o livre, al\u00e9m de executar tarefas recebidas do controlador para criar e excluir novos volumes e dispositivos DRBD sobre eles.<\/li>\n<\/ul>\n<p><\/p>\n<p><strong>O Linstor opera com os seguintes conceitos-chave:<\/strong><\/p>\n<p><\/p>\n<ul>\n<li><strong>N\u00f3<\/strong> \u2014 servidor f\u00edsico onde os recursos DRBD ser\u00e3o criados e utilizados.<\/li>\n<li><strong>Storage Pool<\/strong> \u2014 pool LVM ou ZFS criado em um n\u00f3 onde os recursos DRBD ser\u00e3o hospedados. Tamb\u00e9m \u00e9 poss\u00edvel ter um pool sem disco \u2014 este \u00e9 um pool onde ser\u00e3o alocados apenas recursos sem disco.<\/li>\n<li><strong>Defini\u00e7\u00e3o de Recurso<\/strong> \u2014 Defini\u00e7\u00e3o do recurso, que \u00e9 essencialmente um prot\u00f3tipo que descreve o nome e todas as suas propriedades.<\/li>\n<li><strong>Defini\u00e7\u00e3o de Volume<\/strong> \u2014 Defini\u00e7\u00e3o de volume. Cada recurso pode consistir em v\u00e1rios volumes, e cada volume deve ter um tamanho.<\/li>\n<li><strong>Recurso<\/strong> \u2014 Inst\u00e2ncia criada de um dispositivo de bloco, cada recurso deve ser alocado em um determinado n\u00f3 e em algum pool de armazenamento.<\/li>\n<\/ul>\n<p><\/p>\n<h2 id=\"ustanovka-linstor\">Instala\u00e7\u00e3o do Linstor<\/h2>\n<p><\/p>\n<p>Recomendo usar o Ubuntu como sistema, pois existe um <noindex><a rel=\"nofollow\" href=\"https:\/\/launchpad.net\/~linbit\/+archive\/ubuntu\/linbit-drbd9-stack\">PPA pronto<\/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>Ou Debian, onde o Linstor pode ser instalado do reposit\u00f3rio oficial para 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\">Controlador<\/h5>\n<p><\/p>\n<p>Aqui \u00e9 bem simples:<\/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\">N\u00f3dulos de armazenamento<\/h5>\n<p><\/p>\n<p>Atualmente, o kernel Linux vem com o m\u00f3dulo de kernel in-tree <strong>DRBD8<\/strong>, infelizmente, n\u00e3o \u00e9 adequado para n\u00f3s e precisamos instalar <strong>DRBD9<\/strong>:<\/p>\n<p><\/p>\n<pre><code class=\"bash\">apt-get install drbd-dkms<\/code><\/pre>\n<p><\/p>\n<p>Como mostra a pr\u00e1tica, a maioria das dificuldades ocorre exatamente porque o m\u00f3dulo DRBD8 est\u00e1 carregado no sistema, e n\u00e3o o DRBD9. Felizmente, isso pode ser verificado facilmente executando:<\/p>\n<p><\/p>\n<pre><code class=\"bash\">modprobe drbd\ncat \/proc\/drbd<\/code><\/pre>\n<p><\/p>\n<p>Se voc\u00ea vir <strong>version: 9<\/strong> \u2014 significa que est\u00e1 tudo certo, se <strong>version: 8<\/strong> \u2014 significa que algo deu errado e voc\u00ea precisar\u00e1 tomar a\u00e7\u00f5es adicionais para descobrir as causas.<\/p>\n<p><\/p>\n<p>Agora vamos instalar <strong>linstor-satellite<\/strong> e <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\">Cria\u00e7\u00e3o de cluster<\/h2>\n<p><\/p>\n<p><strong>Pools de armazenamento e n\u00f3s<\/strong><\/p>\n<p><\/p>\n<p>Como backend, iremos usar <strong>ThinLVM<\/strong>, pois \u00e9 o mais simples e suporta snapshots.<br \/>\nInstale <strong>lvm2<\/strong>, caso ainda n\u00e3o tenha feito isso, vamos criar um pool ThinLVM em todos os nossos n\u00f3dulos de armazenamento:<\/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>Todas as a\u00e7\u00f5es seguintes podem ser realizadas diretamente no controlador:<\/p>\n<p><\/p>\n<p>Vamos adicionar nossos n\u00f3s:<\/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>Vamos criar pools de armazenamento:<\/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>Agora vamos verificar os pools criados:<\/p>\n<p><\/p>\n<pre><code class=\"bash\">linstor storage-pool list<\/code><\/pre>\n<p><\/p>\n<p>Se tudo foi feito corretamente, devemos ver algo como:<\/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>Recursos DRBD<\/strong><\/p>\n<p><\/p>\n<p>Agora vamos tentar criar nosso novo recurso 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>Vamos verificar os recursos criados:<\/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>\u00d3timo! \u2014 vemos que o recurso foi criado nos dois primeiros n\u00f3s, tamb\u00e9m podemos tentar criar um recurso sem disco no terceiro: <\/p>\n<p><\/p>\n<pre><code class=\"bash\">linstor resource create --diskless node3 myres<\/code><\/pre>\n<p><\/p>\n<p>Nos n\u00f3s voc\u00ea sempre encontrar\u00e1 este dispositivo como <code>\/dev\/drbd1084<\/code> ou <code>\/dev\/drbd\/by-res\/myres\/0<\/code><\/p>\n<p><\/p>\n<p>\u00c9 assim que o Linstor funciona, voc\u00ea pode obter mais informa\u00e7\u00f5es de <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.linbit.com\/docs\/users-guide-9.0\/\">documenta\u00e7\u00e3o oficial<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p>Agora eu vou falar sobre como integr\u00e1-lo com o OpenNebula<\/p>\n<p><\/p>\n<h2 id=\"nastroyka-opennebula\">Configura\u00e7\u00e3o do OpenNebula<\/h2>\n<p><\/p>\n<p>N\u00e3o vou me aprofundar muito no processo de configura\u00e7\u00e3o do OpenNebula, pois todos os passos est\u00e3o detalhadamente descritos em <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.opennebula.org\/stable\/deployment\/opennebula_installation\/index.html\">documenta\u00e7\u00e3o oficial<\/a><\/noindex>, que recomendo que voc\u00ea consulte, vou falar apenas sobre a integra\u00e7\u00e3o do OpenNebula com o Linstor.<\/p>\n<p><\/p>\n<h5 id=\"linstor_un\">linstor_un<\/h5>\n<p><\/p>\n<p>Para resolver essa tarefa, escrevi meu pr\u00f3prio driver \u2014 <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/OpenNebula\/addon-linstor_un\">linstor_un<\/a><\/noindex>, atualmente ele est\u00e1 dispon\u00edvel como um plugin e deve ser instalado separadamente.<\/p>\n<p><\/p>\n<p>Toda a instala\u00e7\u00e3o \u00e9 realizada nos n\u00f3s frontend do OpenNebula e n\u00e3o requer a\u00e7\u00f5es adicionais nos n\u00f3s de computa\u00e7\u00e3o.<\/p>\n<p><\/p>\n<p>Primeiro precisamos garantir que temos <strong>jq<\/strong> e <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>Time <code>linstor node list<\/code> deve listar os n\u00f3s. Todos os n\u00f3s de computa\u00e7\u00e3o do OpenNebula devem ser adicionados ao cluster Linstor.<\/p>\n<p><\/p>\n<p>Vamos baixar e instalar o plugin:<\/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>Agora precisamos adicion\u00e1-lo ao config do OpenNebula, para isso, execute os passos simples descritos <strong><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/OpenNebula\/addon-linstor_un#update-onedconf\">aqui<\/a><\/noindex><\/strong>.<\/p>\n<p><\/p>\n<p>Depois disso, reiniciaremos o OpenNebula:<\/p>\n<p><\/p>\n<pre><code class=\"bash\">systemctl restart opennebula<\/code><\/pre>\n<p><\/p>\n<p>E adicionaremos nossos datastores, o sistema:<\/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>E o armazenamento de imagens:<\/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>Par\u00e2metro <code>AUTO_PLACE<\/code> indica o n\u00famero de r\u00e9plicas de dados que ser\u00e1 criado para cada nova imagem no OpenNebula.<\/li>\n<li>Par\u00e2metro <code>CLONE_MODE<\/code> indica como as imagens ser\u00e3o clonadas ao criar novas m\u00e1quinas virtuais, <code>snapshot<\/code> \u2014 criar\u00e1 um snapshot da imagem e a partir do snapshot implantar\u00e1 a m\u00e1quina virtual, <code>copy<\/code> \u2014 far\u00e1 uma c\u00f3pia completa da imagem para cada m\u00e1quina virtual.<\/li>\n<li>Em <code>BRIDGE_LIST<\/code> \u00e9 recomend\u00e1vel listar todas as nodos que ser\u00e3o usadas para executar opera\u00e7\u00f5es de clonagem de imagens. <\/li>\n<\/ul>\n<p><\/p>\n<p>A lista completa dos par\u00e2metros suportados \u00e9 apresentada em <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/OpenNebula\/addon-linstor_un#opennebula-configuration\">README<\/a><\/noindex> do projeto.<\/p>\n<p><\/p>\n<p>Com isso, a configura\u00e7\u00e3o est\u00e1 conclu\u00edda, agora podemos carregar algum appliance do oficial <noindex><a rel=\"nofollow\" href=\"https:\/\/marketplace.opennebula.systems\/appliance\">OpenNebula Marketplace<\/a><\/noindex> e criar m\u00e1quinas virtuais a partir dele.<\/p>\n<p><\/p>\n<p>Link para o projeto:<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>Fonte: <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.3 - 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\/pt\/blog\/administrirovanie\/hranilishhe-linstor-i-ego-integratsiya-s-opennebula\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"pt_PT\" \/>\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\/pt\/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 Armazenamento LINSTOR e sua integra\u00e7\u00e3o com OpenNebula | ProHoster","description":"N\u00e3o faz muito tempo, a equipe da LINBIT.","canonical_url":"https:\/\/prohoster.info\/pt\/blog\/administrirovanie\/hranilishhe-linstor-i-ego-integratsiya-s-opennebula","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"pt_PT","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\/pt\/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\/pt\/wp-json\/wp\/v2\/posts\/33523","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/comments?post=33523"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/posts\/33523\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/media\/25221"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/media?parent=33523"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/categories?post=33523"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/tags?post=33523"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}