Máquinas velhas a todo vapor

Veja como transformar aqueles micros "relíquias" numa poderosa máquina de processamento usando GNU/Linux. Nesse artigo abordaremos a instalação de um cluster baseado no OpenMosix.

[ Hits: 38.896 ]

Por: Rafael Leandro Breviglieri em 08/01/2005


O que é cluster



Cluster e um conjunto de micros ligados (em rede local) que compartilham recursos de processamento e memória, formando um supercomputador.

Com isso certas tarefas tornam se mais rápidas, suas funções são utilizadas na NASA ou mesmo em Hollywood na produção de filmes como Titanic para renderização de imagens 3D.

Estarei mostrando neste artigo o esquema de cluster com o OpenMosix.

Instalando o OpenMosix


Estou usando o Slackware 9.1 com o kernel 2.4.22, você não precisara usar exatamente esse sistema para poder utilizar o OpenMosix, estaremos recompilando novamente o kernel, pois o OpenMosix é um patch que deve ser aplicado à ele.

Para a instalação será necessário o patch de acordo com o kernel que você irá instalar.

# uname -r

Veja a versão do kernel instalado em seu sistema, entre no site www.kernel.org e baixe o código-fonte do mesmo.

Entre no site openmosix.sourceforge.net e pegue o patch referente a versão do kernel utilizada no seu sistema.

Copie os dois arquivos para alguma pasta e execute os comandos:

# tar xvfz kernel-2.4.22.tar.gz -C/usr/src
# cd /usr/src
# ln -s linux-2.4.22 linux


Aplique o patch do OpenMosix com os comandos abaixo:

# cp OpenMosix-2.4.22-2.gz /usr/src/linux
# cd /usr/src/linux
# zcat OpenMosix-2.4.22.gz | patch -Np1


Copie o arquivo de configuração do kernel "config", que está em /boot, para o diretório do código-fonte do kernel:

# cp /boot/config /usr/src/linux/.config

No diretório do código-fonte do kernel execute o comando abaixo:

# make menuconfig

Aqui começamos a recompilar o kernel, mas como compilaremos baseando-se no "config" do kernel já instalado, vá a penúltima opção "Load an Alternative Configuration File", escolha o arquivo e pressione Enter para confirmar.

Voltando ao menu do kernel, escolha a primeira opção "OpenMosix", dentro do menu marque com "*" (utilizando o espaço) as opções necessárias para o funcionamento:
  • OpenMosix process migration support;
  • Stricter security on OpenMosix ports;
  • OpenMosix File-System.

Existe uma opção que é necessário mudar o número existente para 3, para isso entre em "Level of process-identify disclosure" e modifique o valor. Salve tudo e saia para o shell.

Execute o comando para começar a compilação do kernel:

# make dep bzImage
# make modules modules_install


Agora se você quiser sair e voltar daqui algum tempo pois, esse processo demora dependendo da máquina utilizada (a minha é um Pentium 250 MMX e demorou 1 hora e meia).

Com o kernel compilado e a imagem gerada (bzImage), é necessário configurar o gerenciador de boot com a imagem gerada, infelizmente não entrarei em detalhes de como configurar isso no lilo ou no grub, apenas citarei um meio mais fácil utilizando o loadlin.exe (DOS).

# cp /usr/src/linux/arch/i386/bzImage /mnt/win/loadlin/

(coloque de acordo com seu diretório)

Copie a imagem gerada para o diretório do Windows onde está o loadlin.exe, reinicie a máquina, inicie no Windows apertando F8 para entrar no menu de boot inicial, entre na opção 5 - somente prompt do MSDOS - entre no diretório do loadlin e execute o comando abaixo:
(esse tipo de iniciação somente funciona no Windows 98)

C:\> loadlin.exe bzImage root=/dev/hda2
--> coloque a partição onde se encontra seu GNU/Linux

Pronto, o sistema foi iniciado pela imagem do kernel com suporte ao OpenMosix.

    Próxima página

Páginas do artigo
   1. O que é cluster
   2. Configurando o OpenMosix
   3. OpenMosixView
Outros artigos deste autor

Que tal criar uma mini-distro em 1 disquete?

Introdução ao universo dos filesystems

Leitura recomendada

Compilando kernel no Debian Squeeze

Ksplice - atualizando o kernel sem necessidade de reboot

Compilar kernel em distros baseadas em Debian

