RES: [FUGSPBR] Duvida no VINUM! - Experiencia Interessante

Kleyson Rios lista em aganp.go.gov.br
Qua Out 6 11:03:08 BRT 2004


Caro Marlon,

Deixa passar uma experiencia pra vc e para o grupo.
Utilize raid5 somente se for uma particao read-only ou entao com mais
leitura do que escrita.

Recentemente adquirimos um servidor com 2G de memoria, 3 discos de 73G e 2
processadores XEON de 2.8, para rodar Qmail+clamav+qmail-scanner+vpopmail.

Eu configurei meu servidor da seguinte forma:

Disco1	Disco2    	Disco3
----------	----------	----------
|/       |	|/       |	|/u01    |
----------	----------	----------
|/var    |	|/var    |	|/var    |
----------	----------	----------
|/usr    |	|/usr    |	|/usr    |
----------	----------	----------
|/emails |	|/emails |	|/emails |
----------	----------	----------

A particao "/" eu configurei raid1 (espelhamento) para garantir que eu
sempre teria um disco de boot funcionando, podendo dar crash em qualquer
disco que meu sistema continuaria bootavel.

As particoes "/var", "/usr" e "/emails" eu configurei raid5 para continuar
garantindo disponibilidade do meu sistema.

A particao "/u01" foi uma particao que sobrou do disco 3 e ficou fora da
configuracao do vinum.

Com essa configuracao eu garanto um sistema confiavel e disponivel crashando
qualquer um dos discos.
Deu um trabalho filho da p#%!& ate conseguir colocar pra funcionar, isso pq
os manuais que encontrei nao explicavam muito bem o pq daquilo que estavam
fazendo. Depois que peguei o jeito em 10 minutos eu monto outro sistema
desses.

OK. Sistema pronto e ideal para garantir uma disponibilidade coloquei em
producao. Temos cerca de 4000 contas de email tendo dias com fluxo de
150.000 email tratando cerca de 1.8G. Em producao meu sistema sentou, um
email de mim pra mim mesmo leva cerca de 5 horas para ser entregue, uma msg
pra sair da caixa de saida levava cerca de 1,5 minutos, a fila do qmail teve
uma hora que estava com mais de 100.000 msg enfileiradas esperando para
serem processadas e entregues.

Achei que fosse tudo, ate clamav achando que o mesmo ainda nao tinha
maturidade para um ambiente de grande porte. Foi questionado pelo meu
supervisor, que perguntou se nao poderia ser o raid, eu resolvi olhar com
mais carinho a solucao. Atraves do vmstat eu notei que a quantidade de
processos bloqueados era inaceitaveis e havia muito processamento ocioso,
nao entendia como tinha processamento ocioso e estava com uma quantidade
tremenda de processos bloqueados, deduzi que poderia ser gargalo no acesso a
disco e entao resolvi pesquisar sobre a performance do vinum, e encontrei a
seguinte discussao que batia exatamento com o que eu estava passando
(http://lists.freebsd.org/pipermail/freebsd-stable/2003-March/000100.html)

Resolvi entao entao retirar as configuracoes de raid da maquina para ver se
resolvia meu problema, hj a fila do meu correio nao tem mais de 100 msg
enfileiradas, a msg da minha caixa de saida nao leva mais do que 1 segundo
para ser enviada e outros problemas que foram resolvidos apenas tirando o
raid, que mantia um gargalo no acesso ao disco.

Remover foi facil, pois na implementacao eu usei o processo de
Bootstrapping, que nada mais eh do que criar a particao do vinum utilizando
os dados ja gravados nos discos, entao como eu ja tinha os dados gravados
basicamente, nao somente isso, eu mudei meu fstab para apontar direto para o
device e nao para a particao vinum.

Agora vou fazer uma nova experiencia, com meu sistema ja em producao vou
utilizar o processo de bootstrap para fazer raid1 de tudo e ve o que
acontece, o overhead de raid1 e muito menor do que o raid5.

Concluindo, se for colocar raid5 em um sistema analise bastante quando de
escrita vc tem no disco, pois se for grande vc pode ter grandes problemas no
seu sistema inteiro.

Abaixo vou colocar mais ou menos como fiz.

O vinum precisa de 265 blocos para gravar seus arquivos de configuracao,
entao a minha primeira particao em cada disco foi uma area de swap, onde
depois eu diminui 281 blocos (265 + 16).

Entao eu tinha a seguinte configuracao dos meus discos:

Disco1
------
8 partitions:
#        size   offset    fstype   [fsize bsize bps/cpg]
  a:  2097152  1048576    4.2BSD     2048 16384    89   # (Cyl.   65*- 195*)
  b:  1048576        0      swap                        # (Cyl.    0 - 65*)
  c: 143363997        0    unused        0     0        # (Cyl.    0 -
8923*)
  e:  6291456  3145728    4.2BSD     2048 16384    89   # (Cyl.  195*- 587*)
  f:  7168000  9437184    4.2BSD     2048 16384    89   # (Cyl.  587*-
1033*)
  g: 126758813 16605184    4.2BSD     2048 16384    89  # (Cyl. 1033*-
8923*)

Disco2
------
8 partitions:
#        size   offset    fstype   [fsize bsize bps/cpg]
  b:  1048576        0      swap                        # (Cyl.    0 - 65*)
  c: 143363997        0    unused        0     0        # (Cyl.    0 -
8923*)
  e:  2097152  1048576    4.2BSD     2048 16384    89   # (Cyl.   65*- 195*)
  f:  6291456  3145728    4.2BSD     2048 16384    89   # (Cyl.  195*- 587*)
  g:  7168000  9437184    4.2BSD     2048 16384    89   # (Cyl.  587*-
1033*)
  h: 126758813 16605184    4.2BSD     2048 16384    89  # (Cyl. 1033*-
8923*)

Disco3
------
8 partitions:
#        size   offset    fstype   [fsize bsize bps/cpg]
  b:  1048576        0      swap                        # (Cyl.    0 - 65*)
  c: 143363997        0    unused        0     0        # (Cyl.    0 -
8923*)
  e:  6291456  1048576    4.2BSD     2048 16384    89   # (Cyl.   65*- 456*)
  f:  7168000  7340032    4.2BSD     2048 16384    89   # (Cyl.  456*- 903*)
  g: 126758813 14508032    4.2BSD     2048 16384    89  # (Cyl.  903*-
8793*)
  h:  2097152 141266845    4.2BSD     2048 16384    89  # (Cyl. 8793*-
8923*)

Entao eu boot em single mode para alterar as particoes da forma necessaria
para o processo de bootstrap.

Disco1
------
8 partitions:
#        size   offset    fstype   [fsize bsize bps/cpg]
  a:  2097152  1048576    4.2BSD     2048 16384    89   # (Cyl.   65*- 195*)
  b:  1048295      281      swap                        # (Cyl.    0 - 65*)
  c: 143363997        0    unused        0     0        # (Cyl.    0 -
8923*)
  e:  6291456  3145728    4.2BSD     2048 16384    89   # (Cyl.  195*- 587*)
  f:  7168000  9437184    4.2BSD     2048 16384    89   # (Cyl.  587*-
1033*)
  g: 126758813 16605184    4.2BSD     2048 16384    89  # (Cyl. 1033*-
8923*)
  h: 143363981       16     vinum

Disco2
------
#        size   offset    fstype   [fsize bsize bps/cpg]
  a:  2097152  1048576    4.2BSD     2048 16384    89   # (Cyl.   65*- 195*)
  b:  1048295      281      swap                        # (Cyl.    0 - 65*)
  c: 143363997        0    unused        0     0        # (Cyl.    0 -
8923*)
  e:  6291456  3145728    4.2BSD     2048 16384    89   # (Cyl.  195*- 587*)
  f:  7168000  9437184    4.2BSD     2048 16384    89   # (Cyl.  587*-
1033*)
  g: 126758813 16605184    4.2BSD     2048 16384    89  # (Cyl. 1033*-
8923*)
  h: 143363981       16     vinum

Disco3
------
#        size   offset    fstype   [fsize bsize bps/cpg]
  b:  1048295      281      swap                        # (Cyl.    0 - 65*)
  c: 143363997        0    unused        0     0        # (Cyl.    0 -
