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