Slackware 13 - Compilando o kernel 2.6.32rc6

Novidades do Kernel 2.6.35

  
Comentários
[1] Comentário enviado por vodooo em 08/01/2005 - 12:42h

Bom artigo!

Agora ficou fácil ter um bom PC com aquele monte de tranquerias guardadas!!!

Abraços

[2] Comentário enviado por vodooo em 08/01/2005 - 12:44h

Estou com uma dúvida, se eu tiver, por exemplo, dois PC com processador Pentium 133 e liga-los em cluster, o sistema ficaria com uma performance parecida com a de um Pentium 266?

Abraços

[3] Comentário enviado por wronieri em 08/01/2005 - 13:45h

Legal o artigo parabéns, no caso do OpenMosix pelo que me parece ele soh utiliza as outras máquinas quando a máquina do processo startado não aguentar o processamento ai ele distribui para as outras (me corrijam se estiver errado) mas o único problema que vejo no OpenMosix é q se uma máquina por algum motivo parar a parte do processo da mesma se perde gerando erros.

[4] Comentário enviado por removido em 08/01/2005 - 15:53h

Taí uma escelente aplicação para os 486 da vida!!!
Parabéns pelo seu excelente trabalho!
Os artigos aqui no VOL estão cada vez melhores...

[5] Comentário enviado por ahamadeu em 08/01/2005 - 16:06h

Fala Rafael

Parabéns pelo seu artigo.
Vá em frente ao seu novo projeto que em breve tenho certeza estará publicado aqui na Comunidade VOL
Inté +

[6] Comentário enviado por Ti_j@der em 09/01/2005 - 18:20h

Parabens desce jeito nossa comudidade fortalece muito !!!

[7] Comentário enviado por pitanga em 09/01/2005 - 21:11h

Caro WRonieri

O CHPOX um mecanismo de checkpoint para o openmosix visa resolver este problema criando uma forma de alta disponibilidade ao nível de aplicação.

[]´s

Marcos Pitanga
Linux Clusters Specialist
HA + HPC + SLB

[8] Comentário enviado por pitanga em 09/01/2005 - 21:15h

Caro Vodoo,

A principal característica desse modelo de cluster é a utilização do método de migração de processos, em que se equilibra a carga entre as máquinas de modo que se consiga rodar mais processos do que normalmente conseguiria com uma só cpu, beneficiando assim os aplicativos que usam muitos processos independentes, caso comum a diversos aplicativos encontrados em ambientes Unix.

A Migração Preemptiva de Processos é capaz de migrar qualquer processo do usuário, em qualquer instante e para qualquer nó disponível de maneira transparente. Para atingir um melhor desempenho esse é controlado por algoritmos de balanceamento dinâmico de carga e de prevenção contra falta de memória. Esses algoritmos são projetados para responder dinamicamente as variações da utilização dos recursos nos diversos nós. Isto garante que o cluster se comporte muito bem, seja numa configuração com poucas ou com muitas máquinas, propiciando uma maior escalabilidade.

Esses algoritmos são descentralizados, ou seja, não existe a figura de controlador mestre e nós escravos como no cluster Beowulf da NASA. Cada nó é um mestre para os processos que são criados localmente, e um escravo para processos remotos migrados de outros nós do cluster. Isto significa que podemos acrescentar ou remover as máquinas do cluster a qualquer momento, com um mínimo de distúrbio no sistema. Este cluster possui também algoritmos de monitoramento que identificam a velocidade de cada nó, a carga da CPU e a memória livre disponível, como também a comunicação interprocessos IPC e a velocidade de acesso de cada processo.

Portanto, seu Pentium 133 não vira 266.

[]´s

Marcos Pitanga
Linux Clusters Specialist
HA + HPC + SLB

[9] Comentário enviado por jasenger em 09/01/2005 - 23:15h

Um bom modo de testar a migração de processos é executar a seguinte linha de comando e acompanhar com o openmosixview:
# awk 'BEGIN {for(i=0;i<10000;i++)for(j=0;j<10000;j++);}'
Abraço
Jorge

[10] Comentário enviado por wronieri em 10/01/2005 - 00:06h

Oi Pitanga
Ainda não tinha ouvido falar no CHPOX vou pesquisar sobre ele então ;-)

Até mais.

[11] Comentário enviado por pop_lamen em 12/01/2005 - 03:28h