8923*)
  d:  6291456  1048576    4.2BSD     2048 16384    89   # (Cyl.   65*- 456*)
  e:  7168000  7340032    4.2BSD     2048 16384    89   # (Cyl.  456*- 903*)
  f: 126758813 14508032    4.2BSD     2048 16384    89  # (Cyl.  903*-
8793*)
  g:  2097152 141266845    4.2BSD     2048 16384    89  # (Cyl. 8793*-
8923*)
  h: 143363981       16     vinum

Se vc olhar, vai ver que algumas particoes eu mudei a letra delas para que
todos os discos tivesse a particao do vinum a letra "h", e o disco1 e disco2
a particao correspondente a "/" fosse a letra "a", os tamanhos e offsets das
particoes continuaram os mesmos, exceto swap e vinum.

Entao na particao swap e coloquei o offset comecando 281, isso para quando
sua swap encher nao sobrescrever os arquivos de configuracao do vinum, e no
tamanho do swap eu diminui 281 para manter a coerencia.

OBS.: a particao "c" e criada automaticamente e mapeia o tamanho total do
disco, eh utiliza pelo sistema operacional e nunca deve ser alterada.

Criei uma particao "h" com o mesmo tamanho da particao "c". O offset dessa
particao comeca em 16 e diminui 16 do tamanho dela, e coloquei o fstype como
vinum (minusculo). Essa particao ira fazer o bootstrap dos dados no disco.

OBS.: A instalacao do freebsd tem que ser feita em um disco jogando tudo na
particao "/", ou seja, cria-se as particoes como indicadas mas na hora da
instalacao nao quebra em varios mount point.

Criei entao meus arquivos de configuracao do vinum:

Raid1
-----
drive rootdisk device /dev/da0s1h
drive rootback device /dev/da1s1h
 volume root
  plex org concat
# a:      2097152              1048576    4.2BSD
   sd len 2097152s driveoffset 1048560s drive rootdisk
  plex org concat
# a:      2097152              1048576    4.2BSD
   sd len 2097152s driveoffset 1048560s drive rootback

# vinum create config.raid1

No fstab aponte o "/" para "/dev/vinum/root"
No arquivo /boot/loader.conf coloque:
vinum_load="YES"
vinum.autostart="YES"

# vinum start root.p1.s0

No final do start vc tera seu sistema de boot em raid1. Basta testar.

Agora criando o raid5

Raid5
-----
drive data1 device /dev/da2s1h

volume varr5
 plex org raid5 512k
#  e:    6291456              3145728    4.2BSD
  sd len 6291456s driveoffset 3145712s drive rootdisk
#  e:    6291456              3145728    4.2BSD
  sd len 6291456s driveoffset 3145712s drive rootback
#  d:    6291456              1048576    4.2BSD
  sd len 6291456s driveoffset 1048560s drive data1

volume usrr5
 plex org raid5 512k
#  f:    7168000              9437184    4.2BSD
  sd len 7168000s driveoffset 9437168s drive rootdisk
#  f:    7168000              9437184    4.2BSD
  sd len 7168000s driveoffset 9437168s drive rootback
#  e:    7168000              7340032    4.2BSD
  sd len 7168000s driveoffset 7340016s drive data1

volume vpopmailr5
 plex org raid5 512k
#  g:    126758813              16605184    4.2BSD
  sd len 126758813s driveoffset 16605168s drive rootdisk
#  g:    126758813              16605184    4.2BSD
  sd len 126758813s driveoffset 16605168s drive rootback
#  f:    126758813              14508032    4.2BSD
  sd len 126758813s driveoffset 14508016s drive data1

# vinum create config.raid5
# vinum init varr5.p0
# vinum init usrr5.p0
# vinum init vpopmailr5.p0
# newfs /dev/vinum/varr5
# newfs /dev/vinum/usrr5
# newfs /dev/vinum/vpopmailr5

