FPI - Fórum para Provedores de Internet
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.
FPI - Fórum para Provedores de Internet


Você não está conectado. Conecte-se ou registre-se

Básico sobre RAID com mdadm e raidtools

Ir para baixo  Mensagem [Página 1 de 1]

demattos

demattos
MODERADOR
MODERADOR

Neste artigo,e usado uma abordagem simples sobre conceitos e a configuração de RAID por software com duas ferramentas muito utilizadas para tal propósito, o raidtools e o mdadm.

Mas antes de entrarmos afundo nas ferramentas, o que é RAID?!

- RAID significa: Redudant Array of Independent Disk

Algo como "Matriz redundante de discos independentes", e a ideia básica de RAID é combinar diversos discos em um volume lógico com o intuito de disponibilizar maior confiabilidade, redundância de dados e/ou ganho de desempenho, dividindo as operações realizadas nos discos (leitura e escrita).

O que define o modo ao qual o RAID em si irá trabalhar (desempenho e/ou redundância) é o "nível" de RAID, onde destes existem vários (0,1,5,10..), cada um com uma utilização específica, podendo inclusive ser combinados entre si.

Abaixo, abordarei dois níveis básicos e muito conhecidos, o RAID-0 e o RAID-1.

RAID 0
É utilizado exclusivamente para o aumento de desempenho usando dois discos iguais para reduzir o tempo de escrita no disco. O grande problema deste tipo de RAID é a falta de confiabilidade nos dados, pois se um dos discos falhar todos os dados armazenados serão perdidos devido aos dados estarem "separados" entre os membros do array.
Básico sobre RAID com mdadm e raidtools 275px-Raid-0

RAID 1
Este tipo de RAID é utilizado para a redundância dos dados, onde uma cópia dos dados é feita entre os membros que estão no array.

São utilizados dois discos, sendo que o espaço disponível será o do menor disco, porém, o desempenho é um pouco afetado devido às operações serem gravadas mais de uma vez.

Básico sobre RAID com mdadm e raidtools 275px-Raid-1

Outros exemplos de RAID: http://pt.wikipedia.org/wiki/RAID

Quanto aos softwares utilizados:

raidtools → Esta é uma ferramenta que tem se tornado obsoleta. Eu, particularmente, prefiro o mdadm, mas de qualquer forma é uma ferramenta bacana, antiga, porém ainda usada. Segundo as "más" línguas, o software em questão é instável e contém alguns bugs, mas gosto é gosto.
mdadm → Uma ferramenta muito poderosa, seu suporte foi incorporado ao kernel 2.6, onde módulos referentes ao RAID e também sobre o LVM (que por sinal será o próximo artigo), melhoraram e muito. A ferramenta em questão é de fácil configuração, estável e é muito fácil encontrar sua documentação na Internet. O nome md significa "multiple Device". E adm, é óbvio que significa "administrar" (ou seja, administrar múltiplos dispositivos). Ele é um software free e disponibilizado sobre a licença GPL.


O ambiente: Dois discos rígidos de 3GB, utilizando uma máquina virtual com o Debian instalado.
RAID: Particionando os discos com a ferramenta fdisk
A primeira coisa a fazer é criar e configurar o tipo de partições dos discos que serão utilizados no RAID para o tipo fd (RAID Linux autodetect), onde nos exemplos seguintes, iremos configurar um RAID nível 1.

Podemos utilizar o fdisk para o particionamento e para alterar o tipo da partição, exemplo:

Obs.: Os discos que irei utilizar estão representados no meu servidor como /dev/sdd e /dev/sdc.

# fdisk -l /dev/sd[cd]

Disk /dev/sdc: 3221 MB, 3221225472 bytes
255 heads, 63 sectors/track, 391 cylinders
Units = cilindros of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

Conclusão: O disco /dev/sdc não contém uma tabela de partições válida:


Disk /dev/sdd: 3221 MB, 3221225472 bytes
255 heads, 63 sectors/track, 391 cylinders
Units = cilindros of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

Conclusão: O disco /dev/sdd não contém uma tabela de partições válida.

Como pode ser verificado, os discos em questão não contêm nenhuma tabela de partição, ainda. Eu irei criar uma única partição que irá englobar todo o HD, vamos lá:

# fdisk /dev/sdc

Comando (m para ajuda): n # Nova partição

Comando - ação
e estendida
p partição primária (1-4)
p # partição primária

Número da partição (1-4): 1 #Primeira partição (/dev/sdc1)

Primeiro cilindro (1-391, default 1): # Valor do primeiro cilindro
Using default value 1
Last cilindro, +cilindros or +size{K,M,G} (1-391, default 391): +3000M # cilindro final, ou # tamanho, neste caso aproximadamente 3 GB.

Comando (m para ajuda): p #Imprime a tabela de partições

Disk /dev/sdc: 3221 MB, 3221225472 bytes
255 heads, 63 sectors/track, 391 cylinders
Units = cilindros of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xd976698f

Dispositivo Boot Start End Blocks Id System
/dev/sdc1 1 383 3076416 83 Linux

Aqui, eu altero o tipo de partição para fd:

Comando (m para ajuda): t #Tipo de partição

Selected partition 1
Código hexadecimal (digite L para listar os códigos): fd #Tipo de partição selecionada

O tipo da partição 1 foi alterado para fd (Detecção automática de RAID Linux)

Comando (m para ajuda): w #Grava a tabela de partições

A tabela de partições foi alterada!

Chamando ioctl() para reler tabela de partições.
Sincronizando discos.

O mesmo deve ser feito com o segundo disco e após o correto particionamento dos discos, vamos à configuração.

Configurando um RAID 1 com o raidtools
Pacotes necessários
Tenho que admitir que, devido ao raidtools ser um software deveras antigo, tive um pouco de dificuldade para encontrá-lo, até por que ele não está presente nos repositórios oficiais, pelo menos não da distribuição que usei.

Encontrei para o Debian neste mirror:

http://archive.debian.net/en/woody/raidtools


Depois de feito o download, instale o pacote através do dpkg:

# dpkg -i raidtools_0.42-33_i386.deb

Caso ocorram dependências, use a seguinte opção do apt-get, ou instale as dependências manualmente:

# apt-get install -f

E depois, rode o dpkg novamente.

Após instalar o raidtools e alterar o tipo de partição em ambos os discos, iremos partir para o arquivo de configuração do nosso dispositivo de RAID, o /etc/raidtab:

# vi /etc/raidtab

# Informa qual o nome do dispositivo de RAID.
raiddev /dev/md0

# O nivel de RAID.
raid-level 1

# A quantidade de discos que farão parte do RAID.
nr-raid-disks 2

# Tamanho dos blocos do Array(KB).
chunk-size 4

# Cria um superbloco no final de cada um dos discos RAID (valores 0 ou 1)
persistent-superblock 1

# Os discos a serem utilizados no array.
device /dev/sdc1
raid-disk 0

device /dev/sdd1
raid-disk 1

Agora precisamos somente criar o dispositivo de RAID, e para isso utilizamos o comando mkraid:

# mkraid /dev/md0

Ele deve retornar algo como:


mkraid version 0.36.4
parsing configuration file
handling MD device /dev/md0
analyzing super-block
disk 0: /dev/sdc1, 3076416kB, raid superblock at 3076352kB
disk 1: /dev/sdd1, 3076416kB, raid superblock at 3076352kB
initializing raid set
clearing device /dev/sdc1
clearing device /dev/sdd1
(98% done; ~0:00 left 1:30 elapsed [33821.2 KB/sec])
writing raid superblock
MD ID: a92b4efc
Conforms to MD version: 0.36.4
Raid set ID: 48eeb121
Creation time: Sun Jan 20 03:35:16 2013
Update time: Sun Jan 20 03:36:48 2013
State: 1 (clean)
Raid level: 1
Individual disk size: 3004MB (3076352kB)
Total number of disks: 2
Number of raid disks: 2
Number of active disks: 2
Number of working disks: 2
Number of failed disks: 0
Number of spare disks: 0

Disk 0: raid_disk 0, state: 6 (operational, active, sync)
Disk 1: raid_disk 1, state: 6 (operational, active, sync)
mkraid: completed


Obs.: Podemos verificar a sincronização dos HD's no arquivo /proc/mdstat.

Agora basta formatar:

# mkfs -t ext3 /dev/md0

E montar:

# mount /dev/md0 /backup

Configurando um RAID 1 com o mdadm
O ambiente utilizado foi o mesmo do exemplo anterior, neste caso somente restaurei o snapshoot da VM.

O mdadm, provavelmente, encontra-se disponível nos repositórios da sua distribuição. Para procurá-lo em distribuições derivadas do Debian usando o apt, use o seguinte comando:

# apt-cache search mdadm

Ele deve retornar:


mdadm - tool to administer Linux MD arrays (software RAID)

Agora, basta instalar:

# apt-get install mdadm

Em Red Hat e derivados:

# yum list mdadm
# yum install mdadm

Devido ao mdadm trabalhar com superblocos persistentes por padrão, podemos utiliza-lo na criação de dispositivos RAID de duas maneiras, sendo uma delas usando o arquivo de configuração /etc/mdadm/mdadm.conf ou diretamente através da ferramenta mdadm (esta será a forma utilizada no artigo).

O primeiro passo a seguir é idêntico ao utilizar o raidtools, é necessário alterar o tipo das partições para fd. Para quem não sabe realizar o procedimento, na parte onde abordei o raidtools, o procedimento é feito passo a passo, basta dar uma olhadinha.

Após as alterações realizadas no disco, vamos começar a criar o nosso dispositivo de RAID (RAID 1) utilizando o comando mdadm, irei explicando seus parâmetros a cada comando:

# mdadm -C -v /dev/md0 -l 1 -n 2 /dev/sdc1 /dev/sdd1

mdadm: size set to 2056192K
mdadm: array /dev/md0 started.

Onde:

-C → Cria o Dispositivo de RAID;
-l → O Nível(level) do RAID;
-n → O número de dispositivos que compõem o RAID;
/dev/sd[cd]1 → Os discos que fazem parte do meu novo dispositivo de RAID, o /dev/md0 (lembrando que "md" vem de dispositivos múltiplos).


Como pode ser observado, o próprio mdadm já informa que o dispositivo de RAID foi inicializado na saída do comando.

E uma das maneiras de verificar se o RAID está funcionado é utilizando o arquivo /proc/mdstat, onde o sincronismo entre os discos também pode ser verificado.

Outra maneira de verificar o funcionamento do RAID é utilizando a opção "-D" (ou: --detail [detalhes]) do mdadm, onde a saída é bem completa.

Agora basta fazer o mesmo procedimento básico, aplicar um sistema de arquivos ao nosso sistema de RAID (Ex.: mkfs -t ext3 /dev/md0), montar em um ponto de montagem qualquer, de acordo com as suas necessidades e ser feliz.

* Lembrando que o mdadm fornece muitas opções bacanas para o RAID, vamos à mais algumas.

Uma coisa muito interessante é testar a eficiência do RAID que estou configurando, e para isso o mdadm possibilita "falhar" um dos discos. Mas calma, ele não vai destruir o seu HD.

O que o mdadm faz é "marcar" o seu disco como defeituoso, assim o mdadm passa a utilizar os outros discos do array para o seu correto funcionamento (claro, dependendo das configurações que você fez e o nível do RAID).

Antes de falhar um dos meus discos, vamos ver como que está o "status" do meu device de raid:

# mdadm -D /dev/md0

/dev/md0:
Version : 00.90
Creation Time : Mon Jan 21 02:39:08 2013
Raid Level : raid1
Array Size : 2056192 (2008.34 MiB 2105.54 MB)
Used Dev Size : 2056192 (2008.34 MiB 2105.54 MB)
Raid Devices : 2
Total Devices : 2
Preferred Minor : 0
Persistence : Superblock is persistent

Update Time : Mon Jan 21 02:39:50 2013
State : clean
Active Devices : 2
Working Devices : 2
Failed Devices : 0
Spare Devices : 0

UUID : 48c32905:e7358574:b05e291b:984b098e (local to host daileon)
Events : 0.18

Number Major Minor RaidDevice State
0 8 33 0 active sync /dev/sdc1
1 8 49 1 active sync /dev/sdd1

Como pode ser observado, está tudo OK, agora falhando um dos discos:

# mdadm --manage /dev/md0 --set-faulty /dev/sdd1

mdadm: set /dev/sdd1 faulty in /dev/md0

Agora meu disco apresentou uma "falha" no dispositivo /dev/sdd1:

# mdadm -D /dev/md0

/dev/md0:
Version : 00.90
Creation Time : Mon Jan 21 02:39:08 2013
Raid Level : raid1
Array Size : 2056192 (2008.34 MiB 2105.54 MB)
Used Dev Size : 2056192 (2008.34 MiB 2105.54 MB)
Raid Devices : 2
Total Devices : 2
Preferred Minor : 0
Persistence : Superblock is persistent

Update Time : Mon Jan 21 02:52:53 2013
State : clean, degraded
Active Devices : 1
Working Devices : 1
Failed Devices : 1
Spare Devices : 0

UUID : 48c32905:e7358574:b05e291b:984b098e (local to host daileon)
Events : 0.19

Number Major Minor RaidDevice State
0 8 33 0 active sync /dev/sdc1
1 0 0 1 removed

2 8 49 - faulty spare /dev/sdd1

Neste caso, como existem somente dois HDs e o RAID é de nível 1, os dados não serão perdidos, pois as cópias dos dados estão salvas no outro disco, então, bastaria eu remover este HD "defeituoso", espetar um novo, particionar, alteração o tipo da partição e adicioná-lo no meu RAID.

Como por exemplo:

# mdadm --manage /dev/md0 --add /dev/sde1

Assim eu poderia verificar o andamento da sincronização do novo disco através do arquivo /proc/mdstat.

Fonte: Vivaolinux ( autor: Igor Teixeira da Rocha )

http://www.criciumanet.com.br

Ir para o topo  Mensagem [Página 1 de 1]

Permissões neste sub-fórum
Não podes responder a tópicos