Legal, mas faltou explicar o que exatamente esta sendo feito...
Não sakei mto bem.. o que exatamente foi feito com a maquina?
foi agregada a um cluster? em conjunto com outras maquinas?
Sei lá
A parte técnica ficou mto boa, mas a teorica ....
Mas mesmo assim parabéns cara!
É isso aIH!
T+!

[12] Comentário enviado por fernandoamador em 16/01/2005 - 05:40h

o Artigo é bom pq não é muito técnico.

[13] Comentário enviado por pitanga em 16/01/2005 - 14:18h

Acho que têm que haver uma boa dosagem de teoria e prática, visto que, implementar sem saber o que é, não é nenhuma vantagem para um profissional de TI.

[]´s

Marcos Pitanga
Linux Clusters Specialist

[14] Comentário enviado por marcioseptimio em 24/08/2008 - 11:17h

Seria interessante tratar tecnicamente e teoricamente de forma simples e objetiva dos trabalhos de paralelismo que ocorrem em clusters usando o OpenMosix.
O que sao com certeza diferentes do sistema de escalonamento distribuido que o nosso querido Beowulf utiliza. Mas estou trabalhando em um sistema, que, teoricamente deveria se aproximar um pouco do Beowulf em termos de escalonamento, mas pretendo criar todas as possibilidades para que o algoritmo se torne simples em sua integridade.
Bom, como nosso amigo Pitanga disse, realmente o OpenMosix nao vai gerar tantos Gigaflops como muitos desejam..rs Mas... Isso tudo depende de implementacao, gente, estamos no mundo open, nao fiquem presos a esquemas prontos de outros usuarios, isso aqui so e opensource se a gente correr atras, vamos implementar e melhorar o que ja tem e criar novas tecnicas, eu mesmo me comprometo a explorar ao maximo o sistema do openmosix e assim que tiver um projeto bom e bem elaborado vou postar aqui para que outros usuarios tenham ideias legais.
Estou construindo um projeto de escalonamento, vou tentar usar o openmosix primeiro para obter o maximo de performance, mas pode ser que nao consiga chegar ao esperado.
O que eu desejo? Um sistema que seja bom em escalonamento tanto para servidor de BD, como um Oracle por exemplo quanto um sistema que possa prover servicos de internet, seguranca e um excelente servidor de jogos online como LineAge2, WOW, Cabalonline, CS, etc...
Para essas variabilidades pretendo criar alternativas de configuracao, mas sei que isso demanda tempo e muito estudo e trabalho, como nao sou tao experiente assim, tenho aqui comigo uns 238947397498237489723 livros e uns 1983748237497 tutoriais para ler e analisar e muuuuuuuuuuuuitaaaaaaaaaaaa disposicao para estudar e aprender.

Bom, pretendo abrir aqui nesse lindo forum, um espaco so para postagens relacionadas aos Clusters de forma geral.
Espero as vossas postagens...

[15] Comentário enviado por pitanga em 24/08/2008 - 20:39h

1o - O Beowulf utiliza paralelismo explícito. Se você necessitar particionar um grande cluster você faz uso de ferramentas apropriadas para tal como openPBS-Pro, Slurm, Torque, etc... Você poderá acoplar ao Torque e PBS outros métodos de escalonamento de jobs como o MAUI.

2o - A filosofia do "finado" openMosix é balanceamento descentralizado de processos par-a-par.

3o - O openMosix já usa um algoritmos baseado no "market" para escolha da melhor máquina.

4o - O melhor método de implementação de sistemas de banco de dados do Oracle já está embutido na solução do RAC - Real Application Cluster e migrado para o produto 11G (Grid)

5o - Seria interessante você focar seu projeto no escalonamento de grids computacionais onde identificar um recurso disponível e agendá-lo, utilizá-lo e liberá-lo ainda é umas das tarefas das mais complicadas neste ambiente.

6o - Balanceamento de serviços de Internet já são executados via produtos como Radware Linkproof, Alteon, F5 - BigIP, LinuxVirtualServer, etc...

7o - Existem muitos poucos livros no mundo sobre clusters, tenho praticamente todos eles e não chega a quantidade citada por você ;-)

[]´s

Marcos Pitanga
Linux Clusters Specialist

[16] Comentário enviado por Raz em 03/11/2014 - 12:32h

Extremamente completo e funcional,aprovado em minhas maquinas de teste..


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts