Independentemente da sua experiência anterior com matrizes RAID, e se seguiu todos os tutoriais desta série RAID ou não, gerir RAID’s de software em Linux não é uma tarefa muito complicada depois de se ter familiarizado com o comando mdadm --manage
.
Neste tutorial vamos rever a funcionalidade fornecida por esta ferramenta para que você possa tê-la à mão quando precisar dela.
- RAID Testing Scenario
- Entendendo as Opções e Uso do mdadm
- Gerenciar dispositivos RAID com mdadm Tool
- Exemplo 1: Adicione um dispositivo à matriz RAID
- Exemplo 2: Marcando um dispositivo RAID como defeituoso e removendo-o do array
- Exemplo 3: Relembrando um dispositivo que fazia parte do array que tinha sido removido anteriormente
- Exemplo 4: Substituir um dispositivo Raid por um disco específico
- Exemplo 5: Marcando um Raid array como ro ou rw
- Summary
RAID Testing Scenario
Como no último artigo desta série, usaremos para simplificar um array RAID 1 (mirror) que consiste em dois discos de 8 GB (/dev/sdb e /dev/sdc) e um dispositivo sobressalente inicial (/dev/sdd) para ilustrar, mas os comandos e conceitos listados aqui também se aplicam a outros tipos de configurações. Dito isto, fique à vontade para ir em frente e adicionar esta página aos favoritos do seu navegador, e vamos começar.
Entendendo as Opções e Uso do mdadm
Felizmente, o mdadm fornece uma bandeira built-in --help
que fornece explicações e documentação para cada uma das opções principais.
Assim, vamos começar digitando:
# mdadm --manage --help
para ver quais são as tarefas que mdadm --manage
nos permitirão executar e como:
Como podemos ver na imagem acima, gerenciar um array RAID envolve executar as seguintes tarefas de uma vez ou de outra:
- (Re)Adicionar um dispositivo ao array.
- Marcando um dispositivo como defeituoso.
- Remover um dispositivo defeituoso do array.
- Substituir o dispositivo defeituoso por um de reserva.
- Iniciar um array parcialmente construído.
- Parar um array.
- Marcar um array como ro (read-only) ou rw (read-write).
Gerenciar dispositivos RAID com mdadm Tool
Note que se você omitir a opção --manage
, o mdadm assume o modo de gerenciamento de qualquer forma. Tenha este facto em mente para evitar problemas mais à frente.
O texto destacado na imagem anterior mostra a sintaxe básica para gerenciar RAIDs:
# mdadm --manage RAID options devices
Vamos ilustrar com alguns exemplos.
Exemplo 1: Adicione um dispositivo à matriz RAID
Você normalmente adicionará um novo dispositivo quando substituir um defeituoso, ou quando você tiver uma peça sobressalente que queira ter à mão em caso de falha:
# mdadm --manage /dev/md0 --add /dev/sdd1
Exemplo 2: Marcando um dispositivo RAID como defeituoso e removendo-o do array
Este é um passo obrigatório antes de remover logicamente o dispositivo do array, e depois puxá-lo fisicamente para fora da máquina – nessa ordem (se você perder um desses passos você pode acabar causando danos reais ao dispositivo):
# mdadm --manage /dev/md0 --fail /dev/sdb1
Note como o dispositivo de reposição adicionado no exemplo anterior é usado para substituir automaticamente o disco defeituoso. Não só isso, mas também a recuperação e reconstrução dos dados de raid começa imediatamente:
Após o dispositivo ter sido indicado como falhado manualmente, ele pode ser removido com segurança do array:
# mdadm --manage /dev/md0 --remove /dev/sdb1
Exemplo 3: Relembrando um dispositivo que fazia parte do array que tinha sido removido anteriormente
Até agora, temos um array RAID 1 funcional que consiste em 2 dispositivos ativos: /dev/sdc1 e /dev/sdd1. Se tentarmos readd /dev/sdb1 para /dev/md0 neste momento:
# mdadm --manage /dev/md0 --re-add /dev/sdb1
barramos num erro:
mdadm: --re-add for /dev/sdb1 to /dev/md0 is not possible
porque o array já é composto pelo número máximo possível de drives. Então temos 2 escolhas: a) adicionar /dev/sdb1 como reserva, como mostrado no Exemplo #1, ou b) remover /dev/sdd1 do array e então readd /dev/sdb1.
Escolhemos a opção b), e começaremos parando o array para depois remontá-lo:
# mdadm --stop /dev/md0# mdadm --assemble /dev/md0 /dev/sdb1 /dev/sdc1
Se o comando acima não adicionar /dev/sdb1 de volta ao array com sucesso, use o comando do Exemplo #1 para fazer isso.
Embora o mdadm detecte inicialmente o dispositivo recém-adicionado como um sobressalente, ele começará a reconstruir os dados e quando o fizer, deverá reconhecer o dispositivo como parte ativa do RAID:
Exemplo 4: Substituir um dispositivo Raid por um disco específico
Substituir um disco no array por um sobressalente é tão fácil quanto isso:
# mdadm --manage /dev/md0 --replace /dev/sdb1 --with /dev/sdd1
O resultado é que o dispositivo que segue a chave --with
é adicionado ao RAID enquanto o disco indicado através de --replace
é marcado como defeituoso:
Exemplo 5: Marcando um Raid array como ro ou rw
Após criar o array, você deve ter criado um sistema de arquivos em cima dele e montado em um diretório para poder usá-lo. O que você provavelmente não sabia então é que você pode marcar o RAID como ro, permitindo assim que somente operações de leitura sejam realizadas nele, ou rw, para que também seja possível escrever no dispositivo.
Para marcar o dispositivo como ro, ele precisa ser desmontado primeiro:
# umount /mnt/raid1# mdadm --manage /dev/md0 --readonly# mount /mnt/raid1# touch /mnt/raid1/test1
Para configurar o array para permitir operações de escrita também, use a opção --readwrite
. Note que você precisará desmontar o dispositivo e pará-lo antes de configurar o rw flag:
# umount /mnt/raid1# mdadm --manage /dev/md0 --stop# mdadm --assemble /dev/md0 /dev/sdc1 /dev/sdd1# mdadm --manage /dev/md0 --readwrite# touch /mnt/raid1/test2
Summary
Atrás desta série nós explicamos como configurar uma variedade de matrizes RAID de software que são usadas em ambientes corporativos. Se você seguiu os artigos e os exemplos fornecidos nestes artigos você está preparado para aproveitar o poder do RAID de software em Linux.
Se você tiver dúvidas ou sugestões, sinta-se à vontade para entrar em contato conosco usando o formulário abaixo.