Apos o init dessas particoes vc tera seus sistemas de arquivos em raid5
"/dev/vinum/varr5", "/dev/vinum/usrr5" e "/dev/vinum/vpopmailr5". Agora vc
deve montar essas particoes, copiar o conteudo de cada parta equivalente
para essas particoes e atualizar o fstab.

Note que na definicao de cada "sd" o offset foi diminuido 16 blocoes, em uma
das documentacoes eu encontrei falando que o processo de bootstrap precisa
de 16 blocos no inicio de cada particao, agora eu nao sei pra que, nao
consegui responder essa pergunta.

Na verdade o bootstrap esta sendo feito somente na "/" e eh onde ele mantem
os dados, mas usei o mesmo processo pra tudo. Eu nao tive tempo de fazer
outros teste, pois estava com muita urgencia do servidor.

Bom pessoal eh isso, foi meio longo, mas pode ajudar muita gente que esteja
precisando, sei o quando eh canseira comecar do zero algo e nao encontrar
muita documentacao explicando coisas fora papai-mamae. Com certeza eu devo
ter esquecido alguma coisa, mas eh so mandar um email que estamos ai.

OBS.: As minha primeiras tentivas foram no FreeBSD 4.10. Tive um problema
que nao consegui resolver.  Eu criava o raid5 numa boa, ficava que uma
beleza, mas sempre que eu dava um boot o vinum perdia a referencia do
disco3, entao eu tinha adiciona-lo novamente e mandar sincronizar os discos.
Entao eu instalei o FreeBSD 5.2.1, e agora nao perde mais a referencia,
talvez seja um bug na versao 4.10.
Quem for usar o 4.x deve colocar outras configuracoes no /boot/loader.conf.
Consulte o handbook que la fala direitinho.

Os links de referencia que eu utilizei foram:
http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/vinum-root.html#VI
NUM-ROOT-4X
http://www.vinumvm.org/vinum/Increased-resilience.html
http://www.freebsd.org/doc/en_US.ISO8859-1/articles/vinum/bootstrappingphase
s.html
http://devel.reinikainen.net/docs/how-to/Vinum/
http://reginaldo.magnus.com.br/doc.fugspbr.org/handbook/vinum-examples.html

Abracos.

Kleyson Rios.




__________________________
Kleyson Rios
Analista de Suporte
62 201-6582

Diretoria de Informática
Agência de Administração
Governo de Goiás

"Como faço uma escultura ? Simplesmente retiro do bloco de mármore tudo que
nao é necessário."

Michelangelo

-----Mensagem original-----
De: fugspbr-fugspbr.org-bounces em fugspbr.org
[mailto:fugspbr-fugspbr.org-bounces em fugspbr.org]Em nome de
marloncampos em lagoinha.org.br
Enviada em: terça-feira, 5 de outubro de 2004 18:26
Para: fugspbr em fugspbr.org
Assunto: [FUGSPBR] Duvida no VINUM!


Pessoal,
tive lendo a documentação do vinum e fiquei com algumas dúvidas.
Bom, eu tenho um servidor com três discos ULTRAIDE disponíveis e meu
objetivo é montar um RAID5 no FreeBSD via software utilizando o VINUM.
Primeira dúvida: Para montar um RAID 5 eu preciso de uma estrutura mínima
de 3 discos. Eu posso montar um RAID 5 criando apenas um plex com 3
subdiscos?
Segunda dúvida: o tipo de organização (org) seria raid5 né?
Terceira dúvida: eu tenho que montar toda essa estrutura em um arquivos
primeiro e depois usar o vinum para criar a estrutura né? Se for, alguém
aí poderia me passar um exemplo de como?


Muito obrigado!
Marlon P. Campos


_______________________________________________________________
Para enviar um novo email para a lista: fugspbr em fugspbr.org
Sair da Lista: http://lists.fugspbr.org/listinfo.cgi
Historico: http://www4.fugspbr.org/lista/html/FUG-BR/


_______________________________________________________________
Para enviar um novo email para a lista: fugspbr em fugspbr.org
Sair da Lista: http://lists.fugspbr.org/listinfo.cgi
Historico: http://www4.fugspbr.org/lista/html/FUG-BR/



Mais detalhes sobre a lista de discussão freebsd