Criando RAID a partir do compartilhamento de rede

Hoje vamos explicar como usar compartilhamentos SMB remotos, a fim de construir um dispositivo RAID. A ideia é simples, usamos todos os recursos de armazenamento em nossa LAN, para construir um compartilhamento central NFS/SMB ( pode ser usado para nuvens privadas como CloudStack ). Testamos com o Debian 6 x86_64, mas você vai encontrar todos os comandos semelhantes em todas as distribuições Linux.

Lembrando que está configuração é experimental e ainda não deve ser usada.

1. Criamos um arquivo em cada dispositivo, executamos em todos os nodes, altere [X]  para o número do node:

$ dd if=/dev/zero of=/myshare/node[X].img bs=1M count=1024

2.  Agora vamos trabalhar com o servidor central:

  • Criamos o diretório para armazenar todas as montagens SMB:

$ mkdir -p /nodeshares/node{1,2,3}

  • Montamos cada dispositivo, observe que a senha é definida pelo comando smbpasswd:

$ mount -t cifs -o username=myname,password=1 //192.168.100.11/myshare /nodeshares/node1

$ mount -t cifs -o username=myname,password=1 //192.168.100.12/myshare /nodeshares/node2

$ mount -t cifs -o username=myname,password=1 //192.168.100.13/myshare /nodeshares/node3

3. Agora vamos para parte divertida, criaremos um loop a partir dos arquivos que criamos na etapa 2, note que os arquivos realmente estão em um host remoto:

$ losetup -v /dev/loop1 /nodeshares/node1/node1.img
$ losetup -v /dev/loop2 /nodeshares/node2/node2.img
$ losetup -v /dev/loop3 /nodeshares/node3/node3.img

4. Criamos o RAID de todos os dispositivos compartilhados:

Criamos o dispositivo RAID nível 5 utilizando os loops, lembrando é a ordem dos dispositivos que importa:

$ mdadm –create /dev/md0 –level=5 –raid-disks=3 /dev/loop1 /dev/loop2 /dev/loop3

Vamos ver o processo de criação a partir do mdstat:

$ cat /proc/mdstat

5. Criamos uma partição em md1, montamos e exportamos a partição em NFS ou SMB de volta para rede:

  • Inicialização:

A fim de manter o RAID uma vez que iniciamos o servidor mestre, teremos que dizer ao kernel para procurar qualquer dispositivo MD e em seguida atualizar para mdadm. Vamos editar o arquivo /etc/mdadm/mdadm.conf e adicionar os dispositivos de loop adicionando está linha:

DEVICE /dev/loop*

Em seguida, executamos este comando para adicionar o novo RAID:

$ mdadm –detail –scan >> /etc/mdadm/mdadm.conf

  • O que acontece quando o node é reiniciado ou desligado:

O mdadm vai ver o dispositivo de loop como defeituoso e vai marcar como uma falha, podemos ver neste exemplo:

$ cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md0 : active raid5 loop3[3](F) loop1[0] loop2[1]
1047552 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/2] [UU_]

  • Dispositivos não utilizados:

Para reparar precisamos remover o dispositivo com defeito:

$ mdadm –manage /dev/md0 –remove /dev/loop3
mdadm: hot removed /dev/loop3 from /dev/md1

Depois de remontar o node, podemos adicionar o dispositivo de volta para a matriz:

$ mdadm –manage /dev/md0 –add /dev/loop3
mdadm: added /dev/loop3

 

Instalando o Docker

Já explicamos um pouco sobre o Docker em nossos posts, hoje vamos aprofundar um pouco mais mostrando passo a passo de como instalar o Docker sem erros.

Vamos lá?

Nesse exemplo estamos utilizando o Ubuntu 14.04 (LTS), mas pode ser realizado com outras versões. Vamos ter algumas alterações em outras versões, vamos mostrar cada uma ao longo do tutorial.

Primeiramente vamos precisar de acesso root, ou basta utilizar o comando “sudo” antes de cada comando para ter privilégios root.

Vamos atualizar as informações do pacote:

$ sudo apt-get update

Agora vamos garantir que os certificados e o pacote apt-transport-https estejam funcionando corretamente:

$ sudo apt-get install apt-transport-https ca-certificates

Feito isso vamos adicionar uma nova chave GPG:

$ sudo apt-key adv –keyserver hkp://p80.pool.sks-keyservers.net:80 –recv-keys 58118E89F3A912897C070ADBF76221572C52609D

Vamos até o diretório “/etc/apt/sources.list.d” e verificamos se existe um arquivo chamado “docker.list”. Se não existir, basta criar o arquivo.

Devemos editar esse arquivo, vou utilizar um editor simples e nativo do Ubuntu, o nano.

$ nano docker.list

Entrando no editor vamos apagar todas as linhas existentes no arquivo.

Agora entra a parte da versão do Ubuntu que você está utilizando, vou mostrar com a versão Trusty 14.04 que é a que estou utilizando e em seguida mostro como fica em outras versões. Vamos adicionar a seguinte linha:

deb https://apt.dockerproject.org/repo ubuntu-trusty main

Lembrando que essa linha é para a versão 14.04 do Ubuntu, para outras versões basta seguir essa lista:

Ubuntu Precise 12.04 (LTS):

deb https://apt.dockerproject.org/repo ubuntu-precise main

Ubuntu Wily 15.10:

deb https://apt.dockerproject.org/repo ubuntu-wily main

Ubuntu Xenial 16.04 (LTS):

deb https://apt.dockerproject.org/repo ubuntu-xenial main

Feito isso vamos salvar o arquivo, se estiver utilizando o nano basta apertar CTRL+X, digitar Y e da um Enter.

Vamos retirar o repositório lxc-docker caso exista, o Ubuntu vem por padrão com este repositório, mas não vai ser ele que iremos utilizar.

$ sudo apt-get purge lxc-docker

Agora vamos ter que garantir que o APT está utilizando o repositório correto:

$ apt-cache policy docker-engine

Feito isso vamos instalar os pacotes recomendados e já podemos instalar o docker:

$ sudo apt-get install linux-image-extra-$(uname -r) linux-image-extra-virtual

Vamos novamente atualizar:

$ sudo apt-get update

Espere acabar de instalar os pacotes e finalmente o docker poderá ser instalado sem nenhum erro, basta executar o comando:

$ sudo apt-get install docker-engine

Vamos verificar se o serviço já está rodando:

$ sudo service docker start

Vai retornar a seguinte mensagem: “start: Job is already running: docker”, isso significa que o docker está em execução.

Docker instalado com sucesso.

Nos próximos tutoriais vamos mostrar como executar os container e nos familiarizar mais com o Docker.

 

Abraço.

 

 

 

Sair da versão mobile