Esta é parte mais útil e divertida de se trabalhar com RAID, digo útil, por que se você tiver problemas com seu RAID, com certeza essas informações poderão lhe ajudar, caso você não tenha problema, então pode simular problemas e verificar como o sistema se comporta.
Resolvi utilizar três cenários para demonstrar as possibilidades de manutenção de um array, imaginando que você queira simular uma falha, ou adicionar mais espaço à máquina, ou ainda, um dos discos tenha parado de funcionar.
Cenário 1: Simulando falhas.
Vamos imaginar que você não quer desligar o disco, ou seja, não quer remover o disco da máquina para testar como seu RAID se comportaria, mas quer saber qual vai ser esse comportamento em caso de falhas ou queima do disco, para isso é possível simular o problema, com um comando do utilitário mdadm, propriamente para esta tarefa.
Então para simular uma falha de disco, digite o comando abaixo:
# mdadm --manage --set-fault /dev/md0 /dev/sdc1
Este comando simulará que o terceiro disco, ou seja, o sdc1 parou de funcionar no array (md0).
Para verificar os detalhes de como seu array está se comportando, basta executar o comando:
# mdadm --detail /dev/md0
Veja o resultado abaixo:
/dev/md0:
Version : 00.90
Creation Time : Tue Apr 28 06:38:18 2009
Raid Level : raid10
Array Size : 16771584 (15.99 GiB 17.17 GB)
Used Dev Size : 8385792 (8.00 GiB 8.59 GB)
Raid Devices : 4
Total Devices : 4
Preferred Minor : 0
Persistence : Superblock is persistent
Update Time : Thu Apr 30 04:01:14 2009
State : clean, degraded
Active Devices : 3
Working Devices : 3
Failed Devices : 1
Spare Devices : 0
Layout : near=2, far=1
Chunk Size : 64K
UUID : c4456b47:e8cb8a5b:e368bf24:bd0fce41
Events : 0.12
Number Major Minor RaidDevice State
0 8 1 0 active sync /dev/sda1
1 8 17 1 active sync /dev/sdb1
2 0 0 2 removed
3 8 49 3 active sync /dev/sdd1
4 8 33 - faulty spare /dev/sdc1
Repare, nas linhas em negrito e sublinhadas, que o status, apesar de funcional, agora está em modo degrade (qualidade inferior). Repare também que só existem três discos ativos trabalhando e um está como falhado. Nas últimas três linhas, veja que é exibido que o disco foi removido e que está com falha.
Veja que se verificar o arquivo /proc/mdstat, a resposta será a mesma.
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md0 : active raid10 sdb1[1] sdd1[3] sdc1[4](F) sda1[0]
16771584 blocks 64K chunks 2 near-copies [4/3] [UU_U]
Note o (F) na frente do dispositivo sdc1.
Para voltarmos ao funcionamento normal, ou seja, com os quatro discos, então é necessário fazermos a “remoção” do disco, como se fosse um disco hot-swap (discos que permitem a troca sem a necessidade de desligamento da máquina):
# mdadm /dev/md0 -r /dev/sdc1
Se você verificar o status do seu array, irá perceber que agora não há menção a nenhum disco com falha, isso ocorre por que “removemos” o disco com problema.
Agora precisamos “incluir” um novo disco ao array, para que nosso sistema volte a trabalhar perfeitamente. Para isso vamos executar o comando:
# mdadm /dev/md0 -a /dev/sc1
Caso queira ver o status do “retorno” do disco que simulamos como falhado, basta visualizar o arquivo /proc/mdstat:
# cat /proc/mdstat
A saída será semelhante a esta:
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md0 : active raid10 sdc1[4] sdb1[1] sdd1[3] sda1[0]
16771584 blocks 64K chunks 2 near-copies [4/3] [UU_U]
[====>................] recovery = 22.0% (1852160/8385792) finish=0.5min speed=185216K/sec
Agora seu RAID está em processo de recuperação e ao final você poderá ver os detalhes do array.
Legal, deu pra testar o funcionamento do nosso array caso algum disco falhe, é possível fazer essa simulação com dois discos sem que seu sistema pare de funcionar.
Cenário 2: Preciso de mais espaço, então quero adicionar mais discos no meu array.
Hm… primeira coisa a saber, RAID10 não é linear, ou seja, agente monta primeiro o espelhamento (mirroring) e depois o fracionamento (stripping)… então não é possível aumentarmos nosso array quando utilizamos o nível 10. Para testar o que estou afirmando, caso você tenha mais quatro discos particionados, então execute este comando (caso você tenha mais quatro discos):
# mdadm --grow /dev/md0 --add /dev/sde1 /dev/sdf1 /dev/sdg1 /dev/sdh1
E a mensagem dirá que não é possível adicionar dispositivos a um array não linear.
A solução é criar um novo array para aumentar a capacidade de armazenamento da sua máquina.
Caso você adicione mais discos ao array, estes funcionarão como spares (estepes) e não aumentarão a quantidade de espaço disponível no array. Que pena, mas é verdadeiro por uma questão lógica.
Caso queira ter seu spare (disco reserva ou estepe) funcionando, você deverá configurar a partição de RAID e formatá-la como ext3, como já fizemos anteriormente, e por fim executar o comando de inclusão do dispositivo no array:
# mdadm --add /dev/md0 /dev/sde1
O resultado é que o novo disco não entrará em uso, nem como espelho e nem como incremento de espaço e se tornará um spare. Spare (disco reserva). Veja como ficou o array após a inclusão do quinto disco:
/dev/md0:
Version : 00.90
Creation Time : Wed Apr 22 20:41:00 2009
Raid Level : raid10
Array Size : 15791616 (15.06 GiB 16.17 GB)
Used Dev Size : 7895808 (7.53 GiB 8.09 GB)
Raid Devices : 4
Total Devices : 5
Preferred Minor : 0
Persistence : Superblock is persistent
Update Time : Sat Apr 25 20:30:01 2009
State : clean
Active Devices : 4
Working Devices : 5
Failed Devices : 0
Spare Devices : 1
Layout : near=2, far=1
Chunk Size : 64K
UUID : 7d45dd9f:9c1c3041:e368bf24:bd0fce41 (local to host ubuntu)
Events : 0.132
Number Major Minor RaidDevice State
0 8 3 0 active sync /dev/sda3
1 8 17 1 active sync /dev/sdb1
2 8 33 2 active sync /dev/sdc1
3 8 49 3 active sync /dev/sdd1
4 8 65 - spare /dev/sde1
Nas linhas em negrito e sublinhadas, você pode ver que o disco spare está lá.
Apesar de não adicionarmos mais espaço no array, o spare funciona como um pneu de estepe e caso algum disco participante do array venha a queimar (ou parar de funcionar), o spare automaticamente assume seu lugar! Mais segurança ainda!
Cenário 3: Um dos discos do array queimou! E agora?
Simulei esse cenário em minha máquina virtual. Simplesmente desliguei a máquina virtual e removi (deletei) um disco. Isso mesmo! Apaguei o sdc, ou seja o terceiro disco. Simulei como se um disco sumisse do computador, seja por falha ou por queima, ou ainda, por remoção física da máquina, então liguei o Ubuntu 8.10 e fui informado que um disco tinha falhado e que eu tinha duas opções. A primeira opção era entrar em modo de recuperação e a outra era iniciar o sistema operacional normalmente, porém em modo degraded (algo como “em baixa qualidade”).
Escolhi entrar em modo degraded e o sistema operacional funcionou sem problemas, porém precisava adicionar um disco novamente e simular a recuperação, então desliguei a máquina virtual, criei um novo disco com a mesma capacidade e reiniciei a máquina.
Para saber qual o dispositivo inserido basta executar esse comando:
# ls /dev/sd*
E serão exibidos todos os discos SATA e meu disco recém criado estava lá sendo o sdc. Sendo assim, basta configurar as partições, formatá-las e por fim adicionar ao array. O primeiro passo é configurar a partição:
# cfdisk /dev/sdc
Crie uma nova partição escolhendo a opção New (nova), digite o tamanho (cuidado para selecionar o tamanho igual ao das demais partições do array), depois escolha o local do disco onde será criada a partição, no meu caso, Beginning (início). Depois vamos definir o tipo como sendo Linux Raid Autodetect, então escolha a opção Type (tipo) e digite o código FD.
Grave as alterações com o comando Write (escrever – gravar). Agora basta sair do cfdisk e formatar a partição utilizando o comando:
# mkfs.ext3 /dev/sdc1
Depois de formatada, vamos adicionar a partição /dev/sdc1 ao array /dev/md0 com o comando:
# mdadm --add /dev/md0 /dev/sdc1
Caso você queira monitorar o status da adição desta partição ao array, basta utilizar os comandos:
# cat /proc/mdstat
A saída desse comando deverá ser como esta:
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md0 : active raid10 sdc1[4] sda3[0] sdd1[3] sdb1[1]
15791616 blocks 64K chunks 2 near-copies [4/3] [UU_U]
[===>.................] recovery = 15.0% (1191744/7895808) finish=1.1min speed=99312K/sec
unused devices: <none>
Ou ainda, você poderá ver o status utilizando o comando abaixo:
# mdadm --details /dev/md0
A saída deverá ser como esta:
/dev/md0:
Version : 00.90
Creation Time : Wed Apr 22 20:41:00 2009
Raid Level : raid10
Array Size : 15791616 (15.06 GiB 16.17 GB)
Used Dev Size : 7895808 (7.53 GiB 8.09 GB)
Raid Devices : 4
Total Devices : 4
Preferred Minor : 0
Persistence : Superblock is persistent
Update Time : Sat Apr 25 11:13:07 2009
State : clean, degraded, recovering
Active Devices : 3
Working Devices : 4
Failed Devices : 0
Spare Devices : 1
Layout : near=2, far=1
Chunk Size : 64K
Rebuild Status : 91% complete
UUID : 7d45dd9f:9c1c3041:e368bf24:bd0fce41 (local to host ubuntu)
Events : 0.124
Number Major Minor RaidDevice State
0 8 3 0 active sync /dev/sda3
1 8 17 1 active sync /dev/sdb1
4 8 33 2 spare rebuilding /dev/sdc1
3 8 49 3 active sync /dev/sdd1
Repare que as informações, em negrito e sublinhadas, são referentes ao processo de adição da partição.
Após o processo finalizado, seu sistema operacional estará funcionando normalmente.
Finaliza aqui a série de posts sobre RAID. Acho que deu pra falar bastante de RAID, mas especificamente de RAID10 (RAID 1+0) , com certeza deu pra acumular bastante conhecimento sobre o assunto. Caso você tenha alguma sugestão de configuração, mande pra mim.
Veja todos os demais posts sobre RAID
- RAID no Ubuntu Intrepid Ibex (Ubuntu 8.10)
- RAID e níveis de RAID
- Criando e configurando o RAID 10 no Ubuntu 8.10
- Checando, mantendo e monitorando o RAID
- Gerenciando catástrofes
Fontes e Referências:
- Tecnologia RAID;
- Tudo o que você precisa saber sobre RAID;
- RAID;
- RAID;
- Criando dispositivos RAID via software no Linux;
- Livro: Ubuntu Server Administration de Michael Jang;
- RAID 5 vs RAID 10: Recommended RAID for safety and performance;
- RAID 10 vs. RAID 5 Performance;
- Install Ubuntu With Software RAID 10;
- Manage a Linux RAID 10 Storage Server;
- The Software – RAID HOWTO: Detecting, querying and testing;
- Tutorial RAID Mandriva;
- Linux Raid Howto;
- # man mdadm.conf;
- Descobrindo o UUID das Partições;
- Chapter 14. Linux Software RAID;
- Debian Bug report logs;
- RAID por software no Linux;
- AC&NC | RAID.edu – RAID Levels;
- Useful Mdadm Commands;
- Using mdadm to send e-mail alerts for RAID failures;
- Programando em shell-script;
- Redundant array of independent disks;
- Detecting, querying and testing.




Um Comentário
no computador que trabalho
está aparecendo mensagem de vez em quando são mensagens que aparecem
um site: http://www.userful.com/free2
eu gostaria de saber como interromper essas mensagens
5 Trackbacks/Pingbacks
[...] Linux: Enviando e-mail do gmail pelo BASH (linha de comando) utilizando SSMTP no Ubuntu 9.04 Linux: Corringindo falhas e solucionando problemas de RAID no Ubuntu Intrepid (Ubuntu 8.10) [...]
[...] Linux: Corringindo falhas e solucionando problemas de RAID no Ubuntu Intrepid (Ubuntu 8.10) [...]
[...] Gerenciando catástrofes « Linux: RAID no Ubuntu Intrepid Ibex (Ubuntu 8.10) Linux: Criando e configurando o RAID 10 via software no Ubuntu Intrepid Ibex (Ubuntu 8.10) » [...]
[...] Linux: Corringindo falhas e solucionando problemas de RAID no Ubuntu Intrepid (Ubuntu 8.10) [...]
[...] Linux: Corringindo falhas e solucionando problemas de RAID no Ubuntu Intrepid (Ubuntu 8.10) [...]