05.07  
Inicio arrow Resumo do Site arrow Fazendo RAID 0, 1 e 10 no FreeBSD
Principal
Inicio
Noticias
Artigos
Regras da Lista
Assinar a Lista
Histórico da Lista
Galeria de Imagens
Contador Usuários FUG
FUGs Estaduais
Downloads
Enquetes
FAQ
Resumo do Site
Links
Pesquisar
Contato
Sobre a FUG-BR
RSS
-
DOC-BR (FUG BR)
Introdução
Projeto DOC-BR
Handbook
FAQ Oficial
-
+ Noticias
Alertas de Seguranca
Alertas em Ports
BSD em Geral
DaemonNews (Ingles)
MyFreeBSD
Todas Categorias
-
Login
Nome de Usuário

Senha

Lembrar login
Esqueceu sua senha?
Sem conta? Crie uma


Fazendo RAID 0, 1 e 10 no FreeBSD PDF Imprimir E-mail
Por Alexandre Vasconcelos   
07/02/2008

ImageEste documento tem o objetivo de demonstrar na prática o funcionamento e a configuração de 3 níveis de RAID no FreeBSD 6.3 utilizando as ferramentas do GEOM(4) para isso. Todas as implementaçõees foram feitas no VMware Server por falta de discos reais.

Lembrando que o Handbook do FreeBSD também nos traz boas informações sobre este assunto aqui .

Nossos agradecimentos ao Danilo Egêa que nos enviou este artigo, valeu Danilo! O original, em formato PDF pode ser obtido aqui.

 

 

1 RAID, níveis de RAID e o GEOM(4)

RAID é o agrupamento de discos, a grosso modo é pegar 2 ou mais discos e fazê-los trabalhar como se fossem um. Existem vários níveis diferentes de RAID, entenda-se por níveis a maneira como o RAID vai trabalhar.

GEOM(4) é um framework criado para o desenvolvimento de drivers de disco com suporte a infra-estrutura que permite a utilização de vários discos como se fossem um. Com ele é possível unir, replicar e distribuir dados em vários discos e até em uma rede, criando assim uma redundância de dados. Nas próximas seções demonstrarei como configurar os níveis 0, 1 e 10 de RAID no seu sistema FreeBSD.

 

2 RAID 0


O nível 0 de RAID é a união de dois ou mais discos de tamanhos iguais, seus tamanhos são somados aumentando assim a capacidade de armazenamento da unidade. O GEOM(4) permite a criação de RAID de nível 0 com a ferramenta gstripe(8).

Pois bem, como dito na introdução eu não tinha discos reais para fazer todo o trabalho em uma máquina real, ai tive que apelar para o uso do VMware Server. Criei 5 discos no VMware, 1 para a instalação do sistema e outros 4 para a configuração do RAID, 2 IDE e 2 SCSI. Vamos utilizar os dois discos IDE para a configuração do RAID 0. Bom, o primeiro passo é configurar os módulos necessários para carregarem automaticamente no sistema, para isso inclua as 2 linhas abaixo no arquivo /boot/loader.conf:

geom_stripe_load="YES"
geom_mirror_load="YES"


Muito bem, os discos que usarei para configurar o RAID são ad1 e ad3. O
comando para criar o RAID é:

gstripe label -v gs0 ad1 ad3


Onde gs0 é o nome do dispositivo que será criado, esse pode ser qualquer nome,
como raid0 por exemplo. Como retorno do comando temos:


GEOM_STRIPE: Device gs0 created (id=3059829028).
GEOM_STRIPE: Disk ad1 attached to gs0.
GEOM_STRIPE: Disk ad3 attached to gs0.
GEOM_STRIPE: Device gs0 activated.

É fascinante como FreeBSD é simples, basta apenas formatar o dispositivo gs0 para termos nosso RAID 0 pronto para usar:

newfs /dev/stripe/gs0

Agora jé podemos montar nosso dispositivo e usar como bem entendermos:

mount /dev/stripe/gs0 /raid0


Não é preciso declarar em lugar nenhum que você desaja carregar seu RAID agora, pois sempre que o módulo é carregado o RAID é ativado automaticamente.


2.1 Manutenção do RAID 0

Como todo bom RAID 0, se você perder um dos discos você perde todos os seus dados, e como inserir novos discos exige a formatação do RAID novamente, não há muito o que ser feito na questão manutenção do RAID 0. Podemos verificar o estado do RAID com o comando:

gstripe status

E obteremos a seguinte informação:

Name Status Components
stripe/gs0 UP ad1
ad3


2.2 Desativando o RAID 0


Os passos abaixo desativam o RAID e removem as informações do GEOM(4) dos discos:

umount /raid0
gstripe stop -v gs0
gstripe unload -v
gstripe clear -v ad1 ad3



3 RAID 1

RAID 1 é o espelhamento entre dois ou mais discos, onde todos os discos são cópias idênticas. A ferramenta para configuração de RAID 1 no FreeBSD é o gmirror(8). Bom, como no RAID 0 o RAID 1 também é muito fácil de configurar. Antes de criar o RAID temos que desativar a proteção contra gavação na MBR dos discos, para isso sete a MIB Sysctl kern.geom.debugflags com o valor 16:

sysctl kern.geom.debugflags=16

O comando abaixo cria um RAID 1 chamado gm0 já com dois discos e os sincroniza automaticamente:

gmirror label -v -b load gm0 ad1 ad3
gmirror load


Assim temos a seguinte saída do kernel:

GEOM_MIRROR: Device gm0 created (id=1545084164).
GEOM_MIRROR: Device gm0: provider ad3 detected.
GEOM_MIRROR: Device gm0: provider ad1 detected.
GEOM_MIRROR: Device gm0: provider ad3 activated.
GEOM_MIRROR: Device gm0: provider ad1 activated.
GEOM_MIRROR: Device gm0: provider mirror/gm0 launched.


Pronto, se o seu primeiro disco já estava formatado é só montar a partição:

mount /dev/mirror/gm0 /raid1


Ou senão formatá-lo:

newfs /dev/mirror/gm0


3.1 Consideraçõoes importantes sobre o gmirror(8)

O parâmetro -b indica o algoritmo que será usado para escolher a maneira como os dados serão lidos dos discos, load é um algoritmo que lê preferencialmente do disco com menos carga. Outros algoritmos podem ser encontrados nas páginas de manual do gmirror(8).
Você também pode criar um RAID com um disco que possui um sistema já instalado tranqüilamente. Caso o faça, para cada label existente em sua partição FreeBSD será criado um dispositivo /dev/mirror/gm0s1x. Exemplo:

ls /dev/mirror/
gm0 gm0s1 gm0s1a gm0s1b gm0s1c gm0s1d gm0s1e gm0s1f

Para iniciar o sistema pelo RAID basta substituir em seu /etc/fstab o disco /dev/ad0 por /dev/mirror/gm0 :

/dev/mirror/gm0s1b none swap sw 0 0
/dev/mirror/gm0s1a / ufs rw 1 1
/dev/mirror/gm0s1e /tmp ufs rw 2 2
/dev/mirror/gm0s1f /usr ufs rw 2 2
/dev/mirror/gm0s1d /var ufs rw 2 2



3.2 Inserindo mais um disco no RAID 1

Inserir outro disco no arranjo é muito simples, o comando abaixo insere o disco da0 no RAID:

gmirror insert -v gm0 da0

É possível ver o andamento da sincronização com o comando gmirror status:

Name Status Components
mirror/gm0 DEGRADED ad1
ad3
da0 (3%)



3.3 Removendo um disco do RAID 1

Caso seja preciso trocar um disco da máquina que pertença ao RAID, será necessário removê-lo do arranjo, o comando abaixo remove o disco ad3 do RAID:

gmirror remove -v gm0 ad3

Com o comando gmirror status é possível ver que o disco ad3 não está mais no RAID:

Name Status Components
mirror/gm0 COMPLETE ad1
da0


3.4 Desativando o RAID 1

Semelhante ao visto na seção sobre RAID 0, desativar um RAID 1 também é muito simples (pra variar). O comando abaixo desativa o arranjo e limpa as informações do GEOM(8) dos discos:

gmirror stop -v gm0
gmirror unload -v
gmirror clear -v ad1 da0



4 RAID 10

O nível de RAID 10 (1+0) precisa no mínimo de 4 discos para funcionar corretamente, o objetivo deste estrutura é fornecer um alto nível de redundância. A ilustração abaixo tenta mostrar a organização dos discos em um RAID 10:

DISCO0 DISCO1   DISCO2 DISCO3
      |               |

    RAID1           RAID1
      |               |

      ------RAID0------



Como podemos ver, primeiramente os discos são dividos em 2 pares de RAID 1 e depois é feito um RAID 0 com os dois arranjos de nível 1. Simples demais. Bom, vamos lá então, dividi os discos em ad1 e ad3 e da0 e da1, um RAID 1 de dois discos IDE e outro de dois discos SCSI respectivamente. Primeiro vamos criar os arranjos de nível 1:

gmirror label -v -b load gm0 ad1 ad3
...
gmirror label -v -b load gm1 da0 da1
...


Com o comando gmirror status vemos que os dois arranjos foram criados:

Name Status Components
mirror/gm0 COMPLETE ad1
ad3
mirror/gm1 COMPLETE da0
da1


Bem, vamos agora criar o RAID 0 com os dois arranjos gm0 e gm1:

gstripe label -v gs0 /dev/mirror/gm0 /dev/mirror/gm1
...


Com o comando gstripe status vemos que o RAID 0 foi criado:

Name Status Components
stripe/gs0 UP mirror/gm0
mirror/gm1


Pronto, falta somente formatar o RAID e usar como quiser:

newfs /dev/stripe/gs0
..
mount /dev/stripe/gs0 /raid10


Num RAID 10 você pode perder qualquer um discos que o funcionamento do sistema não será afetado.


4.1 Desativando um RAID 10

Para desativar um RAID 10 você deve primeiro desativar o RAID 0:

gstripe stop -v gs0
gstripe unload -v
gstripe clear -v /dev/mirror/gm0 /dev/mirror/gm1


E depois desativar os RAID 1:

gmirror stop -v gm0
gmirror stop -v gm1
gmirror unload -v
gmirror clear -v ad1 ad3 da0 da1


Pronto, nos livramos de todos eles.

Danilo Egêa Gondolfo
daniloegea at yahoo.com.br
http://daniloegea.wordpress.com

Comentários
Primeiro artigo no FUG
Por Danilo Egêa em 07/02/2008 19:07:37
Esse foi meu primeiro artigo aqui no FUG. Bom, a indentação de algumas partes do artigo ficaram meio fora dos eixos hehe. 
 
A versão em PDF pode ser obtida aqui: http://daniloegea.files.wordpress.com/2008/02/fazendo_raid_0_1_e_10_no_freebsd.pdf 
 
Obrigado pela publicação Patrick. 
 
Abraços...
Parabéns, ótima contribuição, e obrigado
Por Patrick Tracanelli em 08/02/2008 10:28:56
Danilo, obrigado pela contribuição, uma das primeiros contribuições "brincando de lego" com Geom, que combina mais de um recurso pra obter uma terceira abordagem. 
 
Quem publicou foi o Alexandre, felizmente, mais rapido do que eu daria conta hehehe. 
 
Tentei te agradecer por e-mail mas o Yahoo tem bloqueado meus e-mails pra voce que dizem "obrigado" hehe. Provavelmente "obrigado" é SPAM. Até comentei isso na FUG hehe. 
 
Otima contribuição :)
Obrigado !
Por Danilo Egêa em 08/02/2008 14:02:36
Ops, desculpe Alexandre, muito obrigado a você também ! 
 
Abraços...
Por alex.vasconcelos em 08/02/2008 14:17:46
Nós é que te agradecemos Danilo, sempre é bom ter contribuições de pessoas da comunidade. Sempre que puder nos envie artigos e notícias. 
 
Abraços, 
Alexandre
Parabens!
Por Danton Dorati - urisso em 09/02/2008 11:02:06
Que seja o primeiro de muitos!
Parabéns pelo artigo Danilo!!!!
Por mmaycon em 14/02/2008 23:35:44
muito bom mesmo! coloquei pra funcionar o RAID 1 com dois discos IDE em produção e ficou beleza! 
Gostaria de compartilhar inclusive alguns detalhes da implantação do RAID 1 para um sistema bsd já instalado porque que acho que alguns podem ter alguma dificuldade assim como eu (leigo) tive. 
Após a instalação do S.O. todos os ítens do tutorial devem estar instalados e configurados, ou seja, executar #gmirror label -v -b load gm0 ad1 ad3 
#gmirror load 
adicionar ao /boot/loader.conf o geom_mirror_load="YES", adicionar ao /etc/sysctl.conf o kern.geom.debugflags=16 e alterar o nome dos dispositivos no /etc/fstab conforme o tutorial com o nome que você deu ao array e por último faça o seguinte: 
 
#gmirror rebuild gm0 ad3(este comando reconstruirá o dispositivo ad3 que receberá as informações do ad1 pois ao montar o array ele não sincroniza automaticamente a não ser que coloque a opção -a) 
#gmirror configure -a gm0 (-a liga a sincronia automática) 
fiz assim porque achei mais seguro rsrsr... 
 
bom, é isso! espero que ajude alguém! 
 
um abraço a todos!
Obrigado !
Por Danilo Egêa Gondolfo em 15/02/2008 08:52:37
Muito obrigado pelas observações ! 
 
Abraços ... 
 
Danilo Egêa Gondolfo


Comente!*
Nome:
E-mail
Homepage
Título:
Comentário:

Código:* Code

Última Atualização ( 18/02/2008 )
 
< Anterior   Próximo >
FUG-BR - Espalhando BSD
Dicas Rápidas:

Dificuldades para imprimir aspas simples no awk(1)? escaping não ajuda né? Tente um escape no código de aspas simples (47): 

# echo a b | \
awk '{print "\47"$1"\47\t"$2}'

'a'     b

Para aspas duplas use \42

 

 




Wallpapers
Online:
Nós temos 17 visitantes online


Devil Store - Sua loja BSD
FreeBSD Brasil LTDA

FUG-BR: Desde 1999, espalhando BSD pelo Brasil.