CEZAR TAURION p.32 O impacto dos padrões abertos nas empresas
Outubro 2006
R$ 13,90 € 7,50
9 771806 942009
00024
Acerte de primeira:
LINUX 5 ESTRELAS p.30 Turismo com SL na Rede Plaza de Hotéis
#24 10/06
Linux Magazine
Disponibilize as suas aplicações para um ambiente de processamento escalável
10/2006
Transforme o Poder MultiCore de um Cluster em Aplicações Paralelas de Altíssimo Desempenho
2º LINUXPARK’06 p.24 O ROI do Linux e do Software Livre
XANDROS SERVER
Dr. Takahiro Koichi Laboratório de Astrofísica Computacional RIKEN, Japão
Itautec 0800 121444 www.itautec.com.br/intel
Strattus (11) 3531-6550 www.strattus.com.br/intel
BACKUP
Katalogo 0800 7729897 www.katalogo.com.br/intel
Tech Digital (11) 5181-1852 www.techdigital.com.br/intel
CLUSTER
© 2006 Intel Corporation, Intel, e Intel logo, Pentium, Itanium, Intel Xeon e VTune são marcas ou marcas registradas da Intel Corporation ou de suas subsidiárias nos Estados Unidos e em outros países. *Outros nomes e marcas pode ser reclamados como propriedades de outras empresas e instituições.
LINUXPARK’06
MStech (11) 5080-3838 www.mstech.com.br/intel
VIRTUALIZAÇÃO
p.34
SAIBA POR QUE A VIRTUALIZAÇÃO DE SERVIDORES ESTÁ REVOLUCIONANDO A ÁREA DE TI E COMO IMPLANTAR ESSA TECNOLOGIA NA SUA EMPRESA
» Sun e IBM mostram soluções profissionais p.52 » Kernel compartilhado com o Vserver p.44 » A facilidade do VMWare p.50 » Xen 3 explicado p.38
ZABBIX
“As Ferramentas de Cluster e MPI da Intel’s nos oferecem o melhor ambiente de desenvolvimento em Cluster. Usando Intel® Trace Analyser and Collector, nos fomos capazes de diminuir o tempo de comunicação do MPI pela metade, localizando e removendo gargalos de padrões de comunicação ‘blocking’ e ‘non-blocking’”.
NETFILTER
• Intel® MPI Benchmarks Benchmark padrão medido com MPI (antigo PMB).
VMWARE
• Intel® Trace Analyzer and Collector Analisa gargalos de desempenho e interpreta comportamentos detalhados de aplicações distribuídas para maximizar a escalabilidade e o desempenho computacional.
VSERVER
• Intel® Math Kernel Library Cluster Edition Faça uso das funções matemáticas altamente otimizadas e thread-safe existentes na Intel® Math Kernel Library, além do ScaLAPACK otimizado e de funções FFT (Fast Fourier Transforms) em memória-distribuida.
XEN
• Intel® MPI Library Desenvolva, teste e distribua aplicações no padrão MPI-2 para praticamente todo tipo de configuração de cluster e arquitetura de rede, com somente uma biblioteca MPI de alto desempenho.
A REVISTA DO PROFISSIONAL DE TI
VIRTUALIZAÇÃO
Intel® Cluster Toolkit para Linux* oferece um pacote único com todas as ferramentas de Cluster da Intel®, assegurando o mais alto desempenho em pequenos e grandes Clusters baseados nos processadores Intel, para eficientemente desenvolver, otimizar, executar e distribuir aplicações paralelas:
# 24
Compiladores Intel® C++ e Fortran para Linux* são compiladores altamente otimizados para lidar com aplicações em ambiente de Cluster de alta demanda de processamento. Os compiladores oferecem suporte para aplicações desenvolvidas baseadas em threads utilizando bibliotecas OpenMP*, e capacidade de auto-paralelismo de código para extrair o máximo de desempenho dos Processadores Multi-Core da Intel®.
# 24
Intel® Threading Building Blocks Insere códigos escalaveis baseados em threads através de algoritmos em C++.
ZABBIX p.66 Monitoramento inteligente
CLUSTER VMWARE p.63 Vários hóspedes em um cluster
VEJA TAMBÉM NESTA EDIÇÃO: » Xandros Server Standard Edition p.56 » Desenvolva um diário com Python p.72 » Recuperação de servidores com tar p.68 » Crie módulos personalizados de Netfilter p.58 WWW.LINUXMAGAZINE.COM.BR
EDIÇÃO © Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).
DE ANIVERSÁRIO: 2 ANOS!
© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).
Expediente editorial
Direitos Autorais e Marcas Registradas © 2004 - 2006: Linux New Media do Brasil Editora Ltda. Distribuição: Distmag Impressão e Acabamento: Parma ISSN 1806-9428 Impresso no Brasil
INSTITUTO VERIFICADOR DE CIRCULAÇÃO
em processo de filiação
Plataforma de desenvolvimento
EDITORIAL
Diretor Editorial Rafael Peregrino da Silva peregrino@linuxmagazine.com.br Coordenador Editorial e Diretor de Arte Luciano Hagge Dias lhagge@linuxmagazine.com.br Editores Tadeu Carmona tcarmona@linuxmagazine.com.br Pablo Hess phess@linuxmagazine.com.br Tradução e Revisão Livea Marchiori lmarchiori@linuxnewmedia.com.br Design da Capa Luciano Hagge Dias lhagge@linuxmagazine.com.br Centros de Competência Centro de Competência em Software: Oliver Frommel ofrommel@linux-magazine.com Centro de Competência em Hardware: Mirko Dölle mdoelle@linux-magazine.com Centro de Competência em Redes e Segurança: Achim Leitner aleitner@linux-magazine.com Correspondentes & Colaboradores Augusto Campos, Bruno Gola, Cezar Taurion, Charly Kühnast, Jens-Christoph Brendel, Jürgen Backers, José Maria Ruiz, Klaus Knopper, Kurt Garloff, Marcelo Honório, Mark Vogelsberg, Markus Klimke, Pedro Orantes, Torsten Kockler, Wilhelm Meier e Zack Brown. Diretor Comercial Claudio Bazzoli cbazzoli@linuxmagazine.com.br Anúncios: Claudio Bazzoli (Brasil) anuncios@linuxmagazine.com.br Tel.: +55 (0)11 2161 5400 Fax: +55 (0)11 2161 5410 Osmund Schmidt (Alemanha, Áustria e Suíça) anzeigen@linux-magazine.com Brian Osborn (Outros países) ads@linux-magazine.com Assinaturas: www.linuxnewmedia.com.br assinaturas@linuxmagazine.com.br Na Internet: www.linuxmagazine.com.br – Brasil www.linux-magazin.de – Alemanha www.linux-magazine.com – Portal Mundial www.linuxmagazine.com.au – Austrália www.linux-magazine.ca – Canadá www.linux-magazine.es – Espanha www.linux-magazine.pl – Polônia www.linux-magazine.co.uk – Reino Unido www.linux-magazin.ro – Romênia Apesar de todos os cuidados possíveis terem sido tomados durante a produção desta revista, a editora não é responsável por eventuais imprecisões nela contidas ou por conseqüências que advenham de seu uso. A utilização de qualquer material da revista ocorre por conta e risco do leitor. Nenhum material pode ser reproduzido em qualquer meio, em parte ou no todo, sem permissão expressa da editora. Assume-se que qualquer correspondência recebida, tal como cartas, emails, faxes, fotografias, artigos e desenhos, são fornecidos para publicação ou licenciamento a terceiros de forma mundial não exclusiva pela Linux New Media do Brasil, a menos que explicitamente indicado. Linux é uma marca registrada de Linus Torvalds. Linux Magazine é publicada mensalmente por: Linux New Media do Brasil Editora Ltda. Rua Arizona, 1349 Conj. 5B – Cidade Monções 04567-003 – São Paulo – SP – Brasil Tel.: +55 (0)11 2161 5400 Fax: +55 (0)11 2161 5410
Prezado leitor, prezada leitora da Linux Magazine, uma batalha silenciosa está sendo travada entre sistemas operacionais de código aberto e, basicamente, a Microsoft, em uma área que, à primeira vista, pode não parecer tão importante para que o Linux se estabeleça como opção no PC de mesa do usuário comum: a plataforma de desenvolvimento! Especialmente no Brasil, onde sistemas de automação comercial são cada vez mais necessários (por conta de uma legislação tributária extremamente complexa), a existência desse tipo de aplicação está inevitavelmente atrelada à disponibilidade de uma plataforma de desenvolvimento robusta e de baixo custo. Para que essa plataforma seja bem sucedida, além do sistema operacional, há também a necessidade de um conjunto de ferramentas de desenvolvimento que considere as preferências e a disponibilidade dos programadores de cada região. Aqui no Brasil, isso (ainda) se restringe ao trinômio Delphi, Visual Basic (VB) e Java – e no que tange à linguagem web, a PHP e a ASP. Linguagens como Python, cujo uso se encontra em franca expansão, ainda são minoria nesse mercado. Mas, afinal, o que isso tem a ver com o sucesso do Linux no desktop? Muito: uma vez definido o ambiente operacional para desenvolvimento, define-se por tabela o ambiente em que as aplicações vão rodar. Se a programação dos sistemas é feita no Linux, fica muito mais fácil colocar um desktop livre na mesa do operador. Com isso, dissemina-se o uso de sistemas de código aberto em geral do lado do usuário, que estará, deste modo, em posição de perceber que o sistema é estável e praticamente imune a vírus e outras moléstias digitais que assolam o mundo Windows®. Do lado da empresa que adquire esses sistemas, há um ganho expressivo de produtividade e uma vantagem de proporções “astronômicas” em termos de TCO, uma vez que não há necessidade de adquirir licenças para essas máquinas e os usuários ficam limitados apenas a operar os aplicativos nelas instalados. Dois projetos proprietários multiplataforma, o KBasic (que declara compatibilidade total com o Visual Basic 6) e o REALBasic, e o projeto livre Gambas, resolvem a vida de qualquer programador VB no mundo Linux. O projeto livre multiplataforma Lazarus faz o contraponto para o Delphi, e para Java há diversas opções em Linux, como o NetBeans e o Eclipse. E até quem quiser programar em .NET no Linux encontra no framework Mono e no projeto MonoDevelop um ambiente de desenvolvimento completo para a atual plataforma de desenvolvimento da Microsoft. Assim, não é por acaso que o Linux já é o ambiente de desenvolvimento preferido na Ásia. Também não é à toa que o IDC publicou recentemente, em um estudo realizado em escala mundial com mais de 5.000 desenvolvedores em 116 países, que 71% dos programadores e 54% das empresas estão usando Software Livre em ambientes de produção – e metade desses desenvolvedores afirmaram que esse uso está crescendo. Ainda segundo o IDC, o Software Livre “representa a tendência de longo prazo e abrangência mais significativas que a indústria do software presenciou desde o início da década de 80”. Precisa dizer mais?
Rafael Peregrino da Silva Diretor Editorial
3
Linux Magazine #24 | Outubro de 2006
© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).
ÍNDICE
CAPA Vários em um
34
A virtualização pode economizar tempo, dinheiro e trabalho, mas é necessário usar a ferramenta certa para a tarefa. Virtual, Veloz e leve
38
O sistema de virtualização Xen está rapidamente se tornando uma tecnologia padrão no Linux corporativo. Vamos conferir os recursos da última versão do Xen. Baixo custo
44
O projeto VServer oferece uma alternativa de virtualização segura e altamente eficiente. Fácil e eficiente
50
Balanceamento de carga melhorado, administração central e consolidação – você só tem a ganhar com a virtualização. A Linux Magazine visitou um datacenter municipal para obter uma visão prática sobre a virtualização no local de trabalho.
4
http://www.linuxmagazine.com.br
© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).
Linux Magazine 23 | ÍNDICE
TUTORIAL
COLUNAS Augusto Campos Charly Kühnast Klaus Knopper Zack Brown
09 10 12 14
Netfilter :: Aula de canto 58 Se você tem necessidades especiais na sua rede, pode se beneficiar muito da construção de módulos personalizados do Netfilter. Criamos um módulo que canta conforme o tráfego de rede.
NOTÍCIAS Segurança ➧ Kernel Linux
16
➧ Bind ➧ X.org ➧ ImageMagick ➧ OpenSSL ➧ Sudo ➧ PHP Geral ➧ Nova versão do Python
18
VMWare :: Alta rotatividade 63 O que acontece se duas máquinas virtuais num hospedeiro VMWare utilizarem recursos demais? Numa máquina limitada, ambos os hóspedes sofrerão uma lentidão. Mas, se tivermos um cluster de hospedeiros, essa situação pode ser praticamente eliminada.
➧ Linux em novo handheld ➧ Para-virtualização transparente
SYSADMIN
➧ ATI e o Linux
Zabbix :: Ampla competência 66 O monitoramento de redes é uma tarefa repetitiva e freqüentemente monótona. O Zabbix facilita imensamente essa tarefa, permitindo o diagnóstico rápido dos problemas da rede e a geração de gráficos.
➧ Intel lança kit de compatibilidade de BIOS ➧ Nova versão do Asterisk ➧ Click N’ Run agora grátis
CORPORATE Notícias ➧ IBM inaugura laboratório de alta performance no Brasil
22
➧ Servidor de terminais NX de código aberto ➧ Dois PCs Linux = 12 estações ➧ Mais um servidor de groupware de código aberto ➧ Red Hat enfim integra JBoss Backup :: Salva-vidas
➧ Linux nas Lojas Marisa ➧ Mandriva Corporate Server 4
68
Use um tarball para restaurar o seu sistema rapidamente – e sem uma reinstalação completa.
PROGRAMAÇÃO Python :: Diário de bordo Você se lembra de quando mudou a versão do Firefox pela última vez? E por que instalou aquele outro programa que às vezes parece não servir para nada? Minha memória não é muito boa, por isso uso um diário. Artigo: 2º Seminário LinuxPark 2006 Entrevista: Rede Plaza de Hotéis Coluna: Cezar Taurion
72
24 30 32
ANÁLISE IBM x Sun :: A seu serviço Os principais personagens do cenário de servidores Unix incluem suporte à virtualização em seus sistemas operacionais. Nós comparamos dois candidatos da IBM e da Sun.
52
Xandros Server :: 100% alinhado ao business Apesar do avanço crescente dos sistemas livres, o mercado corporativo ainda se ressente da aparente falta de perspectivas do software de código aberto no que diz respeito a ferramentas e soluções de alta produtividade.
56
SERVIÇOS Editorial Emails Linux.local Eventos Índice de anunciantes Preview
03 06 78 80 80 82
5
Linux Magazine #24 | Outubro de 2006
© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).
Emails para o editor
✎ CDs e DVDs
Legal essa mudança na revista, mas não concordo com o cancelamento do envio do CD-ROM. Pelo menos alguma mídia deveria ser enviada. Minha assinatura se encerra no final do ano e não vejo vantagem em ficar estes 3 meses sem receber essas mídias. Se existe a necessidade de alterar o tipo de mídia em anexo, deveria ser de uma edição para a outra. Leandro Nakazone Sano Desde já gostaria de parabenizar novamente a revista pelo seu conteúdo excelente. Sou usuário da revista desde sua 1ª edição e compro todas, todo mês. Ao ler a revista deste mês de Agosto, Nº22, me deparei, na parte de cartas, com um leitor que se diz indignado porque a revista não é mais lançada com CD. Eu acredito que ele está errado, pois foi a melhor jogada que uma revista sobre informática pode fazer, porque nem sempre aquela distribuição que vem na revista vai servir para algum propósito e eu sou prova fiel disso. Quero agradecer a vocês pela iniciativa e dizer que a revista ficou muito mais barata e acessível a mais pessoas. Agora, gostaria de pedir que vocês lançassem uma próxima edição falando sobre segurança e abordassem o nUbuntu (distribuição Ubuntu de seguranca), falando também do VServer que uso aqui na empresa e é uma maravilha como emulador. Pensem nisso. De toda sorte, aproveito para dizer que só paro de comprar a Linux Magazine ou se ela fechar as portas ou então se eu morrer. Marcelo Nazaré da Silva Salvador, BA Caros Leandro e Marcelo, como vocês podem ver, não há consenso em relação à distribuição das mídias na Linux Magazine. Porém, verificamos, com uma pesquisa, que a maioria de nossos leitores não fazia uso real do conteúdo das mídias, e por isso consideramos mais adequado parar de distribuí-las mensalmente, passando então a distribuir DVDs semestrais. Por serem DVDs, é mais provável que sejam vantajosos para nossos leitores, já que o conteúdo é mais extenso. Com essa
u c.h ww . sx –w ro ne g je nja
Se você tem dúvidas sobre o mundo Linux, críticas ou sugestões que possam ajudar a melhorar a nossa revista, escreva para o seguinte endereço: cartas@linuxmagazine.com.br. Devido ao volume de correspondência, é impossível responder a todas as dúvidas sobre aplicativos, configurações e problemas de hardware que chegam à Redação, mas garantimos que elas são lidas e analisadas. As mais interessantes são publicadas nesta seção.
sa
EMAILS
Permissão de Escrita
modificação, conseguimos reduzir o preço da revista não só para os assinantes, mas também para os leitores que compram nas bancas. Em relação às sugestões de assuntos, Marcelo, esperamos que você aprecie esta edição número 24, que aborda não só o VServer, como também outras ferramentas de virtualização disponíveis para Linux, como o Xen e o VMWare. Quanto ao nUbuntu, lamentamos informar que ele foi descontinuado por seu autor após um pedido da Canonical Ltd., patrocinadora do desenvolvimento do Ubuntu. No pedido, a empresa informou que a distribuição trazia má reputação ao Ubuntu. Porém, fica a dica de voltarmos nossa atenção a distribuições especificamente voltadas à segurança. ■
✎ Linux.local
Sou estudante de Ciência da Computação, e estou no 8º período. Estou estudando Linux, por conta própria, e faço algumas coisas a respeito no trabalho. Moro em Vitória, ES, e gostaria de saber se tem empresas que trabalhem apenas com o S.O. Linux. Me identifico muito com o Linux, e quero me especializar nesse S.O. Leonardo Briosqui Altoé Vitória, ES Caro Leonardo, no final da Linux Magazine, na seção Serviços, você encontra o Linux.local, um diretório de empresas que oferecem produtos, soluções ou serviços em Linux e software livre. Em seu Estado, há três empresas listadas, sendo que duas são em sua cidade. Aproveitamos para pedir que os leitores que conhecerem outras empresas, também especializadas em Software Livre, lhes mostrem a importância de estar listado em um recurso como o Linux.local. Assim como você, muitas outras pessoas e empresas têm interesse ou necessidade de produtos e serviços em Software Livre. Nós organizamos o diretório justamente com o objetivo de facilitar o encontro entre clientes e fornecedores. ■
6
http://www.linuxmagazine.com.br
© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).
SEJA LIBRIX NA RUA, SEJA LIBRIX EM CASA, SEJA LIBRIX NO TRABALHO.
A solução completa.
Agora, além do Librix (Linux da Itautec), a sua empresa pode contar com o melhor e mais estável pacote de hardware e software do mercado, testado e homologado pela Itautec.
É mais segurança, porque a Itautec oferece suporte técnico especializado via internet ou pelo telefone, serviços de tuning e configuração e ainda atendimento nacional on site.
Toda a liberdade que você precisa para trabalhar com mais mobilidade, usando a internet sem fio, e ainda operar com software livre.
Tem alta tecnologia para os aplicativos como editor de textos, planilha eletrônica, editor de imagens e apresentações. É mais facilidade e maior flexibilidade no seu dia-a-dia. Na hora de trabalhar, não se sinta preso. Seja Librix.
DPZ
Foto ilustrativa.
• Monitor LCD de 15” incluso • 512 MB de memória • Combo (DVD + gravador de CD)
Itautec Minitorre Código da oferta: IN527LX
IDEAL PARA ACESSO À INTERNET.
• Processador Intel® Celeron® D 315 (256 KB de cache L2, 2.26 GHz, FSB 533 MHz) • LIBRIX - Distribuição Linux Itautec • Monitor LCD de 15” • 512 MB de memória • HD 40 GB • Floppy • Combo (DVD + CD-RW) • Placa de vídeo integrada • Placa de rede integrada • Fax/Modem 56 Kbps • Teclado • Mouse • 1 ano de garantia balcão*
10x R$
149,90
ou R$ 1.499,00 à vista
www.itautecshop.com.br CO M P R E D I R E TA M E N T E D O FA B R I C A N T E
PRESENTE EM MAIS DE 2.700 CIDADES.
0800 121 444
De 2ª a 6ª, das 8h às 20h. Sábado, das 9h às 18h. Domingo, das 9h às 15h.
Oferta válida até 9/10/2006 ou enquanto durar o estoque.Celeron,Celeron Inside,Centrino,o logotipo Centrino,Core Inside,Intel,o logotipo Intel,Intel Core,Intel Inside,o logotipo Intel Inside,Intel SpeedStep,IntelViiv,Itanium,Itanium Inside,Pentium,Pentium Inside, Xeon e Xeon Inside são marcas registradas ou marcas da Intel Corporation ou de suas subsidiárias nos Estados Unidos e em outros países.Microsoft e Windows são marcas registradas da Microsoft Corporation.Consulte nossa Central de Atendimento para informações sobre outras condições de financiamento para pessoa física ou jurídica pelo telefone 0800-121-444. A velocidade de comunicação de 56 Kbps depende e pode variar de acordo com o tipo e a qualidade da linha telefônica utilizada. *Garantia balcão de um ano para partes,peças e serviços.Para possibilitar o acesso à internet são necessários uma linha telefônica ou banda larga e um provedor à sua escolha.Preço com impostos inclusos para São Paulo.Frete não incluso.Demais características técnicas e de comercialização estão disponíveis em nosso site e no Televendas.Fica ressalvada eventual retificação da oferta aqui veiculada.Quantidade:10 unidades.Empresa/produto beneficiado pela Lei de Informática.Foto meramente ilustrativa.
© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).
sem juros
EMAILS | cartas@linuxmagazine.com.br
✎ Python espacial
Olá! Eu tive acesso à revista de vocês na minha faculdade (UNIFACS). Em um dos artigos da edição 22, falava-se sobre o Python e uma criação nele de um programa para ser um “centro de controle espacial”. Mas, logo no primeiro comando que é indicado na revista, o Python não aceita. Como devo proceder? Adriano Olá, Adriano. De fato, na matéria a que você se refere faltaram informações. Antes de digitar o primeiro comando, por exemplo, era necessário carregar o módulo httplib, com o comando import httplib. É importante lembrar também que todos os outros exemplos de código ao longo da matéria digitados diretamente no interpretador Python devem ser executados na mesma sessão do interpretador. Caso contrário, será necessário executar, a cada nova sessão os comandos import dos exemplos anteriores. Os autores cometeram um equívoco ao esperar que todos os leitores já soubessem que essas ações deveriam ser tomadas. ■
✎ Segurança de redes
Gostei bastante da parte da revista em que vocês publicam a opinião do leitor. Como não poderia deixar de me manifestar, gostaria que vocês publicassem algo sobre TCPDUMP, como foi feito sobre o NMAP em uma edição anterior, realmente muito últil para o administrador de redes Linux. Cristofe Rocha, Boa Vista, RR Caro Cristofe, sua sugestão está anotada. Ainda faremos muitas revistas com o tema de administração de redes, pois sabemos que o assunto é importantíssimo. ■
✎ Dica de XGL
Acabei de seguir passo a passo o que o site abaixo recomenda para a instalação do Xgl no KDE: http://www.novell.com/coolsolutions/feature/17174.html
O resultado é simplesmente fantástico. Já estava satisfeito com o Suse 10.1 (usando o Smart ele fica bem melhor) e estou na fase final da migração definitiva do Windows® para o Linux. Usando o Xgl, os fontes ficaram mais legíveis, os efeitos são muito legais e o “cubo” é um show à parte. As transparências ajudam bastante também. Recomendo a todos que usam o Open Suse 10.1 que experimentem usar o Xgl, pois o resultado é excelente. Tassini Caro Tassini, muito obrigado por sua explicação. Ela sintetiza boa parte do espírito de colaboração que impele o Software Livre às mesas de cada vez mais usuários. Recursos como a aceleração gráfica 3D em desktops são uma tecnologia importantíssima para que o Linux e o Software Livre se destaquem como abordagens inovadoras também no desktop, visto que, em servidores, essa imagem já se encontra bastante consolidada. ■
✎ Emails dos autores
Olá, gostaria de dar a sugestão de que sempre que alguém publicasse um artigo na Linux Magazine fosse exibido o email da pessoa para se tirar possíveis dúvidas. Renato Olá, Renato. Nós sempre tentamos divulgar o email dos autores de artigos. Porém, alguns deles preferem não divulgar essa informação, provavelmente como forma de evitar o spam, ou porque imaginam que seja fácil encontrá-los em seus websites, blogs ou listas de discussão das quais participem, ou então simplesmente por não acreditarem que receberiam algum retorno dos leitores. Mensagens como a sua, Renato, ajudam-nos na tarefa de convencer os autores a divulgarem seus emails, o que facilita o intercâmbio de idéias e, em última análise, aumenta o nível de conhecimento de toda a comunidade. Enquanto isso, outros artigos foram originalmente escritos em outras línguas e publicados sem o endereço de email. Nesse caso, os leitores podem nos mandar seus questionamentos referentes aos artigos, que a Linux Magazine se encarregará de retransmiti-los aos respectivos autores. ■
Errata Na edição 22, de agosto de 2006, faltou a indicação do link para o download da distribuição BackTrack, voltada à segurança de redes. A página da distribuição fica no endereço http://www. remote-exploit.org/. Lá, é só seguir o link Downloads. Ainda na edição 22, a figura 3 da matéria Arma secreta, na página 31, indica o comando ls la, quando o correto é ls -la.
8
http://www.linuxmagazine.com.br
© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).
Sistemas legados e Software Livre
COLUNA
Augusto Campos Saudades do EMM386 e do HIMEM.SYS? É possível rodar sistemas legados feitos para DOS sem recorrer a software proprietário.
É
impressionante quantos programas desenvol- dar um passo a mais e investigar a possibilidade de rodá-lo vidos originalmente para ambientes MS-DOS nativamente no ambiente Linux, usando ferramentas como ainda podem ser encontrados rodando hoje, em o Harbour [3], o xHarbour [4] ou o Flagship [5], sendo que organizações de todos os portes e perfis. A sensação de apenas os dois primeiros são softwares livres. Um conhecido incongruência não é causada apenas pela abundância meu ganhou um bom dinheiro, há alguns anos, prestando de recursos hoje disponíveis nos sistemas operacionais e exatamente esse serviço para diversas empresas da sua região ambientes correntes, mas principalmente porque já faz 12 – os sistemas funcionam bem, e passam a ter acesso a alguns anos que a Microsoft lançou a última versão stand-alone recursos mais modernos, com pouca ou nenhuma alteração desse sistema operacional que já dominou a computação na sua base de código. pessoal e foi a base da “revolução Clipper” que dominou a automação comercial brasileira no final da década de 80 e começo da de 90. Ao longo do meu envolvimento com o Linux e o código aberto, já encontrei diversas situações em que uma organização desejava migrar de plataforma, mas tinha como entraves alguns sistemas legados, que rodavam em ambiente DOS, e cujo código-fonte há muito foi extraviado ou foi desenvolvido em uma linguagem que ninguém mais domina – tornando indesejável ou muito caro portá-lo, e excessivamente complexo desenvolvê-lo de novo. A demanda é tão comum que já gerou diversas soluções alternativas. Uma das mais populares é o DOSEMU [1], um emulador que permite rodar sobre o Linux não apenas o MS-DOS original (e também versões alternativas como o Claro que o ideal é migrar para tecnologias atualizadas, FreeDOS ou o DR-DOS), como ainda os mais variados programas desenvolvidos para essa arquitetura, incluindo os que mas de fato existem situações em que isso não é uma opção recorrem ao modo gráfico e aos modos de proteção de memó- imediatamente disponível, e dizem que alguns aplicativos ria daqueles tempos heróicos. A lista de programas suportados em COBOL e em Clipper contam com a proteção de um encantamento que os torna praticamente imortais. Se você inclui até mesmo o jogo Doom e o Windows® 3.1. O DOSEMU provê apenas o ambiente, mas para rodar tropeçar neles, agora já sabe como se defender ;-). ■ o seu aplicativo legado você precisará ainda do sistema operacional. Talvez você ainda encontre em uma gaveta empoeirada do CPD um conjunto de disquetes originais do DOS Mais informações 6.22 para instalar sobre o DOSEMU, mas graças à velocidade [1] DOSEMU: http://www.dosemu.org da comunidade livre, nem mesmo isso será necessário: você pode recorrer ao FreeDOS [2], que recentemente lançou sua [2] FreeDOS: http://www.freedos.org versão 1.0, após 12 anos de desenvolvimento comunitário. O [3] Harbour: http://www.harbour-project.org FreeDOS é um software de código aberto que reimplementa o MS-DOS, e funciona muito bem em conjunto com o [4] xHarbour: http://www.xharbour.org/ DOSEMU sobre Linux. Algumas distribuições incluem até [5] Flagship: http://www.fship.com/ mesmo pacotes pré-compilados dessa dupla, de forma que a instalação de um ambiente livre para a execução de aplicativos DOS fica ainda mais fácil. Uma curiosidade interessante é que, O autor embora rode muito bem nos PCs atuais, o FreeDOS é capaz de suportar também os PCs originais, feitos em 1981. Augusto César Campos é administraOs componentes acima podem ser suficientes para garandor de TI e, desde 1996, mantém o site tir uma migração completa, se o obstáculo era a impossibiliBR-linux.org, que cobre a cena do Software Livre no Brasil e no mundo. dade de portar um aplicativo legado pré-histórico. Mas se o aplicativo em questão tiver sido feito em Clipper, você pode
Um conhecido meu ganhou um bom dinheiro prestando exatamente este serviço para diversas empresas da sua região.
9
Linux Magazine #24 | Outubro de 2006
© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).
Proxy HTTP contra vírus
COLUNA
Charly Kühnast R
ecentemente, um colega que estava planejando uma viagem tentou navegar num site mantido por uma grande cidade da Alemanha. Talvez tenha sido mera coincidência, mas ele acabou digitando errado o endereço da URL. A página onde ele foi parar imediatamente tentou atacar uma vulnerabilidade em seu navegador. Uma solução possível – além de atualizações regulares, mas com certeza você já ouviu muito isso – seria um proxy antivírus como o HAVP [1].
Proxy antivírus
A instalação do proxy HTTP antivírus é um simples configure && make && make install. É necessário especificar seu antivírus preferido, que precisa já estar instalado, na etapa configure.
A página onde ele foi parar imediatamente tentou atacar uma vulnerabilidade em seu navegador. Eu escolhi o ClamAV, o que me oferece uma linha de comando semelhante a configure --with-scanner=libclamav. Recomenda-se criar também um usuário e um grupo para o HAVP: useradd havp; groupadd havp
Sob o diretório do HAVP, existe um diretório etc; e sob este, os subdiretórios havp e init.d. O segundo contém um script para iniciar e parar, que eu movi para /etc/init.d. Depois, eu digitei cp -r havp /etc/ para copiar o diretório havp para o local certo. Entre outras coisas, esse diretório contém o arquivo de configuração central, havp.conf. O próximo passo foi apagar a seguinte linha: REMOVETHISLINE deleteme
Figura 1 Se o seu navegador esbarrar num site perigoso, o HAVP vai entrar na linha de fogo bravamente e impedir a disseminação da praga.
O autor do programa colocou essa armadilha para se certificar de que os usuários realmente parem para examinar cuidadosamente o arquivo de configuração.
Terapia de grupo
O passo seguinte foi configurar o HAVP para rodar sob a conta do usuário havp, e para que ele integrasse o grupo havp. As configurações para diversos antivírus localizam-se mais adiante no arquivo de configuração. Eu escolhi usar a libclamav, e mantive suas configurações padrão, que posso alterar depois. Obviamente, o HAVP tem um recurso de gerar um log, e por isso eu criei um diretório /var/log/havp e conferi a ele permissão de escrita para o usuário havp: mkdir /var/log/havp chown havp /var/log/havp
Agora eu só preciso de um diretório onde o HAVP armazenará seus arquivos temporários para verificação de vírus. Montarei uma partição vazia nesse diretório, pois o HAVP precisa de um sistema de arquivos com suporte a travas mandatórias, e não qualquer diretório velho. Infelizmente, não tenho uma partição extra, então terei que resolver com um disco RAM por enquanto. Essa configuração serve para fins de teste, mas não é uma boa idéia em sistemas em produção, pois um disco RAM não oferece espaço suficiente a longo prazo. Prosseguindo: mkdir /var/tmp/havp chown havp /var/tmp/havp mkfs.ext3 /dev/ram0 mount /dev/ram0 /var/tmp/havp -o mand
Isso deve iniciar o HAVP, mas parece que estou sem sorte. Ao iniciar, ele me informa que eu não editei o arquivo havp.conf, o que obviamente não é verdade. A resposta a esse dilema é ocultar o script de inicialização, que ainda possui /usr/local/etc como caminho do arquivo de configuração. Depois de solucionar isso, o HAVP sobe limpíssimo. Por padrão, ele escutará na porta 8080. Depois de configurar o Firefox para usar o proxy, podemos fazer o teste. Quando tentei baixar o vírus de teste EICAR, o HAVP me mostrou a página de impedimento da figura 1. Muito bem, HAVP! ■
Mais Informações [1] HAVP: http://www.server-side.de
O autor Charly Kühnast é administrador de sistemas Unix no datacenter Moers, perto do famoso rio Reno, na Alemanha. Lá ele cuida, principalmente, dos firewalls.
10
http://www.linuxmagazine.com.br
© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).
© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).
Pergunte ao Klaus!
COLUNA
Klaus Knopper Esta coluna é baseada na seção “Ask Klaus!”, publicada na Linux Magazine International.
Kernel panic
irqpoll [HW] When an interrupt is not handled, search all handlers for ➥ it. Also check all handlers of each timer interrupt. ➥ Intended to get systems with badly broken firmware running.
Montei um novo sistema dual core AMD e tentei instalar nele o SUSE Linux 9.3. Eu até consegui instalar o sistema lado a lado com um Windows®, mas o Linux não iniciou. A inicialização do SUSE sempre acaba em kernel panic. O console trava, e a última informação legível é “killing interrupt handler!” Tenho um sistema SUSE Linux 10.0. Sofri uma falha, mas Então, lendo seu artigo sobre o assunto há algum tempo, consegui reinstalar sem perder muitos dados. Agora o sistema pensei em experimentar todas as opções de inicialização se recusa a se conectar à Internet. Talvez o problema seja que mencionadas. Nem mesmo a que funcionou melhor para meu roteador e meu modem DSL foram atingidos por um raio. você (acpi=off noapic pci=bios pbpbios=off) fez diferença; o Substituí ambos os dispositivos, mas não foram detectados. Reinstalei novamente o sistema, mas ainda não consegui uma conexão. Quando li sua ótima coluna, imaginei que seria interessante um artigo abordar a solução de problemas de conexão. Resposta Sem uma mensagem de erro precisa, não é fácil adivinhar. Veja os arquivos /var/log/syslog, /var/log/messages, /var/log/ auth.log e /var/log/daemon.log. Se um deles não existir, não se preocupe; as diferentes distribuições lhes dão nomes distintos. Se houver um problema na autenticação ou com a sua configuração, você perceberá mensagens de erro nesses arquivos resultado ainda é um kernel panic. Já tentei reinstalar todo o que dirão o que está acontecendo. Além disso, em caso de um sistema, mas o problema persiste. problema de hardware (por exemplo, um modem defeituoso Parece que o problema tem a ver com a configuração de ou a falta de sinal), tente o comando dmesg. IRQ de todos os dispositivos da máquina. Você teria mais Não sei qual é o seu tipo de conexão DSL, mas principaldicas para mim? Vou tentar iniciar com um CD do Kno- mente em casos de danos por relâmpago, o soquete do cabo ppix e ver se tudo corre bem. (fora da sua casa) pode estar danificado ou travado. Nesse caso, Resposta alguém da sua operadora DSL terá que consertar o problema O Knoppix provavelmente também não vai iniciar se o para você conseguir conectar-se novamente. kernel e o hardware forem os mesmos. O problema também pode estar sendo causado pelo fato Parece que o problema está numa configuração errada de você ter reinstalado os drivers sem estar com o dispositivo das IRQs na BIOS, ou em algum componente do hardware conectado. Uma reinstalação com uma nova detecção de parcialmente suportado que cria interrupções, mas sem uma hardware poderia ajudar a consertar isso. função de callback para a interrupção que aproveitaria os Na melhor das hipóteses, talvez você tenha se esquecido dados ou operaria o dispositivo. Às vezes, isso acontece com de adicionar o servidor DNS do seu provedor de Internet, e controladores SATA muito novos ou placas de rede onboard também não utilizou a opção autodns. Então, você até concom firmware defeituoso. seguiria se conectar, mas o seu computador seria incapaz de A solução fácil é usar um kernel que seja aproximadamente traduzir um nome como www.linuxmagazine.com.br para um seis meses mais novo que o dispositivo problemático, que já endereço de IP, e conseqüentemente você veria uma mensadeve incluir drivers mais recentes. Às vezes, uma atualização gem de erro. Procure no arquivo /etc/resolv.conf, depois de de BIOS aparece para solucionar a questão. se conectar, uma linha de servidor de nomes. ■ Mas existe uma pequena chance de os parâmetros do kernel ajudarem, senão resolvendo o problema, pelo menos desliganO autor do a parte do hardware que causa as instabilidades. É possível, por exemplo, tentar a opção de inicialização irqpoll, que é Klaus Knopper é o criador do Knouma gambiarra para os casos de interrupções malucas. ppix e co-fundador do evento LinuxEssas opções do kernel estão parcialmente cobertas Tag. Atualmente ele trabalha como professor, programador e consultor. na documentação, em /usr/src/linux/Documentation/kernel-parameters.txt:
Relâmpago
Talvez o problema seja que meu modem e meu roteador DSL foram atingidos por um raio.
12
http://www.linuxmagazine.com.br
© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).
© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).
Crônicas do kernel
COLUNA
Zack Brown
Esta coluna é baseada na seção “Zack’s Kernel News”, publicada na Linux Magazine International, e sintetiza o intenso tráfego da lista de discussão do kernel.
O futuro do IDE
Alan Cox anunciou um plano ousado para unir o suporte a PATA (ATA paralelo) da árvore -mm à árvore principal do kernel num futuro próximo. O objetivo de longo prazo é eliminar totalmente a antiga camada IDE. Como Alan diz, “Muitos dos novos drivers libata já são mais estáveis e funcionais do que os IDE.” Mark Lord, o criador inicial e primeiro mantenedor do subsistema IDE, é fortemente favorável aos planos de Alan e, como ele próprio disse, “está na hora de colocar o código da próxima geração em funcionamento”.
a tarefa dos desenvolvedores para portar correções entre as duas árvores; mas não é tão fácil quanto pode parecer. Se a coisa toda acontecer muito rápido, os desenvolvedores do kernel arriscam-se a desestabilizar o código do Ext3 inadvertidamente. Jeff Garzik sugere que a melhor solução é primeiro fazer o fork, depois faxinar o Ext4, ver se isso não causa nenhum problema, e só então migrar esses códigos (faxinados) para o Ext3, após testes, é claro. A diferença em relação à velocidade de inclusão do Reiser4 (sabidamente lenta) vem do fato de que os desenvolvedores do Reiser não conseguem trabalhar com o processo de desenvolvimento do kernel, tentando subvertê-lo. Concordando ou não com esse tratamento preferencial, essa é a forma como o desenvolvimento e a manutenção do kernel são feitos atualmente.
Concordando ou não com esse tratamento preferencial, essa Intriga Greg Kroah-Hartman tomou a decisão de realizar um feé a forma como o ature freeze na árvore 2.6.16 do kernel, delegando a tarefa desenvolvimento e a Adrian Bunk. Segundo Greg, uma árvore realmente estável do kernel 2.6 trará mais usuários à série atual. a manutenção do Com essa iniciativa, passariam a existir duas árvores 2.6: a estável (2.6.16), de Adrian, e a 2.6 normal (2.6.17, 2.6.18 kernel são feitos e posteriores), de Greg e Chris Wright. atualmente. Entretanto, essa decisão foi vista como autoritária Parece não haver muita divergência quanto a isso entre os desenvolvedores do kernel. O debate mais agitado aparentemente é sobre a nomenclatura dos dispositivos de disco no futuro; mas até isso perde importância, de acordo com Alan e os outros, que alegam que essa é uma questão para o udev, e portanto não diz respeito diretamente ao kernel. Ainda assim, a questão da nomenclatura é significativa, e o udev não pode simplesmente escolher qualquer nome de dispositivo que quiser – ele tem que suportar a forma de uso atual, ou então arriscar-se a quebrar vários programas do espaço do usuário.
Ext4
Mingming Cao fez um fork do sistema de arquivos Ext4, a partir do Ext3, dia nove de agosto. Já existe uma certa pressão para que esses patches sejam incluídos na árvore de Linus Torvalds “o mais rápido possível”, como colocou Andrew Morton. As comportas agora estão abertas para todos os antigos patches para o Ext3 aos quais Linus se opunha, como extensões e o suporte a tamanhos de bloco maiores que 32 bits. Andrew e outros discutem sobre diversas faxinas no Ext3 antes de fazer o fork. Teoricamente, isso facilitaria
por Andrea Arcangeli, que se opôs à seleção arbitrária de Adrian, sem qualquer consulta pública ou pedidos de candidaturas para o cargo. Alan Cox interveio, lembrando que o próprio Linus sempre usou essa mesma abordagem, selecionando aqueles em quem confia para incumbir das tarefas mais importantes. Parte da discordância de Andrea em relação a Greg passa pela atitude em relação à Licença Pública Geral da GNU e a inclusão de módulos binários no kernel. Esse problema é realmente feio, e envolve até ditos históricos do próprio Linus Torvalds a respeito do que é legalmente permitido ou proibido. Em última instância, a decisão caberá aos advogados que cuidam da questão, e os desenvolvedores do kernel terão que aceitá-la. Como o Linux consiste de um grande mosaico de patches pertencentes a autores distintos, seria impossível mudar sua licença. Portanto, esse tipo de discussão tende a ter sérias conseqüências. ■
O autor A lista de discussão Linux-Kernel é o núcleo das atividades de desenvolvimento do kernel. Zack Brown consegue se perder nesse oceano de mensagens e extrair significado! Sua newsletter Kernel Traffic já está completando 5 anos.
14
http://www.linuxmagazine.com.br
© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).
Gabarito
Hospedagem de Sites e Servidores
INTERNET PARA PROFISSIONAIS DE INTERNET
Monitoramento de Rede
Internet Data Center
4003-1001 © Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).
Servidores de Alta Disponibilidade
www.plugin.com.br
SEGURANÇA
➧ Kernel Linux O ➧
➧
➧
➧
➧
kernel Linux processa as funções básicas do sistema operacional. Os seguintes problemas de segurança foram relatados: Uma falha no sistema de arquivos proc que permite que um usuário local utilize um suid-wrapper para que scripts obtenham privilégios de superusuário (CVE-2006-3626) Uma falha na implementação de SCTP que permite a um usuário local causar uma negação de serviço ou possivelmente ganhar privilégios de superusuário (CVE-2006-3745) Uma falha em partições Ext2 e Ext3 exportadas via NFS, ao lidar com inodes inválidos, que permitem a um usuário remoto autenticado causar uma negação de serviço (filesystem panic) (CVE-2006-3468) Uma falha no caminho do código restore_all do suporte à separação 4/4 GB de kernels não-hugemem que permite que um usuário local cause uma negação de serviço (CVE-2006-2932) Uma falha no processamento de IPv4 do netfilter para o uso improvável de processamento NAT de SNMP, que permite a
➧ Bind
O Bind é um aplicativo servidor de nomes DNS. Foi encontrada uma vulnerabilidade no Bind, na qual ele não verifica suficientemente pedidos e respostas particulares e respostas de outros servidores de nomes e usuários. Isso poderia ser explo-
➧
➧
➧
➧
um usuário remoto causar uma negação de serviço (travamento) ou uma corrupção potencial de memória (CVE-2006-2444) Uma falha na forma como o driver de CD-ROMs lida com DVDs, que poderia ser usada em conjunto com um dispositivo USB feito especificamente para obter privilégios de superusuário (CVE-2006-2935) Uma falha no processamento de gravações O_DIRECT que permite que um usuário local realize um ataque de negação de serviço (CVE-2004-2660) Uma falha no processamento do comprimento de blocos SCTP que permite a um usuário remoto causar uma negação de serviço (travamento) (CVE-2006-1858) Uma falha no processamento de entrada do driver ftdi_sio que permite que um usuário local cause uma negação de serviço (consumo de memória) (CVE-2006-2936) ■ Referência no Mandriva: MDKSA-2006:151 Referência no Red Hat: RHSA-2006:0617-15 Referência no Suse: SUSE-SA:2006:049
rado através do envio de um pacote especialmente construído para parar o servidor de nomes. ■ Referência no Debian: DSA-1172-1 Referência no Mandriva: MDKSA-2006:16 Referência no Ubuntu: USN-343-1
Postura das principais distribuições Linux quanto à segurança Distribuição
Referência de Segurança
Comentários
Conectiva
Info: distro2.conectiva.com.br/ Lista: seguranca-admin@distro.conectiva.com.br e distro2.conectiva.com.br/lista Referência: CLSA-... 1
Possui uma página específica; não há link para ela na página principal. Os alertas são sobre segurança, mas distribuídos através de emails assinados com a chave PGP da empresa para assegurar sua autenticidade. Contém também links para os pacotes atualizados e para fontes de referência sobre o problema sendo corrigido.
Debian
Info: www.debian.org/security Lista: lists.debian.org/debian-security-announce Referência: DSA-… 1
Alertas de segurança recentes são colocados na homepage e distribuídos como arquivos HTML com links para os patches. O anúncio também contém uma referência à lista de discussão.
Gentoo
Info: www.gentoo.org/security/en/gsla/index.html Fórum: forums.gentoo.org Lista: www.gentoo.org/main/en/lists.xml Referência: GLSA: … 1
Os alertas de segurança são listados no site de segurança da distribuição, com link na homepage. São distribuídos como páginas HTML e mostram os comandos necessários para baixar versões corrigidas dos softwares afetados.
Mandriva
A Mandriva tem seu próprio site sobre segurança. Entre outras Info: www.mandriva.com/security Lista: www1.mandrdrivalinux.com/en/flists.php3#2security coisas, inclui alertas e referência a listas de discussão. Os alertas são arquivos HTML, mas não há links para os patches. Referência: MDKSA-… 1
Red Hat
Info: www.redhat.com/errata Lista: www.redhat.com/mailing-lists Referência: RHSA-… 1
A Red Hat classifica os alertas de segurança como “Erratas”. Problemas com cada versão do Red Hat Linux são agrupados. Os alertas são distribuídos na forma de páginas HTML com links para os patches.
Slackware
Info: www.slackware.com/security Lista: www.slackware.com/lists (slackware-security) Referência: [slackware-security] … 1
A página principal contém links para os arquivos da lista de discussão sobre segurança. Nenhuma informação adicional sobre segurança no Slackware está disponível.
Suse
Info: www.novell.com/linux/security Lista: www.novell.com/linux/download/updates Referência: suse-security-announce Referência: SUSE-SA … 1
Após mudanças no site, não há mais um link para a página sobre segurança, que contém informações sobre a lista de discussão e os alertas. Patches de segurança para cada versão do Suse são mostrados em vermelho na página de atualizações. Uma curta descrição da vulnerabilidade corrigida pelo patch é fornecida.
1 Todas as distribuições indicam, no assunto da mensagem, que o tema é segurança.
16
http://www.linuxmagazine.com.br
© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).
SELECIONE
➧ X.org
Referência no Gentoo: 200609-04 Referência no Mandriva: MDKSA-2006:148 Referência no Red Hat: RHSA-2006:0634-2 Referência no Ubuntu: USN-341-1
➧ ImageMagick
te verificada por implementações que não verificam o excesso de dados no resultado da exponenciação RSA da assinatura. A equipe de segurança do Google, Google Security Team, descobriu que o OpenSSL é vulnerável a esse ataque. O problema afeta as aplicações que fazem uso do OpenSSL para verificar certificados X.509, assim como outros usos do PKCS #1 v1.5. ( CVE-2006-4339 ) ■
NOME DA SEÇÃO
O X.org é uma implementação em código aberto do sistema X Window. O sistema X.org oferece uma fundação que provê funcionalidades básicas de baixo nível para gráficos, sobre as quais são projetadas interfaces de usuário altamente sofisticadas. Uma falha de estouro de inteiros na forma como o X.org processa arquivos PCF foi descoberta. Um cliente autorizado e mal intencionado seria capaz de explorar esse problema e causar assim uma negação de serviço (travamento) ou potencialmente executar código arbitrário com privilégios de superusuário no servidor X.org. (CVE-2006-3467) ■
Referência no Debian: DSA-1173-1 Referência no Gentoo: GLSA 200609-0 Referência no Mandriva: MDKSA-2006:161 Referência no Red Hat: RHSA-2006:0661-8 Referência no Ubuntu: USN-339-1
➧ Sudo
O Sudo é um programa que permite aos usuários executar programas com as permissões de outro usuário. Atualizações anteriores do Sudo foram lançadas para impedir que algumas variáveis de ambiente afetem uma chamada ao Sudo, como PYTHONINSPECT, PERL5OPT etc. Apesar de essas atualizações terem efetivamente conseguido resolver essas variáveis de ambiente específicas, outras variáveis não listadas ainda eram disponibilizadas. ■
O ImageMagick é uma ferramenta de visualização e manipulação de imagens para o sistema X Window, capaz de ler e gravar diversos formatos de imagem. Tavis Ormandy descobriu várias falhas de estouro de inteiros e de buffer na forma como o ImageMagick decodi- Referência no Debian: DSA-946-2 fica arquivos gráficos XCF, SGI e Sun Referência no Mandriva: MDKSA-2006:159 bitmap. Um agressor seria capaz de executar código arbitrário na máquina de uma vítima se conseguisse convencê-la a abrir um arquivo de imagem PHP é uma linguagem de programação especialmente criado. (CVE-2006-3743, para desenvolvimento web. As funções CVE-2006-3744, CVE-2006-4144) ■ file_exists e imap_reopen nas versões do Referência no Debian: DSA-1168-1 PHP anteriores à 5.1.5 não verificam as configurações de safe_mode e open_baReferência no Mandriva: MDKSA-2006:155 Referência no Red Hat: RHSA-2006:0633-5 sedir, permitindo assim que usuários Referência no Suse: SUSE-SA:2006-050 locais ignorem essas configurações. Referência no Ubuntu: USN-340-1 (CVE-2006-4481) Um estouro de buffer na função LWZReadByte em ext/gd/libgd/gd_gif_in.c na extensão GD do PHP anterior à verO conjunto de ferramentas OpenS- são 5.1.5 permite a agressores remotos SL oferece suporte à comunicação causarem um impacto desconhecido segura entre máquinas. O OpenS- através de um arquivo GIF com um SL inclui uma ferramenta de ge- input_code_size maior que MAX_LWZ_BITS, renciamento de certificados, além o que aciona um estouro ao inicializar de bibliotecas compartilhadas que o vetor da tabela. (CVE-2006-4484) oferecem diversos protocolos e alA função stripos do PHP anterior à goritmos criptográficos. versão 5.1.5 tem impacto e vetores de Daniel Bleichenbacher recente- ataque desconhecidos, relacionados mente descreveu um ataque nas assina- a uma negação de serviço. ( CVE-2006turas PKCS #1 v1.5. Nessas assinaturas, 4485) ■ e se uma chave RSA com expoente Referência no Gentoo: GLSA 200608-28 3 estiver em uso, pode ser possível Referência no Mandriva: MDKSA-2006:162 a um agressor forjar uma assinatura Referência no Slackware: SSA:2006-217-01 PKCS #1 v1.5, que será incorretamen- Referência no Ubuntu: USN-342-1
➧ PHP
➧ OpenSSL
17
Linux Magazine #24 | Outubro de 2006
© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).
NOTÍCIAS
➧ Nova versão do Python Após 20 meses desde o lançamento de sua última versão principal, a comunidade Python anunciou, no dia 19 de setembro, o lançamento do Python 2.5, versão final. O anúncio na página da linguagem informa que os desenvolvedores de módulos externos em C devem atentar ao fato de que houve modificações no suporte a arquiteturas de 64 bits. Segundo o anúncio, isso pode quebrar a funcionalidade de diversos módulos. Ao mesmo tempo, foram lançadas as versões do interpretador python com instaladores para Windows® (versões de 32 e 64 bits, incluindo as arquiteturas x86-64 e IA64) e Mac OS X. Os desenvolvedores afirmam que a nova versão está mais confiável, devido ao uso da ferramenta de testes Buildbot, e à
correção de mais de 450 falhas. Além disso, está mais veloz, principalmente no tocante ao processamento de exceções e variáveis de texto, após o evento NeedForSpeed, realizado na Islândia, e o Google Summer of Code, organizado pela Google Inc. Outras novidades incluem uma nova etapa entre a interpretação do código e a geração do bytecode, que vem a ser a construção de uma árvore abstrata de sintaxe (AST, ou Abstract Syntax Tree). A biblioteca padrão, em constante expansão, agora conta com os módulos ctypes, ElementTree, hashlib, sqlite3 e wsgiref. Para mais informações, confira o site da linguagem em http://www.python.org. ■
➧ Linux em novo handheld
➧ Para-virtualização transparente
A Unicon Systems apresentou o primeiro computador móvel sem fio equipado com Linux e a tecnologia chip-on-film. O dispositivo apresentado é impulsionado por um processador ARM9 e roda um kernel 2.6 sem modificações. O processador localiza-se atrás de uma tela de 3,5 polegadas sensível ao toque, e o computador conta ainda com diversas formas de conexão, como duas portas USB 2.0, rede sem fio, uma porta serial e uma conexão ethernet. Esse novo dispositivo é perfeito para a aplicação em handhelds das áreas de educação, medicina, indústrias e segurança, além, é claro, de vários setores do mercado de eletrônicos móveis de consumo. Sua grande vantagem é não exigir que os desenvolvedores trabalhem com versões minimalistas do Linux, o que, segundo o fabricante, tende a dificultar o desenvolvimento de novas aplicações, ao exigir hardware específico e bibliotecas reduzidas a subconjuntos das originais. ■
A EMC, fabricante do sistema de virtualização VMware, apresentou uma demonstração da tecnologia de paravirtualização para sua plataforma. Através da para-virtualização, uma máquina virtual é capaz de se comunicar com o hypervisor através de uma interface, o que, segundo a EMC, melhora grandemente o desempenho. A para-virtualização transparente acrescenta a possibilidade de se rodar um mesmo binário tanto na máquina hóspede quanto na hospedeira, sem qualquer modificação. A interface de comunicação entre a máquina virtual e o hypervisor proposta pela empresa e batizada de VMI (Virtual Machine Interface) foi lançada como uma especificação aberta. Até agora, recebeu contribuições de desenvolvedores da IBM, Red Hat, VMware e XenSource. Com uma interface padronizada e consolidada, um sistema Linux será capaz de rodar em qualquer hypervisor que a suporte. ■
18
http://www.linuxmagazine.com.br
© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).
Gerais | NOTÍCIAS
➧ ATI e o Linux
Na coletiva de lançamento de seus novos modelos de placas gráficas X1950 XTX, X1650 Pro e X1300 XT, a ATI revelou alguns detalhes do processo pós-compra pela AMD. A marca provavelmente continuará existindo e dando nome aos chips gráficos, talvez em conjunto com o logo da AMD. Porém, nenhuma afirmação foi feita com o termo “com certeza”, o que não ajudou a acalmar os ânimos dos presentes à coletiva. Quando questionados sobre o suporte ao Linux, os representantes informaram que a última versão de seus drivers binários, 8.28.8, já oferecem ótimo suporte ao sistema de código aberto. Disseram ainda que já existe uma equipe de programadores de software livre trabalhando em conjunto com a empresa, a fim de desenvolver drivers mais eficientes e que trabalhem melhor com Linux. Porém, deixaram claro que o mercado de Linux, na visão deles, compõe somente 1% do total, e por isso não há um forte interesse, embora softwares como XGL e AIGLX tendam a rapidamente aumentar esse mercado. O suporte a tecnologias proprietárias de aceleração 3D também está presente, mas os usuários de Linux não podem tirar proveito disso. Na visão da ATI, a tecnologia equivalente de código aberto, o OpenGL, ficou órfã, depois da derrocada da SGI. A concorrente Nvidia parece discordar dessa posição,
pois tem participado na definição de novas especificações para o OpenGL. Levando em conta a proximidade da AMD com a comunidade do software livre, essas palavras da fabricante de GPUs confirmam o fato de que a fusão somente aparecerá para todos, ou seja, no mercado, a partir de janeiro de 2007. No final das contas, mantém-se a questão circular da falta de jogos no Linux devido à deficiência no suporte a aceleração 3D, que por sua vez não aumenta por falta de jogos que a utilizem. ■
➧ Intel lança kit de compatibilidade de BIOS A Intel lançou o Linux-ready Firmware Developer Kit, uma ferramenta que testa se o Linux funciona bem com o firmware, ou seja, a BIOS da máquina em questão. O componente principal da ferramenta é um Live CD que, ao ser iniciado, executa o Linux e um aplicativo de teste. O aplicativo realiza diversas checagens na máquina e mostra os resultados na tela, com possibilidade de o usuário inspecioná-los. O objetivo é oferecer a desenvolvedores de firmwares e do kernel a possibilidade de testar seu objeto de trabalho quanto à compatibilidade. Segundo a Intel, mesmo marinheiros de primeira viagem no Linux conseguem obter resultados claros e úteis em apenas 15 minutos de testes, sem qualquer necessidade de conhecimentos específicos avançados. ■
➧ Nova versão do Asterisk
Foi liberada no dia nove de setembro a versão 1.2.12 do software Asterisk, o servidor VoIP de código aberto mais famoso do mundo. O Asterisk é um PBX completo implementado em software, compatível com todos os padrões de voz sobre IP, o que lhe permite comunicar-se com qualquer outro equipamento de telefonia que siga os mesmo padrões. A versão 1.2.12 traz correções de diversas falhas e poucas mudanças no comportamento de comandos. Uma semana depois desse lançamento, a versão 1.2.12.1 foi liberada, corrigindo algumas falhas que haviam sido ignoradas pela última versão. ■
➧ Click N’ Run agora grátis
A Linspire, fabricante da distribuição Linux de mesmo nome, baseada no Debian, anunciou a eliminação do pagamento de anuidade para o uso de sua tecnologia Click N’ Run. O CNR, como é abreviado, facilita a instalação de programas na distribuição Linspire, e era vendido como um serviço, por uma taxa anual de assinatura, de 20 a 50 dólares. Há mais de 20 mil programas disponíveis através dessa tecnologia, que agora estará disponível não só para o Linspire, como também para o Freespire, versão gratuita da distribuição, produzida pelo mesmo fabricante. Embora o serviço seja gratuito, alguns programas comerciais disponíveis naturalmente continuam exigindo o pagamento de licenças, como o StarOffice, da Sun, o Win4Lin Pro, o CrossoverOffice, da CodeWeavers e o Cedega, da Transgaming. Também estão disponíveis vários jogos comerciais. Ainda existirá um serviço pago, chamado “CNR Gold”, cujas diferenças para o CNR gratuito não foram reveladas. A Linspire prometeu também abrir o código-fonte do cliente CNR, o que permitirá que mais distribuições usem essa tecnologia, potencialmente aumentando muito as possibilidades do Linux no desktop. ■
19
Linux Magazine #XX | Mês de 200X
© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).
© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).
© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).
CORPORATE
➧ IBM inaugura laboratório de alta performance no Brasil A IBM anunciou no dia 5 de setembro de 2006 a inauguração do primeiro laboratório de alta performance especializado em software e serviços da América Latina. O laboratório, conhecido mundialmente pelo nome High Performance On Demand Solutions Lab (HiPODS), vai integrar a rede de instalações especializadas da companhia disponíveis em outros cinco países: China (Pequim), Índia (Bangalore), Reino Unido (Hursley), Japão (Yamato) e Estados Unidos (San Jose). Essas instalações fornecem a empresas acesso a servidores e armazenamento de dados, de acordo com as suas necessidades específicas, em áreas como alta disponibilidade e alta performance, infra-estruturas virtualizadas, testes de estabilidade e escalabilidade, bem como incubação de novas tecnologias. Conectados através de um sistema de colaboração global chamado Grade Global de Inovação (Global Innovation Grid), os HiPODS permitem à IBM criar uma equipe para trabalhar em projetos em questão de minutos, alocar servidores e armazenamento de dados em menos de uma hora, prover componentes de software de forma dinâmica, conectar equipes globais através de blogs e wikis, além de reutilizar ativos
➧ Servidor de terminais NX de código aberto A empresa 2X abriu o código de seu 2X TerminalServer para Linux, um servidor de terminais para Linux, que permite que usuários de máquinas Linux executem aplicativos de Windows® e Linux sobre qualquer tipo de conexão. De acordo com o CEO da empresa, Nikolaos Makris, o Linux só vai deslanchar
desenvolvidos para um cliente em centenas de outros, em qualquer parte do mundo. No Brasil, a equipe do HiPODS conta atualmente com 12 profissionais – de um total de 200, espalhados pelas outras instalações ao redor do mundo – e contou com um investimento inicial da ordem de 1 milhão de dólares, que deve crescer conforme a demanda. Atualmente estão disponíveis em toda a rede mais de 1.000 servidores para atender demandas globais e locais. Utilizando-se um sistema baseado em uma interface web, podem-se alocar recursos ociosos de outras unidades em outros países, sejam eles relativos ao hardware, sistemas operacionais, aplicativos ou pessoal. Projetos comumente fadados ao uso dos recursos fornecidos pelos HiPODS são aqueles que necessitam de tecnologia de ponta voltada para ambientes transacionais massivos, tais como servidores de aplicação e bancos de dados, sistemas que conectem negócios à TI, tais como ambientes comerciais e bancários, telecomunicações (especialmente relacionados hoje às ofertas de IP TV) e, especialmente no Brasil, nota fiscal e comércio eletrônicos. ■
no ambiente corporativo se for usado em thin clients de forma superior aos fat clients rodando Windows. O NX é um protocolo de compressão do X Window, o que permite que usuários consigam usar desktops gráficos remotos mesmo através de conexões de rede lentas. No caso das velozes redes locais, como costuma ocorrer no ambiente corporativo, esse melhor aproveitamento da banda se reflete num maior número de máquinas remotas utilizando um mesmo servidor. ■
22
http://www.linuxmagazine.com.br
© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).
Notícias | CORPORATE
➧ Dois PCs Linux = 12 estações
As empresas HP, Blueloop e Omni firmaram uma parceria para desenvolver uma solução para um Internet Café na cidade de Telford, no Reino Unido. A solução adota dois PCs comuns da HP como “servidores”, com um total de 12 clientes ligados a eles, servindo o público. As máquinas rodam SLED 10 (Suse Linux Desktop Enterprise) e o programa Linux Desktop Multiplier. Com essa solução, cada computador pode servir até dez clientes, equipados somente de monitor, teclado e mouse. “O Linux Desktop Multiplier oferece grande economia em hardware, software e gerenciamento para organizações que estejam considerando a adoção do Linux em computadores de acesso público, quiosques e call centers”, afirma o CEO da Omni, Aldo Zanoni. A solução utiliza múltiplas placas de vídeo dual head, além de hubs USB com alimentação elétrica própria. Segundo os fabricantes, essa inovação consegue superar o desempenho dos thin clients a uma fração do custo. ■
➧ Mais um servidor de Groupware de código aberto A edição Community do software de email e calendário da empresa Scalix terá seu código aberto até o primeiro trimestre do ano de 2007. A edição Community já existe desde agosto de 2005, mas até agora tratava-se de um produto gratuito de código fechado. O produto é baseado no código do Open Mail, criado pela HP e licenciado pela Scalix em 2003. É possível que o produto de código aberto provavelmente tenha uma política de duplo licenciamento, com a parte aberta provavelmente liberada sob uma licença derivada da Mozilla Public License (MPL), a mesma dos softwares da Fundação Mozilla. ■
➧ Linux nas Lojas Marisa As Lojas Marisa, rede varejista especializada em roupas femininas, resolveu adotar o Linux em seus pontos-de-venda. Há alguns meses a empresa já utilizava Linux, porém somente na área de gerenciamento dos cartões de crédito com bandeira da própria loja. A novidade, dessa vez, é o uso do Linux nos PDVs, seguindo o exemplo de algumas outras redes varejistas no Brasil. O projeto piloto, numa loja de São Paulo, faz uso de Red Hat Enterprise Linux e banco de dados MySQL, em contraste com a solução adotada para os cartões de crédito, que utiliza o banco de dados Oracle. Caso dê certo, a experiência será multiplicada para todas as lojas da rede. ■
➧ Red Hat enfim integra JBoss
A Red Hat finalmente começou a integrar o JBoss, plataforma middleware para desenvolvimento de aplicações, comprada pela empresa em maio de 2006. A novidade é a disponibilização, por parte da Red Hat, do JBoss Application Server e do JBoss Hibernate, na Red Hat Network. Através do Red Hat Application Stack, os assinantes do serviço terão acesso ao Red Hat Enterprise Linux, distribuição Linux do fabricante, com esses aplicativos já integrados. Nas palavras de Tim Yeaton, vice-presidente sênior de Enterprise Solutions da empresa, “Hoje alcançamos um de nossos primeiros marcos, no qual clientes, desenvolvedores e parceiros podem se beneficiar com esse novo canal de ofertas JBoss, o Red Hat Application Stack”. A solução integrada conjuga software, suporte, atualizações e upgrades a uma oferta on-line pela Red Hat Network. Com isso, o conjunto final é apropriado para executar aplicativos LAMP (Linux, Apache, MySQL e PHP) ou Java, favorecendo o uso da Arquitetura Orientada a Serviços (SOA, na sigla em inglês). ■
➧ Mandriva Corporate Server 4
A Mandriva, fabricante da distribuição Linux de mesmo nome, lançou o Mandriva Corporate Server 4, distribuição Linux voltada a servidores. Bastante atualizada, a distribuição é totalmente compatível com o padrão LSB (Linux Standard Base), o que facilita o intercâmbio de informações com outras distribuições que atendam ao mesmo padrão. A distribuição já vem “de fábrica” com suporte aos sistemas de virtualização Xen (com tecnologia OpenVT da Intel), OpenVZ e VMware. Todos os componentes já vêm com suporte a servidores de diretório, o que facilita e acelera a implantação em múltiplas máquinas corporativas. Além disso, inclui também o suporte a processadores de núcleos múltiplos, servidores Blade e outras tecnologias. Com o software, recebe-se um registro para atualizações, manuais e o suporte técnico por telefone e via Web, esse último através do serviço Mandriva Expert. As atualizações serão disponibilizadas por um período de cinco anos. Existe uma versão de avaliação do produto disponível no site do fabricante (www.mandriva.com/en). ■
23
Linux Magazine #24 | Outubro de 2006
© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).
O ROI do Linux e do Software Livre
CORPORATE
2º Seminário LinuxPark’06
T
A terceira edição do evento, segunda no ano, reuniu mais uma vez diversas empresas, que trocaram experiências e idéias sobre o uso do Software Livre e de Código Aberto (SL/CA) no ambiente corporativo. por Pablo Hess
endo sido iniciados em 2005, com dada a forte interação entre todos durante o tema “O Impacto da Escolha de as palestras e nos intervalos. Tecnologias Abertas nos Negócios Com o tema “O ROI do Linux e do Corporativos”, os seminários LinuxPark Software Livre”, essa edição do evento já se consolidaram como um ponto concentrou-se em demonstrar e caractede encontro das empresas usuárias de rizar a superioridade do Software Livre Software Livre e daquelas interessadas quanto ao retorno sobre o investimento em conhecer e utilizar essa tecnologia. (ROI, na sigla em inglês) em TI. NatuNa segunda edição, em março de 2006, ralmente, diversos estudos de caso foram o evento concentrou-se no aspecto prá- apresentados para esse fim, de clientes tico da implementação, atraindo ainda para clientes. Os participantes incluíam, mais participantes que o anterior. A Li- entre outros: Banco Bradesco, Banco Itaú, nux Magazine número 19 descreveu os Ciba Especialidades Químicas, Copaseminários com mais detalhes. gaz, Embraer, Metrô SP, Sabesp, Senai, Ainda no embalo da expectativa positi- Wheaton Brasil Vidros, Saralee Cafés va criada pelo último evento, realizou-se do Brasil e diversos outros. A presença no Centro de Convenções Millenium, de algumas empresas no evento marcou em São Paulo, o 2º Seminário LinuxPark o reconhecimento da maturidade e da 2006, no dia 29 de agosto. Como foi dito, importância do SL/CA; entre elas, Mias mais de 120 pessoas presentes não eram crosoft e Novell. As instituições públicas apenas espectadores, e sim participantes, foram representadas pela Prefeitura Mu-
nicipal de Diadema e as Secretarias de Educação do Município de Santo André e do Estado de São Paulo.
Patrocinadores
Personagens do mercado corporativo nacional e internacional, como Itautec, IBM e Intel, novamente compareceram com forte apoio financeiro à Linux New Media do Brasil. Fornecedores de softwares e distribuidores de sistemas operacionais, como Xandros, Red Hat e Mandriva, também apoiaram o evento, juntamente com empresas especializadas em serviços, como iFractal e VIPware. O almoço mais uma vez foi oferecido aos participantes pela Itautec. É altamente interessante para os patrocinadores o apoio ao LinuxPark, dada a natureza da conversa entre clientes.
24
http://www.linuxmagazine.com.br
© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).
Evento | CORPORATE
Rafael Peregrino, da Linux New Media O ROI do Linux e do Software Livre
Serviço público
Marcos Mazoni, Diretor Presidente da Companhia de Informática do Paraná Em seu keynote de abertura, Rafael Peregrino enfatizou a questão do ROI (Return On In(CELEPAR), apresentou a história da vestment, ou Retorno Sobre o Investimento) do Software Livre. Após uma breve explicainstituição, cuja idade é revelada pelo ção sobre a história do termo, Rafael apontou as diferenças entre o uso tradicional na adsignificado original de seu nome: “Céministração de empresas e seu significado na área da gestão de TI. Enquanto a definição rebro Eletrônico do Paraná”. clássica trata do lucro resultante de um investimento, a utilizada por gestores de TI conComo responsável pela área de TI púcentra-se mais na adoção ou troca de sistemas, e a economia que isso proporciona. blica do Estado do Paraná, Mazoni possui A maioria dos modelos para cálculo do ROI adota o TCO (Total Cost of Ownership, ou Cusvivência e autoridade para dissertar sobre a to Total de Propriedade) como parâmetro central do lado dos custos. Esse valor consimigração para SL/CA. Além disso, foi cadera os custos de aquisição de uma solução de TI, juntamente com seus custos indirepaz de relatar a influência da política nessa tos associados. O TCO leva em conta ainda fatores como a disponibilidade dos sistemas, esfera. A CELEPAR era uma mera admios custos com licenças e manutenção de software, aquisição e vida útil do hardware, armazenamento, serviços de implementação e suporte, espaço físico e pessoal. nistradora de bancos de dados de órgãos estaduais, armazenados em sistemas gerenEm seguida, Peregrino apresentou algumas ferramentas para o cálculo do TCO e, em última ciadores proprietários Oracle, em sistemas instância, do ROI. Com isso, mostrou que o primeiro realiza simplificações um pouco grosoperacionais também proprietários. Esses seiras, pois tende a igualar os benefícios oferecidos pelas soluções sendo comparadas. Com bancos de dados continham os registros de isso, o TCO somente pesa o lado da redução dos custos, sem dar atenção ao aumento dos benefícios. Depois, seguiu-se uma série de relatos de estudos e análises confirmando que: CPF, dados de produção agrícola, comércio, produção industrial etc., constituindo uma ➧ Aspectos como confiabilidade, segurança e desempenho são mais importanfonte importantíssima de informações para tes que a redução de custos, na adoção de software livre pelas empresas; os próprios órgãos públicos. Porém, essas in➧ O Linux de fato possui TCO muito inferior a sistemas proprietários, como Windows® e Solaris; formações encontravam-se espalhadas nas diversas instituições. Seu cruzamento, de ➧ Instalações corporativas de Linux (incluindo servidores) têm menor custo de aquisição, são mais seguras, confiáveis, fáceis de gerenciar e demandam menos temimportância fundamental para a tomada de po de manutenção quando comparadas a qualquer solução proprietária. decisões por parte da administração estadual, era difícil e demorado, dada a fragmentação. Num exemplo de cálculo de ROI para o Linux, Peregrino demonstrou uma empresa fictíAlém disso, a estrutura da rede estadual de cia com 20 empregados, migrando de Windows para Linux, e obtendo assim um custo total de propriedade US$ 20.000,00 menor no primeiro ano de operação com software livre. computadores estava desorganizada, o que tornava muito difícil controlar seu acesso por Peregrino finalizou enfatizando a importância da mão-de-obra qualificada, um ponto que parte dos usuários e não permitia aos admifreqüentemente recebe menos atenção do que deveria. Além disso, lembrou que o software nistradores coibir seu mau uso. Por último, livre praticamente elimina o aprisionamento em relação ao fornecedor, o que permite que se a comunicação entre as diferentes instituibusque a cada etapa a melhor solução, o que é radicalmente diferente do modelo proprietário. ções era ineficiente. A empresa, criada para “fazer informática”, nas palavras de Mazoni, à produção tecnológica, abrangendo “estava relegada ao papel de administradora Assim como na primeira edição, o even- as áreas de varejo, produção e geren- de bancos de dados.” to contou com um keynote de abertura, ciamento de software, distribuição de Quando Mazoni assumiu a CELEdessa vez de Rafael Peregrino, Diretor alimentos, hotelaria e logística, além PAR, realizou uma proposta de migraEditorial da Linux New Media do Brasil, de transporte de cargas. ção dos softwares responsáveis pela geslogo após o credenciamento dos participantes e o café da manhã. Além de apresentar ao público a Linux New Media do Brasil, Peregrino falou também sobre o conceito de ROI aplicado a TI, demonstrando sua importância para as empresas e diferenciando-o do Custo Total de Propriedade (TCO, na sigla em inglês). O quadro acima fornece mais detalhes do keynote.
Apresentação
Estudos de caso
A segunda edição do LinuxPark 2006 contou com mais apresentações de cases de sucesso que a anterior, justamente para reforçar a idéia de que investir em Software Livre é, de fato, rentável para as empresas. As apresentações mostraram a maior diversidade possível, com empresas públicas e privadas, com maior ou menor grau de dedicação
Figura 1 Público selecionado durante as apresentações. A segunda edição do LinuxPark 2006 contou com mais de 100 participantes de alto nível.
25
Linux Magazine #24 | Outubro de 2006
© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).
CORPORATE | Evento
o andamento de processos e trâmites burocráticos de diversas áreas da esfera estadual, via Web.
Varejo
Figura 2 Marcos Mazoni apresenta suas experiências com migração para Linux e desenvolvimento de Software Livre público.
tão pública para SL/CA. Um benefício imediato era a economia proveniente do não pagamento de licenças. Aprovada a proposta, a CELEPAR começou simplesmente substituindo os sistemas operacionais dos servidores por Linux. Obviamente, os softwares servidores também precisaram ser alterados. A equipe da CELEPAR para realizar essa tarefa era de quatro pessoas. Numa etapa posterior, os bancos de dados deveriam ser definitivamente migrados. Após questionamentos sobre a capacidade dos sistemas gerenciadores de bancos de dados de SL/CA em lidar com uma base de dados de 16 GB, concluiu-se que o PostgreSQL supriria essa demanda com segurança. De fato, não só a migração era possível, como o desempenho foi melhorado. Hoje em dia, a administração pública do Estado do Paraná não corre mais o risco de retornar maciçamente ao software proprietário logo após uma troca de gestão. Em relação ao gerenciamento das informações, a CELEPAR voltou a desenvolver softwares, obviamente livres. Até agora, são seis programas baseados na Web, desenvolvidos em PHP, servidos pelo Apache e rodando sobre Linux. O primeiro deles é justamente um conjunto de ferramentas para desenvolvimento de sistemas baseados na Web. Esse conjunto é distribuído sob a forma do pacote Framework, que naturalmente é utilizado em todos os sistemas web desenvolvidos pela CELEPAR. O Expresso é o carro-chefe dos softwares lá desenvolvidos, e tem grande relevância na produtividade do funcio-
nalismo público. Ele integra email, agenda e catálogo de endereços, eliminando assim a necessidade de servidores locais de groupware em cada órgão público. Elimina também a necessidade de clientes com essas funcionalidades, uma vez que, na Web, está disponível para todos os servidores públicos, independente da plataforma usada pelo cliente. O Librarium, para automatização de bibliotecas, baseia-se em servidores e estações com sistemas proprietários, pois essa é a realidade atual das bibliotecas públicas do Estado. O sistema necessita de máquinas com acesso à Internet e um banco de dados. Outra estrela apresentada foi o sistema de ouvidoria on-line. Com esse sistema, os cidadãos conseguem acompanhar
Ildefonso Severino, Gerente de TI, apresentou o case das Casas Bahia, maior rede varejista do país nos setores de eletrodomésticos, móveis e eletroeletrônicos e detentora do segundo maior centro de distribuição do planeta, em Jundiaí-SP, além de outros quatro centros de distribuição, nos Estados de São Paulo, Minas Gerais e Rio de Janeiro, e mais sete entrepostos em cinco Estados das regiões Centro-Oeste e Sul e no Distrito Federal. No Centro de Tecnologia da empresa, em São Caetano do Sul, SP, desde o início de suas operações, em 2005, todos os computadores utilizam Linux, das estações aos servidores. O total investido foi de R$ 20 milhões, e o sistema resultante oferece hoje 99,99% de disponibilidade. Comparado às restrições do antigo centro de tecnologia da empresa, que precisava que as lojas estivessem todas fechadas para realizar operações de manutenção, a situação atual é infinitamente melhor. Operações de manutenção podem ser realizadas durante o funcionamento das lojas, com seus mais de três milhões de transações por hora, sem qualquer sinal de sobrecarga do sistema, composto por mainframes IBM zSeries 2084 e estações sem disco. Os aplicativos do Centro de Tecnologia são escritos em Java, e rodam sobre Suse Linux, com suporte da Mandriva Conectiva. Já as lojas passaram por um processo de migração, iniciado em 2002. Cada
Figura 3 O CIO da CEAGESP, Roberto Leon, apresentou a primeira etapa do case da empresa, introduzindo os problemas enfrentados antes da migração.
26
http://www.linuxmagazine.com.br
© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).
Evento | CORPORATE
loja conta com um servidor, que roda o sistema que alimenta os pontos-de-venda. Originalmente, esse sistema rodava sobre plataformas OS/2, entretanto, com a descontinuação desse sistema operacional por parte de seu fabricante, a IBM, a solução encontrada pelas Casas Bahia foi adotar o Linux nos servidores.
Distribuição de alimentos Em seguida, Roberto Eduardo Leon e Paulo Fernando Loesch, respectivamente CIO e Gerente de TI da CEAGESP, Companhia de Entrepostos e Armazéns Gerais de São Paulo, relataram o case de migração da empresa, de Windows NT para Linux. Leon Figura 5 As Casas Bahia superaram problemas em sua estrutura de TI com a construção de iniciou a palestra apresentando ao público um novo CPD, como mostrou Ildefonso Severino, Gerente de TI. a empresa, seu histórico e seus problemas. Originalmente estadual, mas hoje vinculada ao Ministério da Agricultura, Pecuária que significava uma séria limitação. Para res DNS, DHCP, proxy, de arquivos e de e Abastecimento, a CEAGESP garante o dificultar ainda mais a situação, a empre- autenticação. Somente os servidores de abastecimento de grande parte do Estado sa era refém de uma forte burocracia, por email e webmail rodavam softwares livres, de São Paulo, comunicando-se com pro- pertencer à União, e portanto dependia de respectivamente Postfix e Horde, naturaldutores, clientes e comerciantes, além de licitações para toda e qualquer contratação mente sobre Linux. realizar outras tarefas. A partir desse ponto, Loesch apresenou modificação na área de TI. Com essa importância toda, a estrutura A demanda não suprida incluía um tou os desafios a serem enfrentados pela de TI da CEAGESP conta com mais de sistema centralizado de administração do solução adotada. O impacto sobre a vida 300 desktops e um total de 20 pessoas nas parque de máquinas, melhorias no desem- dos usuários deveria ser mínimo, com uma seções de desenvolvimento e manutenção penho interno, a possibilidade de interligar migração transparente das contas e o mede aplicativos e de suporte e infra-estrutu- as unidades do interior à matriz, na capital, nor tempo de parada possível. Além disso, ra. O problema que essa equipe enfrentou e um aumento do controle sobre o uso da seria necessária uma equipe de suporte recentemente foi a substituição do sistema estrutura, como a unificação das senhas e administração capacitada, enquanto o operacional Windows NT, sem suporte do e um monitoramento do acesso à Inter- fator financeiro (“verba inexistente”, nas fabricante, além da falta de integração entre net. Especificamente no tocante à rede, a palavras do próprio Loesch) também peos servidores de domínio e email. Além disso, solução de firewall existente consistia de sava fortemente. o número de licenças deste último servidor um Checkpoint Firewall-1 rodando sobre As sugestões de soluções passaram pela (300) estava próximo de ser alcançado, o Windows NT 4, assim como os servido- atualização somente do hardware e também pela atualização do sistema operacional para o Windows 2003 Server, com seus serviços rodando também sobre softwares proprietários. Como a primeira objetivava somente o aumento de desempenho da rede, implicava também a manutenção do sistema operacional, que já não dispunha de suporte ou de atualizações de segurança. Em contrapartida, a segunda sugestão, atualizar somente o software, era inviável economicamente, pois requereria também a atualização do hardware. Por esses motivos, a opção escolhida foi mesmo a do software livre, que consistia do uso do Debian GNU/Linux com Samba, OpenLDAP, Qmail e Squid. Essa opção oferecia os benefícios necessários a um custo que a empresa podia pagar. Feita a substituição de todos os serviços por software livre, foi possível alojar os Figura 4 Paulo Fernando Loesch, Gerente de TI da CEAGESP, explicou como a empresa servidores DHCP e DNS em máquinas solucionou seus problemas de TI reduzindo custos e aumentando o desempenho. menos poderosas, devido ao baixo uso de
27
Linux Magazine #24 | Outubro de 2006
© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).
CORPORATE | Evento
Figura 5 A Rede Plaza de Hotéis conseguiu atingir o total controle sobre todos os aspectos de seu funcionamento, graças ao Linux, como mostrou Eduardo Moura, CIO.
recursos por esses serviços. Os servidores de email e webmail, que já rodavam sobre Conectiva Linux, foram substituídos por Qmail e Open-Xchange, e a economia de recursos computacionais permitiu ainda a instalação de novos serviços na rede, como FTP e VPN. O resultado final, segundo Loesch, foi uma rede mais organizada, mais confiável e com melhor desempenho, sem qualquer gasto com hardware. Os outros objetivos iniciais, isto é, a centralização da administração e o suporte a mais usuários, também foram atingidos com folga.
Hotelaria
Eduardo Moura, CIO da Rede Plaza de Hotéis, começou sua apresentação esclarecendo que falaria não sobre o ROI, mas sobre o RROI, Reliability and Return on Investment, que pode ser traduzido como “Confiabilidade e Retorno sobre o Investimento”. Mas primeiro apresentou a rede, com seus três resorts, três hotéis executivos, dois brain spas e um centro de convenções, faturamento anual de R$ 40 milhões e 75 mil hóspedes diferentes em 2005. A inovação tecnológica da rede é evidenciada pelos fatos de ter sido a primeira rede hoteleira do Brasil a oferecer nos apartamentos o acesso à Internet em banda larga, já no ano 2000, e ser a pioneira no emprego de VoIP para integrar suas unidades. Com a mudança de direção da empresa, em 2004, alguns desafios e objetivos foram identificados, incluindo a mudança do foco para a efetividade em custos, o enfrentamento da concorrência no mer-
cado executivo e melhorar a qualidade da informação a respeito dos hóspedes. Essa última questão encontrava-se em um estado bastante insatisfatório, pois as únicas informações de que os hotéis dispunham a respeito dos hóspedes não duravam mais de 90 dias. Numa rede de resorts, isso era especialmente ineficiente, pois é comum que os hóspedes freqüentem as unidades somente uma vez por ano. Outros desafios identificados foram controlar a plataforma de TI e oferecer novos serviços aos clientes, tanto hóspedes quanto parceiros e fornecedores. A plataforma de TI anterior à migração para Linux consistia de máquinas 486 com MS-DOS e Windows 95 e 98, um servidor de arquivos IBM OS/2, um
sistema de Property Management System baseado em DOS e arquivos DBF e um firewall e servidor de arquivos rodando em Debian, além do servidor web, também rodando no sistema aberto. Para superar os desafios, foi proposta a opção de se atualizar o parque de máquinas e os softwares, mantendo a plataforma proprietária da Microsoft. O custo de aquisição de novo hardware e licenças, tanto da Microsoft quanto dos fabricantes do PMS e do banco de dados (Oracle), nesse caso, foi calculado em pouco mais de R$ 600 mil. Porém, considerando também o custo de softwares adicionais (e necessários), como antivírus, antispam, anti-spyware etc., o valor atingiria R$ 840 mil. Mas a proposta vencedora foi calcular o custo da substituição de tudo isso por SL/CA, gastando a diferença em relação à primeira alternativa para melhorar o ambiente computacional. Com isso, chegou-se a um custo 26% menor para o SL/CA, com mais benefícios: foram implantados um firewall com balanceamento de carga (baseado em classes de serviço, um proxy Squid com autenticação por OpenLDAP, um servidor de arquivos OpenAFS, um servidor de email (Postfix) com antivírus (ClamAV) e anti-spam (Spamassassin) embutidos e foi mantido o banco de dados Oracle 9.2i, porém sobre máquinas Linux. Além disso, foram instalados também dois servidores de terminal Windows 2003. Toda essa estrutura agora é gerenciada com uso do Nagios. Com isso tudo, a rede agora obteve diversas melhorias. O exemplo citado foi o
Figura 7 Muita troca de idéias e informações ocorreu durante os intervalos do evento, com o público sempre interessado e bem informado.
28
http://www.linuxmagazine.com.br
© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).
Evento | CORPORATE
da compra de refrigerantes. Com a solução inicial, cada unidade comprava seus refrigerantes de um lugar diferente; agora, a rede inteira negocia como um todo, e com isso consegue obter melhores preços. O retorno do investimento na nova plataforma, portanto, foi: 26% de economia em licenças de software, 20% de redução de funcionários administrativos, 30% de melhora nas compras e uma redução de 40% na necessidade de suporte técnico. Os ganhos indiretos, que entram no segundo “R” do RROI, foram a previsibilidade dos problemas, um controle muito superior sobre a plataforma de TI e suas ocorrências, e a não recorrência dos problemas, uma vez resolvidos pela equipe de TI.
Logística
Figura 9 Rafael Peregrino, da Linux New Media, apresentou o keynote de abertura do evento, no qual introduziu a importância do ROI do Linux e no Software Livre.
A última apresentação do evento contou com Diógenes Knupp, Gerente de TI da Schenker Logistics no Brasil, demonstrando de forma coesa a adoção de Linux na empresa. A Schenker Logistics foi fundada na Áustria no século XIX, e desde então já viu diversas fusões, incluindo a compra pela alemã Deutsche Bahn, em 1931. Foi encarregada de fornecer a logística em diversos eventos recentes de importância internacional, como por exemplo os Jogos Olímpicos de Sidney (2000), Atenas (2004) e Pequim (2008), e as Olimpíadas de Inverno de Salt Lake City (2002) e Turim (2006). A Schenker não passou por uma migração, mas adotou o Linux desde o início em seus servidores. Os objetivos com isso eram manter um baixo custo para essas
máquinas, unido à alta confiabilidade típica da plataforma aberta. Em 2000, foi adotado o Linux no servidor proxy da empresa e, a cada ano, todas as novas máquinas já iniciam suas operações com sistema operacional Linux. Hoje, os nove servidores da empresa, máquinas Dell e HP com processadores Intel, rodam Red Hat Enterprise Linux. Os serviços oferecidos por essas máquinas são, além do proxy, banco de dados SQL, sistema de detecção de intrusão, firewall, servidor web e Samba. O resultado final para a empresa foi, além da já planejada redução de custos e aumento da confiabilidade, um grande aumento do desempenho e da estabilidade.
Figura 8 A Schenker Logistics já utiliza Linux desde o início em todas as novas máquinas adquiridas pelas empresas, conta seu Gerente de TI, Diógenes Knupp.
Conclusões
O clima do evento foi realmente de “troca de figurinhas”. Como os seminários eram todos de clientes, nada se ouvia de falsas propagandas e promessas. Em vez disso, os executivos, CIOs e técnicos relataram suas próprias experiências, impressões e conclusões acerca da adoção, migração e desenvolvimento de SL/CA. Um ponto comum em todos os cases foi a conclusão de que é extremamente importante a presença de um parceiro confiável e competente para que uma empresa adote o SL/CA em sua estrutura de TI. Em alguns casos, foram necessários os serviços de empresas especializadas na integração de soluções. Enquanto isso, em outros casos, começou-se com a migração e, após pouco tempo, formou-se uma equipe interna de desenvolvimento das próprias soluções da empresa, naturalmente baseadas em SL. Portanto, o recado é claro. O mercado precisa de mão-de-obra profissional e de qualidade, que aceite a responsabilidade de desenvolver e possivelmente adaptar sistemas de código aberto, adequando-os à realidade dos mais variados clientes. Além disso, como mostraram os seminários, ninguém quer ser aprisionado; quem opta por Software Livre, o faz objetivando também a independência em relação ao fornecedor. Como mercado, a peça-chave do Software Livre e de código aberto reside justamente no fato de que todos os elos da corrente são independentes, o que aumenta a concorrência e, conseqüentemente, a qualidade do resultado final. ■
29
Linux Magazine #24 | Outubro de 2006
© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).
Eduardo Moura, CIO, Rede Plaza de Hotéis
CORPORATE
Linux é 5 estrelas
A Rede Plaza de Hotéis não dispunha de um bom sistema de gestão, devido à estrutura de TI. Com a migração para o Linux, além da segurança melhorada, as ações estratégicas da empresa deram um grande salto. por Pablo Hess
A
Rede Plaza de Hotéis é a maior rede originalmente brasileira de hotéis em atividade no país. Com nove estabelecimentos espalhados pelo Brasil, entre hotéis, pousadas, resorts e centros de convenções, a empresa é detentora de diversos prêmios por competência e inovação, principalmente nos Estados do RS e SC. Um exemplo disso é o fato de ter sido a primeira rede hoteleira a oferecer aos hóspedes conexão à Internet de banda larga, já em 2000. A recente migração da estrutura de TI da empresa para Linux é o tema da entrevista que a Linux Magazine fez com seu CIO, Eduardo Moura. Linux Magazine» Por que a empresa ado-
tou o Linux?
O Plaza adotou o Linux por entender que ele era mais econômico no médio/longo prazo. Analisando o perfil do negócio e a necessidade dos usuários, nós percebemos que ao optar por Linux teríamos mais controle, estabilidade e disponibilidade do ambiente. Notamos também que o uso de software proprietário sempre nos mantinha “uma versão atrás”, e nos privava de algumas vantagens competitivas. A etapa de análise levou em conta o amadurecimento do Linux como sistema operacional, a qualidade do desktop etc. Se fôssemos falar de fazer o mesmo projeto há três Eduardo Moura, CIO da Rede Plaza de Hotéis anos, eu não recomenEduardo Moura»
daria o Linux, pois ele ainda não tinha toda essa maturidade.
“Se você
compra um software pronto, não existe vanguarda.”
LM» Então, em vez de preconceito, o Software Livre já começou com muito prestígio? EM» Certamente! A mentalidade (SL/CA) tem tudo a ver com o pensamento da empresa. Acreditamos que estar na vanguarda não quer dizer pagar mais por uma coisa que já existe. Além disso, se você compra um software pronto, não existe vanguarda. Com o Software Livre, é possível integrarmos soluções e modificarmos aplicativos para prestar um serviço diferenciado.
Como era a situação antes da migração para Software Livre? EM» Antes de migrar, o Plaza utilizava estações DOS, Windows® 95, Windows® 98 e um servidor de arquivos OS/2. O sistema de gerenciamento era baseado em arquivos DBF que mantinham os dados dos hóspedes por apenas 90 dias. Isso era particularmente complicado nos hotéis de lazer, para onde as pessoas iam, na melhor das hipóteses, a cada seis meses. Assim, ao invés de saber que aquele hóspede ia ao hotel todos os anos, duas vezes por ano, eu dependia do conhecimento dos funLM»
cionários. Todas as promoções e ações de marketing de relacionamento dependiam de longas conversas com o pessoal de reservas e da recepção, que nem sempre lembravam de todos os clientes. Para complicar mais, o banco de dados era descentralizado e não tinha uma boa estrutura de chaves. Então, eu tinha duplicidade de dados, ausência de informações importantes e um quadro “borrado” do que estava acontecendo ao negócio. A única presença do Linux era no nosso firewall, que funcionava também como servidor web e de email. Curiosamente, era a área da informática que menos trazia problemas. LM» Como foi o processo de migração? Quantas pessoas foram envolvidas? EM» A migração ocorreu para resolver problemas estruturais. E aproveitamos para reduzir os custos também. O processo todo levou dez meses, e foram migrados os servidores de email, banco de dados (Oracle) e de arquivos (adotamos o OpenAFS). Nesse tempo, instalamos ainda uma plataforma de gerenciamento do ambiente, pois a estrutura de gestão anterior era descentralizada. Curiosamente, a nova solução de gestão utiliza o PMS (Property Management System), que é um aplicativo desenvolvido em Delphi e que roda em dois servidores Windows® 2003. Para acessá-lo, os clientes usam Linux com o rdesktop. Com Linux nas estações, o que conseguimos é um controle muito maior do que o que eu teria com o Windows. Além disso, o perfil móvel do Linux é bem menor que o do Windows (no nosso caso, 130 MB para o Linux, em média, contra 900 MB para o Windows).
30
http://www.linuxmagazine.com.br
© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).
Entrevista | ORPORATE
Minha empresa, que desenvolveu e implantou a solução, conta com uma equipe de seis pessoas.
Isso tudo vem de uma maior capacidade de mantermos informações de relacionamento por mais tempo.
LM» Quais foram as principais vantagens advindas da migração? E as desvantagens? EM» Do ponto de vista do negócio, a centralização dos dados nos permitiu maior agilidade e confiança nas tomadas de decisão, o que se reflete em decisões de gestão mais acertadas. Enquanto isso, do ponto de vista técnico, vimos os chamados técnicos por problemas de configuração despencarem, felizmente. Tivemos também uma aceleração do processo de manutenção. Quando compramos um novo PC, ou quando um antigo vai para a manutenção, nós conseguimos realizar uma nova instalação de Linux nele em 20 minutos. Para isso, usamos um repositório de imagens de sistemas, que têm uma rapidíssima aplicação nas máquinas. Como o perfil dos usuários está no servidor, nenhum dado é perdido, e a máquina está sempre atualizada. A única desvantagem é que existe um certo “choque” inicial por parte dos usuários, devido ao visual e comportamento um pouco diferente. Um caso emblemático foi o da tecla [Print Screen] , que esquecemos de configurar para tirar uma “foto” da tela. Refizemos nossa imagem de instalação, e o problema foi resolvido.
Existem planos de migrar mais alguma coisa para Software Livre? EM» Vamos migrar o software legado de consultas para um servidor Samba, e colocar os executáveis em um emulador de DOS. Um fator importante nos novos projetos é que eles já nascem em ambiente Linux. Só nascem em ambiente proprietário se não houver nada semelhante em ambiente aberto, o que eu até hoje não presenciei.
Os usuários passaram por algum tipo de treinamento? EM» Não nos preocupamos em tentar imitar uma interface Windows, pois o KDE e o OpenOffice.org já oferecem um visual bastante intuitivo, e foram sendo absorvidos aos poucos. Por isso, realizamos somente o treinamento dos funcionários no sistema de gestão. LM»
LM» Quanto foi investido na migração?
E qual foi o retorno gerado? EM» O investimento total foi da ordem de R$ 600 mil, e esperamos um retorno de 17% ao ano, dentro de cinco anos. Isso, fora os ganhos indiretos e intangíveis. Para exemplificar esse tipo de ganho, imagine um hóspede que faça uma “reserva cruzada”, ou seja, uma reserva para o mesmo período em dois de nossos hotéis. Essa informação me diz duas coisas: (l) o cliente realmente quer ficar conosco, e (ll) minha ocupação prevista tem que levar em conta esse “cruzamento”. Posso ainda descobrir o padrão de consumo de um determinado hóspede e suprir seu frigobar com as coisas que ele mais aprecia.
LM»
“Com Linux nas estações, o que conseguimos é um controle muito maior…”
criar soluções de Software Livre), o desenvolvimento econômico e social será imenso. Embora os países desenvolvidos tenham avançado bastante nesse assunto, o que se reflete na alta qualidade das distribuições nascidas na Europa, como Suse e Mandriva, por exemplo, também existe neles uma demanda por integradores de Software Livre. LM» Mais alguma palavra para os leitores?
EM» Acho que o grande “barato” do Software Livre é que ele aplaina as oportunidades. Se uma grande corporação, com bilhões de dólares, tem acesso a uma determinada tecnologia livre, uma pequena empresa do interior do Brasil tem o mesmíssimo acesso. Logo, se a empresa brasileira for mais inteligente e ágil, veremos mais casos de Davis derrubando Golias. ■
Rede Plaza de Hotéis Hardware: ➧ Dois servidores Windows 2003: Intel Xeon, 4 GB de memória
LM» Na sua opinião, o que falta para o Li-
nux decolar no ambiente corporativo? Como CIO, eu percebo que falta um pouco de arrojo. É preferível confiar na solução de uma empresa que se comprometa a resolver um determinado problema do que confiar somente numa comunidade. O mundo de TI, com a desculpa de resolver o problema do negócio, passou a se esconder atrás de grandes fabricantes de soluções, ao invés de inovar e encontrar a melhor solução específica para seu negócio. É quase um paradigma. É impraticável inovar com soluções de prateleira, pré-fabricadas, de uma outra empresa, que vende milhões de cópias. Eu vejo uma oportunidade de negócios ainda bastante inexplorada na integração em Software Livre. Existe também um enorme espaço para as empresas que, além de integrar soluções, aprimorem-nas e contribuam com a comunidade, conseqüentemente aumentando a participação do Software Livre no mercado. Mas para esse segundo nicho crescer, devemos mudar nossa mentalidade. Precisamos enxergar a oportunidade de negócio como um todo, e não como uma série de partes individuais desconectadas. Especialmente nos países em desenvolvimento, há uma grande oportunidade de mudar esse quadro. Existe um “trem” que está passando e não cobra passagem. Se os países embarcarem nesse trem (de EM»
➧ Servidor de arquivos: Intel Xeon, 1 GB de memória. Controladoras de disco com 256 MB de cache ➧ Servidor de banco de dados: Intel Xeon, 2 GB de memória ➧ Servidor web e de email: Pentium 4 HT, 512 MB de memória ➧ Firewall, proxy e gateway VPN: Pentium 4 HT ➧ Servidor de gerenciamento: Pentium 3 750 MHz, 384 MB de memória ➧ Servidor de TEF: Pentium 3, 1.0 GHz ➧ 60 estações corporativas e 120 nos hotéis: Intel Celeron D, 256 MB de memória Software: ➧ Sistemas operacionais: Linux Mandriva 2005 LE e Mandrake 10.1 (em migração) ➧ Banco de dados: Oracle 9.2.7 ➧ Sistema de arquivos: OpenAFS 1.4.7 ➧ Firewall: Iptables ➧ Proxy: Squid ➧ Serviço de diretório: OpenLDAP ➧ Monitoramento e gerenciamento de rede: Nagios 2.5 e SquidGuard Migração: ➧ Tempo: Dez meses, no total ➧ Equipe: Seis pessoas para desenvolvimento e implantação ➧ Investimento: R$ 600.000,00 ➧ Retorno: Em cinco anos, 17% ao ano
31
Linux Magazine #24 | Outubro de 2006
© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).
Do choque à aceitação: o impacto dos padrões abertos nas empresas
CORPORATE
Cezar Taurion O
impacto do Linux e do código aberto na indústria de software foi bastante significativo. Para muitas empresas, este fenômeno tem sido extremamente positivo, abrindo muitas e até inesperadas oportunidades. Para outras, a reação foi totalmente negativa. E eu justamente estava pensando sobre como algumas empresas reagiram de forma tão emocional ao serem confrontadas com novas ameaças aos seus modelos de negócios, quando me lembrei de um livro que havia lido há muitos anos, intitulado “On Death and Dying”, da médica Elisabeth Kübler-Ross.
O mercado atual já
entende o código aberto. Os apelos ideológicos e emocionais que fizeram parte do início desse movimento deram lugar a uma visão mais realista e pragmática.
Adaptando as reações das empresas no enfrentamento de quase catástrofes às das pessoas frente às perspectivas da morte, observamos que as reações são muito semelhantes. Os estágios das pessoas frente à perspectiva da morte são: primeiro o choque e a negação, depois vêm raiva, barganha, depressão e, finalmente, a aceitação. Vamos olhar a reação de algumas empresas frente ao movimento do Linux e do código aberto. Primeiro foi o choque e a negação. Vimos no início declarações de executivos dizendo que o Linux e o código aberto não eram movimentos consistentes e sólidos, e que em breve seria apenas mais uma moda que ficaria para trás. A reação foi de negar a existência do movimento do código aberto ou pelo menos ignorá-lo. Exatamente como as pessoas reagem: não acreditam no diagnóstico e negam-se a acreditar que exista algo errado com elas. Depois vem a raiva. As pessoas se mostram inconformadas e se perguntam “por que comigo?”. No mundo corporativo, a reação é similar. Vimos as empresas reagindo de forma emocional, atacando o movimento do Linux e código aberto com intensidade. É o momento
de empregar a técnica do FUD (Fear, Uncertainty and Doubt – medo, incerteza e dúvida), inclusive criando sites e campanhas de marketing que tentam mostrar as desvantagens do novo inimigo. Vem o momento da barganha. Acreditamos que promessas podem trazer a cura. “Se eu ficar curado, juro que...”. Na nossa analogia, surgiram as iniciativas como lançamento de versões proprietárias mais baratas, que em princípio poderiam ser alternativas às opções de código aberto. A depressão vem a seguir. As pessoas perdem interesse pela vida. Claro que isto não aconteceu na indústria de software, mas lemos na mídia extratos (provavelmente não autorizados) de emails e atas de reuniões em que o fenômeno do código aberto já era visto como algo que chegou para ficar. E o Linux e o código aberto já aparecem nos relatórios para acionistas, nos itens relacionados com riscos para o negócio. A última etapa é a aceitação. Se não posso lutar contra, melhor conviver da melhor forma. Começamos a ver esses sinais com algumas iniciativas apoiando projetos de código aberto, participação em eventos focados em Linux e assim por diante. O mercado atual já entende o código aberto. Os apelos ideológicos e emocionais que fizeram parte do início desse movimento deram lugar a uma visão mais realista e pragmática. Os exemplos aparecem em todos os lugares. Linux como suporte à infra-estrutura (servidor de email, firewall, servidor de impressão e outros) já é lugar comum. Sua aplicação em sistemas departamentais e de missão crítica já começa a fazer parte do portfólio de muitas empresas no Brasil e no mundo. Em sistemas embarcados, desponta como o ambiente operacional que mais cresce em termos de base instalada. E a última fronteira, o desktop, também começa a ser populado por exemplos bem sucedidos. Kübler-Ross, em seu livro, desafiou uma cultura determinada a varrer a morte para debaixo do tapete e escondêla ali. O Linux e o código aberto desafiaram o tradicional modelo de software proprietário e mostraram que não devemos temê-lo, mas, ao contrário, nos abriram novas perspectivas para criação e uso de software. ■
O autor Cezar Taurion é Gerente de Novas Tecnologias Aplicadas da IBM.
32
http://www.linuxmagazine.com.br
© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).
© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).
Linux no despertar da era virtual
Vários em um CAPA
A virtualização pode economizar tempo, dinheiro e trabalho, mas é necessário usar a ferramenta certa para a tarefa. por Wilhelm Meier e Torsten Kockler
34
http://www.linuxmagazine.com.br
© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).
Virtualização | CAPA
C
om certeza você pode usar seus ciclos de CPU para buscar formas de vida extraterrestres, como demonstrou o projeto SETI@Home, mas isso não é tudo. Quando um computador é incapaz de explorar todo o potencial de uma CPU moderna, você pode deixar vários computadores tentarem. Múltiplos servidores virtuais num pequeno número de máquinas físicas compõem uma solução para melhorar o uso dos recursos de hardware, ao mesmo tempo consolidando o panorama do sistema. O tema de capa deste mês é a virtualização no Linux. Apresentaremos o popular monitor de máquinas virtuais Xen, e examinaremos também a ferramenta alternativa de virtualização Vserver. Por último, mostraremos um exemplo de virtualização no mundo real com o VMware ESX Server. Virtualização é uma das palavras em voga atualmente, apesar de a idéia não ser exatamente nova. Desde a introdução da linguagem de programação Java, a maioria das pessoas usa pelo menos uma máquina virtual. E talvez alguns leitores se lembrem do sistema UCSD Pascal p, uma das primeiras máquinas virtuais para Pascal. A virtualização na camada do sistema operacional data de um bom tempo atrás. A primeira máquina virtual foi o VM/ CMS da IBM, do final da década de 1960. E essa tecnologia ainda é usada atualmente: com o nome de z/VM, ela suporta o uso eficiente do Linux nos servidores IBM zSeries.
Máquinas virtuais
Uma máquina virtual normalmente emula um ambiente de execução. Isso é, ela emula a interface com esse ambiente. (Diferentemente da emulação, a simulação refletiria todos os estados internos do ambiente ao mesmo tempo). Na linguagem de programação Java, fala-se sobre a Máquina Virtual Java (JVM, na sigla em inglês), uma emulação de uma máquina hipotética baseada em especificações estritas [1]. Os estados internos não são realmente importantes para o usuário. A JVM funciona como um processador virtual dentro de um ambiente virtual de execução. Esse tipo de emulação também é possível num sistema computacional completo. A tarefa normalmente não é gerenciada pelo hardware, mas requer um componente de hardware especial para esse suporte – um tipo de sistema operacional rudimentar conhecido como Monitor de Máquina Virtual (VMM, na sigla
Debian
FreeBSD
Gentoo
Kernel Linux
Kernel FreeBSD
Kernel Linux
Monitor de Máquina Virtual (VMM)
Hardware Figura 1 A máquina virtual com um Monitor de Máquina Virtual. O VMware ESX é um exemplo prático disso.
Debian
Kernel Linux
FreeBSD
Gentoo
Kernel FreeBSD
VMM Kernel Linux
Hardware Figura 2 Máquina virtual com um sistema operacional hospedeiro completo: é assim que o VirtualPC da Microsoft funciona, por exemplo.
em inglês) ou hypervisor (figura 1). Entretanto, o hardware, principalmente a CPU, deve satisfazer alguns requisitos [2]. O VMware [3] e o VirtualPC ou VirtualServer [4] suportam esse tipo de virtualização na arquitetura x86. Todavia, os processadores Intel e AMD não oferecem tudo que é necessário para suportar a virtualização de forma eficiente [2]. Para isso, cada instrução de máquina que permite acesso aos recursos do sistema hospedeiro precisaria acionar uma interrupção de software, a menos que ele esteja rodando em um dos modos privilegiados do processador [5]. As CPUs Vanderpool [6], da Intel, e Pacifica [7], da AMD, serão os primeiros processadores a suportar esse recurso de forma eficiente. Hoje em dia, produtos como o VMware e o VirtualPC contornam esse problema de formas que podem afetar consideravelmente o desempenho. O Xen [8] é outra técnica de hypervisor que requer modificações no sistema operacional hóspede sem uma tecnologia Vanderpool ou Pacifica. O Xen utiliza uma técnica conhecida como para-virtualização, em contraste com a virtualização total usada pelo VMware ou o VirtualPC. Falaremos mais sobre o Xen e a para-virtualização mais adiante nesta edição. As virtualizações completa e parcial oferecem um ambiente de execução completo exatamente como um sistema computacional físico. É por isso que se faz necessário instalar um kernel de sistema operacional independente na máquina virtual, embora esse não tenha que ser o mesmo kernel usado pelo sistema hospedeiro. Os kernels dos sistemas hospedeiro e hóspede podem ser idênticos. À primeira vista, parece não fazer muito sentido desviar-se através da máquina virtual. Afinal, o monitor de máquina virtual simplesmente provê o mesmo ambiente de execução que o sistema hospedeiro oferece. Mas, se olharmos mais de perto, veremos por que a virtualização faz sentido para muitos ambientes. Por exemplo, talvez queiramos consolidar vários sistemas computacionais físicos em um único sistema poderoso para reduzir custos e esforço de administração. Olhando mais de perto, obviamente é muito importante saber o que se está tentando com a virtualização. Os fatores a se levar em conta são desempenho, segurança, custo e complexidade. Existe uma visão geral das várias abordagens de virtualização em [9].
35
Linux Magazine #24 | Outubro de 2006
© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).
CAPA | Virtualização
Definindo objetivos
Se a idéia for oferecer ambientes de execução virtuais homogêneos, mas separados, a virtualização completa é uma boa solução. Mesmo que você tenha sistemas hospedeiros diferentes, as máquinas virtuais ainda podem ser configuradas identicamente. Isso acrescenta a possibilidade de alocar sistemas hóspedes arbitrariamente, ou até dinamicamente, dentro de um conjunto de sistemas físicos. Ao mesmo tempo, o supercomprometimento, ou seja, o planejamento múltiplo de recursos físicos nas máquinas virtuais, pode ajudar a economizar. Obviamente, isso supõe o uso de perfis de carga balanceados. Picos de uso em múltiplas máquinas virtuais não podem ocorrer num mesmo momento. O sistema hospedeiro fica completamente desvinculado de seus hóspedes, assim como os hóspedes entre si, do ponto de vista estrutural. Isso é absolutamente importante para o aspecto da segurança. Todos os sistemas usam a mesma CPU, mas não faz diferença se o sistema hospedeiro for um monitor de máquina virtual separado – como é o caso com o VMware ESX – no qual Linux, FreeBSD e Windows® podem rodar como sistemas hóspedes, ou se a máquina virtual precisar de um sistema hóspede completo, como o VirtualPC da Microsoft (figura 2). O segundo cenário é bastante complexo, pois acrescenta mais um componente de software para o gerenciamento do sistema hóspede no topo do componente de virtualização. O desempenho da CPU em instruções de máquina não privilegiadas numa máquina virtual é teoricamente idêntico ao do ambiente nativo. Porém, a safra atual de CPUs Intel e AMD necessitam de ajustes que afetam o desempenho. Assim, a performance da periferia virtual pode ser muito diferente. Em cada caso, será necessário verificar se a virtualização realmente ajudará a atingir os objetivos.
Servidores virtuais
Se os requisitos não obrigarem à virtualização completa, e se os kernels dos sistemas operacionais hóspede e hospedeiro puderem ser idênticos, as partições dos servidores virtuais ou sistemas operacionais podem ser uma opção. Se o kernel de um sistema operacional tiver a capacidade de alocar processos, e dividir o sistema de arquivos e todos os outros recursos de forma que os processos nas diferentes partições não influenciem uns aos outros e os recursos não atinjam outras partições, as partições poderão ser operadas mais ou menos como servidores físicos separados. A aplicação desse princípio a um sistema Linux ou Unix parece abrir vetores que antes eram imperfeitos ou dificílimos de se alcançar (figura 3). As vantagens do particionamento são óbvias: menor latência e desperdício em comparação com máquinas virtuais, onde múltiplos kernels rodam em paralelo ou numa hierarquia, e onde os dados são colocados em vários buffers e copiados repetidamente. Assim como em máquinas virtuais, o perfil de carga dos serviços e aplicativos rodando nas partições deve ser levado em conta. A redução de desempenho em comparação com um ambiente nativo pode ser irrisória, mas não se pode ignorar o planejamento da capacidade, e há limites para o supercomprometimento. Se as threads não estiverem encapsuladas somente em processos tradicionais, mas também associadas a uma partição única, os processos de root da partição A não podem ver nem influenciar os da partição B. O mesmo se aplica ao sistema de arquivos. Se a partição A receber exclusivamente uma subárvore no diretório /A, e a partição B no diretório /B, as permissões para o onipotente usuário root do Unix são gentilmente canalizadas para uma partição única. É claro que todos os outros recursos, como interfaces de rede, precisam ser alocados de forma semelhante. O acesso direto ao hardware tem que ser excluído, e o acesso a /dev/kmem ou /dev/sda deve ser restrito aos processos do usuário root em uma partição específica.
Projetos
Figura 3 Particionamento do sistema operacional. Essa é a tecnologia usada pelo Linux VServer, OpenVZ, jails do FreeBSD e zonas do Solaris.
Uma implementação bastante inicial desse projeto pode ser encontrada no conceito de jails (prisões), introduzido pelo FreeBSD [10]. As jails acrescentam o particionamento do espaço do processo e da infra-estrutura de rede ao conceito familiar do Unix/Linux de chroot jails. Processos privilegiados num ambiente de jail não conseguem mais realizar ações que afetem o sistema todo. Por exemplo, é impossível carregar ou descarregar módulos do kernel, montar sistemas de arquivos, criar arquivos de dispositivo ou reiniciar o sistema de dentro de um ambiente de jail. O Linux VServer [11] e o OpenVZ [12], assim como a variante comercial Virtuozzo [13], que também pode ser utilizada para o Microsoft Windows, estão disponíveis para o kernel Linux. O Solaris 10 e posteriores, da Sun, dispõem de um produto tecnicamente comparável que usa contêineres ou zonas [14], e isso naturalmente também está disponível no OpenSolaris [15]. Basicamente, as mesmas restrições das jails do FreeBSD se aplicam às zonas do OpenSolaris. No Linux, o Linux VServer e o OpenVZ usam soluções técnicas diferentes, que se refletem em diferentes conjuntos de patches para o kernel. As ferramentas para espaço de usuário também são diferentes. No momento da escrita deste artigo, nem o Linux VServer nem o OpenVZ faziam parte do kernel Linux oficial, embo-
36
http://www.linuxmagazine.com.br
© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).
Virtualização | CAPA
ra as modificações introduzidas por esses projetos já estejam bastante avançadas e estáveis. Ambos os projetos buscam a aprovação dos desenvolvedores do kernel, e seria legal ver alguns requisitos básicos para suporte à virtualização serem incluídos em seu código.
[1] JVM-Spec (em inglês): http://java.sun.com/docs/books/vmspec/ 2nd-edition/html/VMSpecTOC.doc.html [2] Popek, G.J; Goldberg, R.P; “Formal requirements for virtualizable third generation architectures”, Communications of the ACM, Vol. 17, Julho/1974 (em inglês):
Linux VServer
O projeto Linux VServer é baseado nos mecanismos oferecidos pelo kernel Linux atual, como recursos POSIX para processos [16], namespaces, limites de recursos e atributos estendidos do sistema de arquivos. Entretanto, isso não é suficiente para cumprir as exigências. Os patches do VServer acrescentam contextos de processo, e suportam a vinculação de processos a endereços de rede. Além dessas extensões críticas de funcionalidade básica, os patches adicionam restrições a permissões para todos os processos dentro de um contexto, baseados em recursos POSIX, assim como a possibilidade de associar arquivos a um contexto específico. Aplicações práticas precisam lidar com o agendamento e contabilização dirigidos ao contexto, e o suporte a muitas dessas tarefas já está disponível. Além disso, o util-vserver fornece um conjunto bastante útil de ferramentas de espaço de usuário.
http://portal.acm.org/citation.cfm?id=361011.361073 [3] VMware: http://www.vmware.com [4] Microsoft Virtual Server e Virtual PC (em inglês): http://www.microsoft.com/windows/virtualpc/ default.mspx e http://www.microsoft.com/ windowsserversystem/virtualserver/default.mspx [5] Robin, J.S.; Irvine, C.E.; “Analysis of the Intel Pentium’s Ability to Support a Secure Virtual Machine Monitor” (em inglês):
http://www.usenix.org/publications/library/ proceedings/sec2000/full_papers/robin/robin.pdf [6] Tecnologias de virtualização da Intel (em inglês): http://www.intel.com/technology/computing/vptech/ [7] AMD Pacifica (em inglês): http://www.amdboard.com/pacifica.html [8] Xen (em inglês): http://www.cl.cam.ac.uk/Research/SRG/netos/xen/
OpenVZ
Apesar de o Virtuozzo da SWsoft já estar no mercado há algum tempo, sua derivação de código aberto, o OpenVZ, só foi lançado há poucos meses. O OpenVZ fornece modificações ao kernel Linux, adicionando algumas ferramentas de espaço do usuário. Assim como o Linux VServer, o OpenVZ introduz contextos para isolar processos. A virtualização de rede não se baseia em “apelidos” de interfaces, o que significa que cada SV (servidor virtual) pode usar seu próprio firewall. O controle dos recursos usados por um SV é baseado nos user bean counters, que suportam um bom grau de granulosidade. Porém, o projeto atualmente não tem instrumentos para sincronizar os sistemas de arquivos do SV, como a quebra de links do copy-on-write (CoW) do Linux VServer.
Zonas do Solaris
Mais Informações
As zonas de virtualização do Solaris são um componente do Solaris 10. A Sun tem ampla experiência com o particionamento de sistemas Unix de grande porte. O particionamento estático foi introduzido já em 1996, como uma opção nas máquinas E10000. Contudo, as partições eram praticamente autônomas, cada uma com seu próprio kernel de sistema operacional. O antecessor direto do componente atual foi o Resource Manager, introduzido no Solaris 9. Isso permitiu que os administradores vinculassem processos a conjuntos, e que controlassem o consumo dos recursos desses conjuntos. Isso não oferecia aos administradores a possibilidade de isolar os ambientes de execução, mas esse recurso apareceu depois, com a introdução das zonas. A tecnologia por baixo das zonas do Solaris é bastante semelhante à usada pelo Linux VServer e o OpenVZ, e baseia-se no particionamento do sistema operacional. Há ferramentas poderosas para instalar e gerenciar as zonas. Montagens em loopback podem ser usadas para sincronizar as zonas, apesar de isso não ser tão eficiente quanto a quebra de links do CoW ou o UnionFS [17]. ■
[9] Visão geral de máquinas virtuais (em inglês): http://en.wikipedia.org/wiki/ Comparison_of_virtual_machines [10] FreeBSD jails (em inglês): http://www.awprofessional.com/articles/ article.asp?p=366888&seqNum=9 ] e http://docs.freebsd.org/44doc/papers/jail/jail.html [11] Linux VServer (em inglês): http://linux-vserver.org/ [12] OpenVZ (em inglês): http://openvz.org/ [13] SW-Soft Virtuozzo (em inglês): http://www.virtuozzo.com/ [14] Contêineres do Solaris 10 (em inglês): http://www.sun.com/software/solaris/utilization.jsp e http://www.usenix.org/events/lisa04/ tech/full_papers/price/price_html [15] Zonas do OpenSolaris (em inglês): http://www.opensolaris.org/os/community/zones/ [16] POSIX / IEEE 1003.1e and 1003.2c (retirado) (em inglês): http://wt.xpilot.org/publications/posix.1e/ [17] Homepage do UnionFS (em inglês): http://www.fsl.cs.sunysb.edu/project-unionfs.html
Os autores Torsten Kockler é um assistente do Professor Wilhelm Meier, que leciona sistemas operacionais e linguagens de programação no Departamento de Ciência da Computação/Tecnologia de microssistemas da Universidade Técnica de Kaiserslautern, em Zweibrücken, Alemanha. O Professor Wilhelm Meier leciona sistemas operacionais e linguagens de programação no Departamento de Ciência da Computação/Tecnologia de microssistemas da Universidade Técnica de Kaiserslautern, em Zweibrücken, Alemanha.
37
Linux Magazine #24 | Outubro de 2006
© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).
CAPA
Jacopo Lorenzetti – www.sxc.hu
Para-virtualização no Linux com o Xen 3
Virtual, veloz e leve O sistema de virtualização Xen está rapidamente tornando-se um recurso padrão no Linux corporativo. Vamos conferir os recursos da última versão do Xen. por Kurt Garloff
A
aguardada versão 3 do Xen finalmente foi liberada no ano passado. O Xen é patrocinado pela Universidade de Cambridge, Inglaterra, e vem se tornando uma das principais soluções de virtualização para Linux. Personagens globais do mundo do Linux, incluindo Novell, Red Hat, HP, IBM, Intel e AMD, já mostraram seu apoio ao Xen. Graças a seu excelente
desempenho e baixo custo, o monitor de máquinas virtuais Xen talvez seja o catalisador que estávamos esperando para melhorar a virtualização no Linux. A recente evolução da computação virtual gira em torno do problema de fornecer um ambiente virtualizado com a menor exigência possível do sistema. A chamada virtualização completa envolve
o mapeamento de chips de computador, como o processador e o controlador do teclado, em software. A virtualização completa torna a máquina virtual independente de sua infra-estrutura física, e portanto é muito flexível. Porém, a estrutura necessária para mantê-la acrescenta uma complexidade que afeta significativamente o desempenho.
dom0
Máquinas Virtuais Linux Aplicação de gerenciamento de MV
Serviços Linux
Serviços NetWare
Serviço / SO hóspede
Serviço / SO hóspede
Agente CIMOM
interno / externo
Driver Virtual
Drivers físicos Caminho de Gerenciamento
Driver Físico
Sistema de E/S
Caminho de E/S
Sistema de E/S
Kernel Linux (modificado)
Driver Físico
Kernel Linux (mod.)
Driver Virtual
Gerenciamento / OS hospedeiro
Kernel NetWare (modificado)
Caminho de E/S
Hypervisor (XEN) Caminho de E/S Caminho de E/S
Gerenciamento de CPU e memória Caminho de E/S
Dispositivos de E/S e plataformas (Disco, LAN, USB, BMC, IPMI, ACPI, etc.)
Caminho de E/S
Caminho de E/S
Hardware Físico
Figura 1 O hypervisor do Xen virtualiza a CPU e a memória. Enquanto o domínio privilegiado 0 pode acessar o hardware, todos os outros domínios são restritos aos discos e à rede virtuais.
38
http://www.linuxmagazine.com.br
© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).
Xen | CAPA
Quadro 1: Novos recursos do Xen 3 O objetivo da virtualização completa é emular a CPU, que interpreta todas Alguns dos novos recursos incluídos no Xen 3 são: as instruções de máquina. Ainda que ➧ Suporte a máquinas SMP virtuais. Apesar de o Xen já oferecer suporte a múltise emulem somente máquinas com a plos processadores há algum tempo, os domínios antes ficavam restritos a uma únimesma arquitetura de CPU – em ouca CPU. Na versão 3, isso mudou. É possível até mudar o número de CPUs virtuais em temtras palavras, mesmo que o código de po de execução (supondo que o sistema operacional suporte isso, como o Linux). máquina possa rodar nativamente –, o ➧ Suporte a ACPI. No Xen 2, o hypervisor oferecia um suporte bastante rudimenemulador ainda precisará interceptar tar a ACPI, que bastava para lidar com a maioria das tabelas de roteamento de qualquer tentativa de acesso ao hardware IRQ. No Xen 3, o dom0 tem acesso à maioria das funcionalidades ACPI. para convencer o sistema operacional ➧ Melhor suporte a hardware. Alguns problemas, mais especificamente com o suporte a AGP e DRM da máquina virtual de que ele dispõe (gráficos 3D) no Linux foram eliminados no último 2.0.x e nas versões de desenvolvimento do 3.0. de controle total e irrestrito. Os emuladores que controlam seus hóspedes ➧ Suporte a PAE36. O Xen 2 ficava restrito ao espaço de endereçamento normal de 32 bits (4 dessa forma geralmente são chamados GB) em máquinas x86. A extensão PAE36 agora permite acessar até 64 GB; obviamente, suponde hypervisors. do que tanto o Xen quanto o kernel tenham sido compilados com o suporte a essa extensão. Uma variante desse modelo chama➧ Suporte a x86-64. A variante de 64 bits da arquitetura x86 elimina todas as resse para-virtualização. A para-virtualitrições associadas ao espaço de endereçamento de 32 bits, e acrescenta diverzação permite que máquinas virtuais sas otimizações. O Xen 3 agora suporta sistemas operacionais de 64 bits. específicas comuniquem-se diretamen➧ Mais arquiteturas. O suporte a IA64 (Itanium) foi integrado ao Xen te com o hardware. Em vez de todas 3, e o suporte à arquitetura Power vem em breve. as máquinas virtuais comunicarem-se ➧ Uso de novas tecnologias de processadores. Há uma nova geração de CPUs, com o hospedeiro, a máquina privilecom extensões especiais chamadas Vanderpool (Intel) e Pacifica (AMD). Essas exgiada gerencia a interação e recebe as tensões facilitam e aceleram a implementação da virtualização completa, o que perchamadas passadas pelos outros sistemite que o Xen 3 suporte sistemas operacionais não para-virtualizados. mas virtuais. O Xen é um sistema popular de virtualização que usa o modelo de paravirtualização. Apesar de as versões 1.x o Xen com gigabit começar a cansar. utilizarem seus próprios drivers de dis- De acordo com o projeto Xen, ele fa- A abordagem mais fácil para conhecer positivos, a versão 2, do segundo semes- cilmente supera o VMware e o User- o Xen é converter uma instalação Linux tre de 2004, concentrou-se em manter Mode Linux [1]. existente em um dom0 do Xen, para notar o hypervisor com o menor tamanho e As versões 2 e posteriores possuem a diferença entre o dom0 e um sistema maior segurança possíveis. O acesso ao a capacidade de migrar máquinas vir- normal, e resolver eventuais problemas. hardware fica restrito a domínios pri- tuais (exceto pelo dom0) de uma má- O segundo passo seria instalar mais dovilegiados. O primeiro domínio a ser quina física para outra. Quando uma mínios para realizar outras tarefas, ou iniciado, o domínio 0, possui privilégios máquina virtual é migrada, seu con- migrar serviços que antes rodavam no estendidos. Mais especificamente, ele teúdo de memória é transferido pela dom0 para seus próprios domínios. pode configurar, iniciar e parar outras rede – sem que seja preciso desligar a O primeiro passo do processo de máquinas virtuais. O domínio 0 é ini- máquina, exceto quando o processo conversão é instalar o hypervisor e as ciado imediatamente após o hypervisor, termina, para copiar as últimas páginas ferramentas que o acompanham. O que não consegue fazer muita coisa sem de memória que foram alteradas. Os procedimento exato depende da sua disele. Diferentemente do domínio 0, ou desenvolvedores do Xen já demonstra- tribuição. Os pacotes para o Suse Linux dom0, as máquinas sem privilégios são ram esse recurso com servidores web 10.0 chamam-se xen, kernel-xen e xen-tools, referidas como domU, de unprivileged em uso intenso, e até com streaming por exemplo. Talvez seja preciso instalar de vídeo. As interrupções típicas são mais alguns pacotes do Xen. Por exem(sem privilégios) (figura 1). O Xen demonstra uma impressio- de uma magnitude aproximada de um plo, o Suse armazena a documentação nante mudança de velocidade. Embora décimo de segundo. num pacote separado. E definitivamente O lançamento da versão 3 do Xen, recomenda-se lê-la. a maioria das soluções de virtualiza➧ ção pareçam convincentes quando se em dezembro de 2005, foi um grande pede que realizem tarefas computa- marco. Além dos vários novos recurQuadro 2: Saída do comando xm cionalmente exigentes, a verdadeira sos da versão 3 (veja o quadro 1), a inqualidade de uma máquina virtual é terface entre os sistemas operacionais root @tpkurt:~ [0]# xm list revelada pela forma como ela lida com para-virtualizados e o hypervisor foi Name ID Mem(MiB) VCPUs State Time(s) aplicações que fazem uso intensivo de congelada para garantir que, no futuro, chamadas de sistema, normalmente de todo o trabalho dedicado à para-virtuDomain-0 0 364 1 r----- 421.3 entrada e saída no disco rígido ou na alização do kernel de um sistema operede. O Xen obtém as melhores notas racional precise ser feito apenas uma iSCSI0 1 128 2 ------ 111.5 nesse quesito. O aumento de esforço vez. Isso significa que podemos esperar Além do domínio 0, pode-se ver que uma segunda máquipara compilar um kernel foi de apenas que mais sistemas operacionais sejam na virtual, chamada iSCSI0, está rodando. Ela acessa 128 2%, e ainda ficou abaixo de 10% no portados para a arquitetura virtual do MB de RAM, junto com duas CPUs virtuais. A máquina virtuWebbench por gigabit ethernet. Seria Xen 3 num futuro próximo, incluindo al consumiu 111,5 s de ciclos de CPU até o momento. necessário diminuir a MTU para ver o Netware, por exemplo.
Conhecendo o Xen
39
Linux Magazine #24 | Outubro de 2006
© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).
CAPA | Xen
Se os pacotes forem anteriores a dezembro de 2005, você certamente precisará fazer atualizações. Na corrida para o lançamento oficial da versão 3.0, várias falhas foram corrigidas, aumentando muito a estabilidade do Xen. Após instalar os pacotes, é bom adicionar uma entrada do carregador de inicialização para o Xen. Isso permite um sistema com dual boot, onde se pode escolher entrar na máquina com o kernel nativo ou carregar o hypervisor do Xen com o kernel para-virtualizado no dom0. A entrada do GRUB deve ser mais ou menos assim:
Figura 2
ela será toda conferida ao dom0. lapic causar problemas, mas ainda há uns permite que se ative um controlador poucos drivers que não funcionarão de interrupção APIC específico, caso no Xen, incluindo aqueles para várias a BIOS o tenha desabilitado; isso pode placas wireless, assim como os drivers 3D proprietários da Nvidia e ATI – os resolver problemas de interrupção. Isso termina a contagem regressiva: drivers livres funcionam. Além disso, agora, o computador pode carregar o pode-se esperar problemas com placas hypervisor e o dom0 ao invés do kernel ISA que usam transferência DMA. nativo. Para ser sincero, esse evento é Se você tiver problemas com algum decepcionantemente comum: o processo driver de hardware, na melhor das hide inicialização parece totalmente nor- póteses o driver não funcionará – na mal, e o sistema Linux parece inaltera- pior, o kernel do dom0 travará. Se isso do à primeira vista. Mas olhando mais acontecer, a virtualização não podede perto, vê-se que o hypervisor mostra rá oferecer nenhuma ajuda, já que o algumas mensagens de inicialização. hypervisor é inútil sem um kernel no Se o seu distribuidor ativar uma tela dom0. Na verdade, o hypervisor nem title XEN de bootsplash, a tela será desabilitada tem seus próprios drivers de teclado e e você será presenteado com um am- monitor necessários para a depuração root (hdX,Y) da instalação. biente de modo texto em VGA. Se o seu sistema travar, o melhor a O motivo do modo texto é que o kernel /xen.gz PARAMS_XEN framebuffer VESA não funciona no fazer é desabilitar o driver responsável module /vmlinuz-xen PARAMS_KERNEL Xen. Como o hypervisor inicia o ker- – normalmente, o último driver a mostrar nel no modo protegido da CPU, o uma saída na tela. Os suspeitos normais module /initrd-xen kernel é incapaz de chamar as rotinas são os drivers 3D para o X11, e a forma do modo real da BIOS VGA para con- mais fácil de remediar isso é usar a opNesse exemplo, hdX,Y é a partição figurar a tela. ção 3 na linha de comando para iniciar com o diretório /boot, e PARAMS_KERNEL Existem alguns outros drivers de o Linux em modo texto. Lembre-se de representa os parâmetros normais do hardware que não funcionam no Xen. passar essa opção ao kernel, e não ao kernel que você passaria para o kernel O motivo geralmente é um mau ma- hypervisor. Para isso, deve-se sair do nativo. O Xen também aceita parâme- peamento de endereços físicos para en- menu gráfico no Xen, digitar [e] para tros: por exemplo, é possível especificar dereços de máquina. Em alguns casos, modificar a linha de comando do kernel, o driver, e não o hypervisor, lida com e então pressionar [b] para iniciar. dom0_mem=XXX para informar o tamanho da memória para o dom0 (em KB). Se você isso. Os drivers de dispositivos prograSe isso tudo funcionar, você agora já não especificar a alocação de memória, mados para ser portáveis não devem deve ter um sistema Linux rodando no dom0, e não deve ser muito diferente do sistema nativo. Observando mais atentamente, você verá que agora tem 50 MB de memória a menos do que o normal. O Xen reserva essa memória ao ser iniciado. Ao se iniciar o dom0 no Xen, os scripts de inicialização devem iniciar o Xend, o daemon que roda no dom0, e permitir que você controle as outras máquinas virtuais. Se o daemon estiver em execução, o usuário root pode usar a ferramenta xm para exibir as informações sobre as outras máquinas virtuais, iniciar novas máquinas, parar as já existentes, migrá-las, destruí-las, e assim por diante. O Xend também permite que se defina as alocações de memória para as máquinas virtuais, junto com sua prioridade na CPU. Para uma visão geral dos comandos básicos do xm, digite xm help; xm info dá informações sobre a versão do Xen; xm dmesg exibe as mensagens de inicialização do hypervisor; xm list é um comando que você usará com alguma freqüência: ele As interfaces (v)eth0 e vif0.X são conectadas internamente como um pipe. Os pacotes vindos dos mostra uma lista de máquinas virtuais domUs podem acessar tanto a rede externa (via peth0) quanto outros domínios. ativas e seu consumo de memória.
40
http://www.linuxmagazine.com.br
© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).
Xen | CAPA
Máquinas virtuais
A configuração do Xend fica guardada no arquivo /etc/xen/xend-config.sxp . As configurações de rede padrão nesse arquivo usam bridging, com uma bridge em dom0. A bridge xenbr0 simplesmente repassa os pacotes de rede que chegam por uma interface para todas as outras interfaces de rede. A configuração é dificultada pelo fato de o Xen renomear as interfaces de rede na inicialização. A interface eth0 vira peth0 ; os endereços de hardware (MAC) e IP são copiados para a interface veth0, que então é renomeada para eth0 . Internamente, veth0 é vinculada a vif0.0 , que se conecta à bridge, assim como faz a peth0 . Os pacotes vindos de aplicações no dom0 agora são roteados através da nova veth0 (virtual), e pela vif0.0 para a bridge xenbr0, e de lá para a interface física peth0 e a rede externa. Você deve estar se perguntando se existe algum motivo para essa configuração complicada. Assim que outros domínios são iniciados, suas interfaces virtuais apenas se conectam à bridge, o que lhes dá acesso tanto à rede física quanto ao dom0. A figura 2 mostra uma visão geral desse processo. O bridging é bastante complexo – mas pode-se configurar o Xen para usar roteamento e evitar que as interfaces de rede sejam renomeadas e recorram a um bridge. Isso também faz sentido se você utiliza uma interface de rede sem fio – não é possível enviar pacotes Ethernet através da bridge em pacotes sem fio, pois o formato é diferente. A figura 2 mostra outro domínio que iniciaremos em breve. Como o domínio inicia seu próprio kernel, precisa também de seu próprio sistema de arquivos, que também será inicializado virtualmente. Há algumas soluções para oferecer um sistema de arquivos para o domínio: ➧ Reutilize uma instalação pré-existente. Simplesmente instale o kernel para-virtualizado, que permitirá carregar os módulos do kernel respectivo; depois você pode inicializar com o Xen uma partição Linux pré-existente. ➧ Baixe uma imagem existente. Vá ao XenWiki se quiser imagens já feitas, ou acesse [2] para downloads.
➧ Use métodos de instalação es- xenbr0. A partição lógica /dev/VG_new/ pecíficos para a sua distribuição, LV_iSCSI1 é vinculada à máquina vircomo o módulo YaST para a ins- tual como o disco hda1. Os parâmetros talação do Xen. de inicialização passados para ela são ➧ Instale numa partição separada root= e a máquina virtual. O nome da ou num diretório que você pos- MV é iSCSI1. sa converter manualmente para Em vez de um dispositivo único uma instalação do Xen rodando de rede, poderíamos ter configurado kernel-xen . múltiplos dispositivos. O mesmo se Apenas uma máquina virtual deve aplica às partições do disco. Também acessar as imagens do sistema de ar- é possível emular um disco rígido inquivos em qualquer momento. Se mais teiro ao invés de apenas uma partição. máquinas montarem um sistema de Naturalmente, a partição usada para arquivos (sem que esse seja feito para esse fim deve conter uma tabela de clusters), os dados podem ser corrom- partições. Especificar file: permite pidos, exatamente como ocorreria com que se exportem arquivos com imamáquinas físicas. gens de sistemas de arquivos como Configurar as máquinas virtu- partições, ou arquivos com imagens ais é um processo simples (veja o de discos rígidos como discos virtuais, quadro 3 ). para a máquina virtual. No Xen, você encontra alguns arquiAo iniciar a máquina virtual, os vos de configuração de exemplo bem dispositivos no dom0 são ativados documentados, no diretório /etc/xen. por hotplugging. O dom0 recebe um No arquivo de exemplo, primeiro o evento por cada rede e disco descokernel é configurado, seguido de um bertos e ativados. O evento é parte do initrd (opcional). Esses arquivos são subsistema de back-end do Xen, e usa carregados do sistema de arquivos do os mesmos nomes vif* que o kernel dom0 quando o domU é iniciado. Isso para a rede, e vbd* para o disco rígido. pode ser um problema, mas vamos O Udev então chama os scripts aprodiscutir isso em maior profundida- priados em /etc/xen/scripts. Depois de de mais adiante. A máquina virtual os scripts terminarem e o dispositivo receberá 128 MB de memória; uma aparecer no banco de dados Xenstore, interface virtual de rede será criada um evento de hotplug é disparado no com o endereço MAC especificado, domU para tornar o dispositivo visíe a interface será conectada à bridge vel, seguindo o mesmo procedimento
Quadro 3: Exemplo de configuração de um domínio Xen 01 # Kernel e initrd a serem carregados 02 kernel = “/boot/vmlinuz-2.6.13-15.8-xen” 03 ramdisk = “/boot/initrd-2.6.13-15.8-xen” 04 memory = 128 05 # Nome, CPUs virtuais, discos e rede virtuais 06 name = “iSCSI1” 07 #vcpus = 2 08 vif = [ ‘mac=aa:cc:10:00:00:a1, bridge=xenbr0’ ] 09 disk = [ ‘phy:VG_new/LV_iSCSI1,hda1,w’] 10 # Parâmetros a passar para a MV 11 dhcp = “dhcp” 12 hostname = “iSCSI1” 13 root = “/dev/hda1 ro” 14 # extra = “”
41
Linux Magazine #24 | Outubro de 2006
© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).
CAPA | Xen
usado para o hardware físico durante a inicialização. O hotplug é um dos entraves ao uso desimpedido do Xen. Distribuições mais antigas usam o velho mecanismo de hotplug ao invés do Udev. Nesses casos, o arquivo /etc/hotplug/xen-backend.agent é usado no lugar do /etc/udev/rules.d/40-xen. rules . Se o hotplug não estiver corretamente configurado, uma mensagem de erro pode ser mostrada. Mas tenha em mente que, se você usar a versão do Xen que veio com a sua distribuição, esse problema não deve ocorrer. Um xm create -c arquivo_de_ conf inicia a máquina virtual. A opção -c associa um console virtual à máquina virtual para você conseguir assistir à sua inicialização. Pressionar [Ctrl] + [ ] ] separa o terminal da MV, mas é possível reconectá-lo digitando xm console . O processo de inicialização provavelmente falhará com uma mensagem dizendo que não existe memória suficiente, pois o dom0 usa toda a memória disponível na inicialização. Você pode reduzir a alocação de memória para o dom0 ou mandar o Xend fazer isso automaticamente.
Use xm mem-set 0 XXX para o primeiro, e uma configuração de dom0min-mem em /etc/xen/xend-config. sxp para o segundo. Após transpor esse obstáculo, já deve ser possível inicializar o domU. Nas versões mais velhas do kernel Linux, um driver “balão” especial era usado para a manipulação de memória. O driver ocupava a memória conforme necessário, entregando ou devolvendo-a ao Xen. A memória era marcada como reservada no Linux. Os kernels 2.6 mais recentes usam uma infra-estrutura de hotplug de memória para que o free retorne um tamanho de memória diferente após uma operação de mem-set. Nesse estágio, faz sentido um tour pela ferramenta xm. Você pode parar, fazer becape e reiniciar a máquina virtual, modificar o tamanho e a prioridade da CPU, e várias outras coisas.
cíficos para o hardware ou o acesso ao relógio da CMOS (hwclock), está fadado a falhar. Na maioria dos casos, você pode simplesmente desativar os scripts. O acesso ao hardware não faz nenhum sentido, e a hora na máquina virtual é automaticamente sincronizada com o relógio físico. Para iniciar um ambiente gráfico, a solução mais fácil é iniciar o Xvnc ao invés de um servidor X normal. A seguinte entrada em /etc/X11/xdm/ Xservers cuidará disso: :0 ➥ ➥ ➥ ➥
local /usr/X11R6/bin/Xvnc -br -geometry 960x720 -depth 24 -rfbwait 120000 -rfbauth /root/.vnc/passwd -rfbport 5900 -httpd /usr/share/vnc/classes``
A entrada inicia um servidor X virtual com profundidade de cor de 24 bits e resolução de 960x720 pixels. O servidor escuta na porta 5900, e você pode usar um clienSe você seguiu os passos até aqui, te VNCviewer para conversar com agora já pode inicializar um domU ele. Por motivos de segurança, você do Xen em modo texto. Você notará deverá fornecer uma senha, pedida que alguns scripts do sistema falha- pelo vncpasswd. Mudar as entradas nos arquivos ram: qualquer tentativa de acesso direto ao hardware, como o carrega- correspondentes de configuração mento de módulos do kernel espe- permite que você use o KDM ou o GDM no lugar do XDM. A figura 3 mostra uma captura de tela de uma máquina virtual gráfica – essa máquina virtual é uma configuração gráfica mínima do Suse Linux 10.0 que usa o gerenciador de janelas openbox. Pode-se baixar uma imagem pré-compilada dessa configuração em [2]. A máquina é mantida mínima por um motivo: você pode usá-la como uma instalação básica e instalar por cima todos os pacotes que quiser.
Otimização do domU
Armazenamento e migração
Figura 3 Captura da tela de uma máquina virtual usando Xvnc. O usuário root está ativo e rodando o YaST online update para aplicar as últimas atualizações de segurança à máquina virtual.
A possibilidade de migrar uma máquina virtual de um hospedeiro físico para outro é um dos recursos mais úteis do Xen. Ele dá aos administradores a possibilidade de agendar a manutenção planejada do hardware, ou transferir a carga de uma máquina sobrecarregada, ou apenas mudar um serviço específico para uma nova máquina. Há outros usos possíveis em ambientes de tes-
42
http://www.linuxmagazine.com.br
© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).
Xen | CAPA
te e desenvolvimento, simulações res iSCSI com suporte à emulação de redes e clusters, ou ambientes de dispositivos de rede. de execução separados por motivos Usar dispositivos de dados de rede de segurança. (NBD, ou Network Block Devices) A máquina virtual carrega tudo é ainda mais simples. Digitar nbdembora junto com seu kernel, o que server 20001 ARQUIVO exporta o significa levar consigo o endereço IP arquivo (com uma imagem de sistee as configurações do kernel. Proces- ma de arquivos) para o nbd; a entrada sos ativos do servidor continuarão respectiva no cliente é: rodando (após uma breve interrupção) e continuarão a usar o mesmo disk = [ ‘nbd:IP 20001,hda1,w’ ] endereço IP. A máquina virtual precisa de acesO desempenho é bom o suficiente so a seu sistema de arquivos antes e se você tiver uma rede de 100 Mbps, depois da migração. Se a máquina como uma FastEthernet, por exemplo, não reside num disco RAM, será ne- e a migração leva poucos segundos cessário usar um sistema de arquivos numa Gigabit Ethernet. de rede ou um dispositivo de armazenamento de rede (NAS, ou Network Attached Storage). Você pode usar NFS como um sistema de arquivos O Xen 3 leva à virtualização em PCs a de rede. Em aplicações de servidor, o versatilidade antes restrita aos mainfraarmazenamento em rede geralmente mes. Durante a escrita deste artigo, a baseia-se em FibreChannel, ao qual, instalação da maioria das distribuições naturalmente, ambas as máquinas envolvia algumas alterações manuais. físicas precisam ter acesso. Mas conforme a integração progride, Uma solução de baixo custo é o todos nós podemos esperar uma explosão iSCSI. UNH e Enterprise Linux Tar- na virtualização, graças à flexibilidade get oferecem dois softwares servido- que ela oferece às aplicações. ■
Conclusões
Mais Informações [1] Benchmarks do Xen: http://www.cl.cam.ac.uk/ Research/SRG/netos/xen/ performance.html [2] Imagens para máquinas hóspedes: http://www.suse.de/~garloff/ linux/xen/images/ [3] Xen: http://www.cl.cam.ac.uk/ Research/SRG/netos/xen/ [4] Últimas notícias sobre o Xen em seu Wiki: http://wiki.xensource.com/
O autor O Linux atraiu a atenção de Kurt Garloff quando ele estava na universidade. Quando um driver SCSI que deveria funcionar não o fez, a carreira de Kurt como desenvolvedor do kernel começou. Após sua formatura no curso de Física, Kurt entrou na Suse Linux GmbH, e – depois de tirar o ano sabático para terminar seu doutorado em Eindhoven (Holanda) – ele agora é chefe dos laboratórios de Suse da Novell.
Os Thin Clients da ThinNetworks
Melhor relação custo benefício do mercado e funcionalidades exclusivas O TC-NET revoluciona o mercado de ThinClients ao apresentar um sistema operacional baseado em Linux e funcionalidades exclusivas, o TC-OS. Compatível com a maioria dos servidores de terminal existentes, essa solução agrega redução de custos de aquisição e atualização, facilidade de instalação e manutenção, maior estabilidade e confiabilidade, maior segurança, baixo consumo de energia e tamanho compacto.
10100101010 101010101010101010101
10100101010 101010101010101010101
1100110101100101101010001011
1100110101100101101010001011
101001010101010101010
O sistema Operacional TC-OS Recursos de administração centralizados; Servidor VNC para permitir o controle remoto de cada ThinClient; Disponível com Flash (64mb ou 128mb) ou na versão PXE para uso com LTSP; Clientes para CITRIX-ICA, Microsoft RDP 5.1, XDMCP e VNC e Tarantella; Diversos aplicativos para uso local (navegador, Java, Skype, protetor de| Outubro tela edeoutros). Linux Magazine #24 2006 © Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).
Fone: (61) 3366-1333 Skype: ThinNetworks vendas@thinnet.com.br 43 www.thinnetworks.com.br
VServer
Virtualização de alta performance com o VServer
Baixo custo CAPA
O projeto VServer oferece uma alternativa de virtualização segura e altamente eficiente. por Wilhelm Meier e Torsten Kockler
Hannah Boettcher – www.sxc.hu
S
istemas de para-virtualização como o VServer geralmente é usado em serviços apropriados, enquanto o util-vserver cono Xen habitam um canto popular da de hospedagem de websites, embora seus tém o pacote de ferramentas de usuário paisagem da virtualização, mas outras benefícios o levem a ser aplicado muitas para o Gentoo. Note que há outro pacote tecnologias também estão crescendo. O proje- vezes nas redes corporativas. Este artigo não relacionado, mas com um nome pareto Linux-VServer representa uma abordagem descreve como configurar um sistema VSer- cido: vserver-utils [3]. Esse pacote ainda diferente para a virtualização. O VServer [1] ver. Também mostraremos uma solução está sendo intensamente desenvolvido e e projetos semelhantes utilizam uma técni- alternativa de virtualização semelhante ao alterado, e só funcionará com versões de desenvolvimento do VServer. ca conhecida como isolamento no nível do VServer, chamada OpenVZ [2]. Para instalar os pacotes no Gentoo, kernel. Essa técnica oferece ao sistema virtual um conjunto isolado de recursos do sistema simplesmente faça: físico. Outros esquemas de virtualização geralmente exigem um kernel separado e espa- O VServer funciona como parte do ker- emerge vserver-sources util-vserver ços de memória e disco separados para cada nel Linux. Infelizmente, os benefícios rc-update add vserver default sistema virtual. Com o VServer, por outro do VServer atualmente ainda não estão lado, a virtualização ocorre na interface do disponíveis no kernel “oficial”. Apesar de O último comando inicia os servidoprocesso virtual com o kernel. Todos os siste- o kernel padrão ter todos os ingredientes res virtuais na inicialização. Depois, você mas virtuais compartilham o mesmo kernel, necessários para suportar o particionamen- pode compilar e instalar o kernel VServer e processos virtuais realmente rodam como to, também é necessário aplicar vários para o hospedeiro, usando o genkernel, processos normais do hospedeiro. patches do projeto Linux VServer. por exemplo. Em seguida, modifique o Do ponto de vista da segurança, o A maioria das distribuições oferecem carregador de inicialização e reinicie a VServer é semelhante a um mecanismo pacotes com os patches necessários, eli- máquina. Mas antes disso, certifique-se de engaiolamento. Os processos dentro minando a necessidade dos usuários de de introduzir o novo kernel ao script audo ambiente virtual ficam isolados do aplicá-los ao kernel pessoalmente. Se xiliar do VServer, rodando echo ‘kernel. resto do sistema, de forma que, se um você preferir evitar a recompilação de um vshelper=/usr/lib/util-vserver/vshelper’ intruso explorar uma vulnerabilidade novo kernel, há kernels pré-compilados >> /etc/sysctl.conf. Esse script é usado para ganhar acesso, ele não conseguirá nas páginas dos projetos Linux VServer para fazer halt e reboot no servidor virtual: sair da “gaiola” criada pelo isolamento [1] e OpenVZ [2]. afinal, você quer ligar e desligar apenas no nível do sistema. o sistema virtual, enquanto o hospedeiro A idéia por trás do VServer é oferecer deve continuar rodando. um sistema que faça uso ótimo dos recursos do hospedeiro e, portanto, exija o mínimo possível de processamento para gerenciar o ambiente virtual. O VSer- Os exemplos deste artigo são baseados ver e outros sistemas de isolamento do em um sistema Gentoo como hospedeiro. kernel oferecem alto desempenho e são Os conceitos são semelhantes, apesar de É fácil configurar um ambiente VServer. bastante escaláveis para grandes números alguns detalhes talvez serem diferentes Comece especificando o nome e a ID de de unidades virtuais. em outras distribuições. contexto – obviamente, esses valores têm Devido a sua grande eficiência, escalabiO pacote vserver-sources do Gentoo que ser únicos. Depois, especifique uma lidade e segurança do tipo gaiola embutida, traz os fontes do kernel com os patches interface de rede para o servidor virtual,
Servos virtuais
Gentoo como hospedeiro
Gentoo como hóspede
44
http://www.linuxmagazine.com.br
© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).
VServer | CAPA
Quadro 1: Baselayout VServer no Gentoo Para utilizar o sistema Gentoo hóspede instalado no mundo virtual do VServer, será necessário substituir o pacote baselayout pelo baselayout-vserver. O principal efeito disso é a modificação dos scripts de inicialização, causando algumas mudanças dramáticas a /etc/init.d/ (veja o exemplo 1).
junto com seu alias e endereço IP estático. O comando a seguir cria a configuração para uma instância chamada VS01 em /etc/vservers/vs01. Ao mesmo tempo, cria uma árvore de diretórios mínima em /vservers/vs01. A árvore-esqueleto (skeleton) depois será sobrescrita.
Para completar essa etapa, instale os pacotes Syslog-NG e OpenSSH, e coloque-os no runlevel default. É claro que você não precisa compilar um kernel ou instalar um carregador de inicialização para o servidor virtual. Em vez disso, apenas substitua os scripts de inicialização normais pelos do pacote baselayoutvserver vs01 build -m skeleton --hostname vserver (veja o quadro 1). ➥ vs01 --initstyle plain --context 1001 É importante mudar esses pacotes, pois ➥ --interface vs01=eth1:192.168.39.11/24 servidores virtuais não podem ter acesso direto aos dispositivos, o que impossibilita Agora podemos continuar a instalação algumas ações, como o carregamento de do sistema Gentoo hóspede em /vservers/ módulos, pelo servidor virtual. O mesmo vs01 da forma normal, e descompactar princípio deveria ser aplicado ao Openum stage3, junto com um snapshot da VZ, entretanto, algumas alterações são árvore do portage. Se você estiver usan- necessárias nesse caso [4]. do um hospedeiro Gentoo, pode ignorar Nesse ponto, você também precisará o pedaço do snapshot do portage e usar modificar a configuração do Syslog-NG uma montagem somente-leitura para (veja o exemplo 2), pois o acesso a /proc/ permitir que o sistema hóspede acesse o kmsg é impossível num ambiente VServer. sistema de arquivos do portage durante Os patches do VServer impedem a abera fase de instalação. tura desse pseudo-arquivo, assim como bloqueiam o /proc/uptime. mount /usr/portage Antes de deixar o ambiente chroot, ➥ /vservers/vs01/usr/portage -o bind,ro não se esqueça de modificar o conteúdo mount /usr/portage/distfiles de seus arquivos /etc/conf.d/hostname e ➥ /vservers/vs01/usr/portage/distfiles /etc/conf.d/domainname. ➥ -o bind,rw Vamos agora iniciar o novo servidor, digitando vserver vs01 start. A fronteira entre o sistema hospedeiro, que tem contexto 0 (zero), e o VServer é semiÉ bastante comum querer permitir que permeável. Em outras palavras, você um grupo de servidores virtuais (ou todos pode entrar nos servidores virtuais sem eles) tenham acesso compartilhado a uma se autenticar, apesar de isso não se apliseção específica do sistema de arquivos. É car na direção contrária. para isso que servem as montagens em bind A verificação da lista de processos nos no Linux. O que isso faz é montar uma mostra que há algumas diferenças entre subárvore do sistema de arquivos em uma o mundo virtual e um ambiente natiposição diferente. Se você quiser restringir vo. Então, o que acontece, exatamente, isso ao acesso somente-leitura, você esbar- quando iniciamos o VServer? rará em um dos recursos menos memoráveis do Linux: a opção ro, em combinação com a bind, é silenciosamente ignorada pelo comando mount. Você esperaria aqui Primeiramente, a ferramenta vnamespace uma mensagem de erro dizendo que as instala um novo namespace Linux para opções de montagem para o diretório de processos ao chamar clone() com a oporigem serão aplicadas. ção CLONE_NEWNS. Namespace é uma visão, No ambiente chroot do servidor virtual, específica para o processo, do sistema de mude agora o profile para vserver: arquivos. Se você rodar mount no namespace do processo A, isso não será visível (vs01 chroot) gs / # rm /etc/make.profile para o processo B, que está em outro (vs01 chroot) gs / # ln -s namespace. Isso explica por que montar ➥ /usr/portage/profiles/default-linux/ servidores virtuais não afeta o namespa➥x86/2005.1/vserver /etc/make.profile ce do sistema hospedeiro. Além disso, o
Extensões BME
Namespaces
sistema de arquivos raiz do VServer no novo namespace é montado (em bind) recursivamente como /, tornando impossível escapar da gaiola chroot. Agressores que conseguirem escapar chegarão no sistema de arquivos do VServer. Depois disso, são configurados aliases para as interfaces de rede. A ferramenta chbind associa outros processos ao endereço IP do VServer. ListenAddress 192.168.1.0 ListenAddress 192.168.39.10 ListenAddress 192.168.48.10
A configuração da interface do VServer está localizada em /etc/vservers/vs01/ interfaces/0/. Se o servidor virtual tiver múltiplas interfaces, é possível acrescentar mais diretórios em /etc/vservers/vs01/interfaces/[1-9] e copiar os arquivos. O próximo passo é montar os diretórios necessários no namespace. O diretório raiz vem primeiro; ele é especificado como um link em /etc/vservers/vs01/vdir, seguido pelas montagens em /etc/vservers/vs01/fstab. Serão necessárias entradas para, no mínimo, /proc e /dev/pts. Se você também quiser montar a árvore do portage do sistema hospedeiro durante o funcionamento do sistema, pode usar para isso o fstab do exemplo 3. ➧
Exemplo 1: Baselayout do VServer (vs01 chroot) (vs01 chroot) total 84 -rwxr-xr-x 1 lrwxrwxrwx 1 lrwxrwxrwx 1 lrwxrwxrwx 1 lrwxrwxrwx 1 ... ... lrwxrwxrwx 1
gs / # emerge baselayout-vserver gs init.d # ls -l root root root root root
root 2871 Jan 16 14:48 bootmisc root 5 Jan 16 14:48 checkfs -> dummy root 5 Jan 16 14:48 checkroot -> dummy root 5 Jan 16 14:48 clock -> dummy root 5 Jan 16 14:48 consolefont -> dummy
root root
5 Jan 16 14:48 urandom -> dummy
Exemplo 2: syslog-ng.conf 01 02 03 04 05 06
options {chain_hostnames(on); sync(0); stats(43200);}; source src { unix-stream(“/dev/log”); internal();}; destination server { udp(“192.168.39.10”,port(514)); }; log { source(src); destination(server); };
Exemplo 3: fstab para o VServer 01 02 03 04 05 06
none /proc proc defaults 0 0 none /tmp tmpfs size=16m,mode=1777 0 0 none /dev/pts devpts gid=5,mode=620 0 0 # Arvore portage compartilhada /usr/portage /usr/portage none bind,ro 0 0 /usr/portage/distfiles /usr/portage/distfiles none bind,rw 0 0
45
Linux Magazine #24 | Outubro de 2006
© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).
CAPA | VServer
Tenha cuidado se o VServer não for plenamente confiável. Embora a aplicação de checksums impeça a sobrescrita de arquivos do hospedeiro, o hóspede conseguirá injetar dados tanto no hospedeiro quanto nos outros hóspedes, nessa configuração. Finalmente, digite vcontext para definir o contexto de processo para o primeiro processo do VServer, e chbind para restringir a ligação aos endereços IP do servidor virtual. Só especifique parâmetros de agendamento e limites de recursos se o administrador decidir usá-los. Num servidor virtual Gentoo, o primeiro processo a iniciar é o /sbin/init; num SV Debian, seria /etc/init.d/rc 3. Num sistema Gentoo, executar init normalmente apenas rodaria os scripts do runlevel boot, antes de continuar carregando o default. Naturalmente, não se pode usar os scripts originais do Gentoo para isso, pois eles pressupõem um sistema nativo e acesso privilegiado ao dispositivo de armazenamento (como /dev/hda1, por exemplo) para verificar o sistema de arquivos, ou para configurar o relógio do sistema. É por isso que o pacote baselayout-vserver modifica o /etc/inittab e substitui os scripts de inicialização para rodarem apenas o seguinte: bootmisc domainname hostname local net.lo rmnologin ssh syslog-ng
Unificação e quebra de links em copy-on-write
Outros hóspedes
Faz sentido parar o VServer nesse ponto, rodando vserver vs01 stop, e fazer um becape de todo o sistema de arquivos como um modelo para servidores virtuais que porventura venham a surgir: cd /vservers tar jcvf vserver-gentoo-template.tbz2 ➥ ./vs01
Anomalias
Administração
pouco de mapeamento é necessário para atingir esse objetivo. Um exemplo Quanto mais VServers você instalar, disso é o PID do processo init. Apesar maior será a capacidade de armazenagem de isso não ser estritamente necessá- necessária. Se todos os seus servidores rio, diversos programas implicitamente forem criados usando o mesmo modepressupõem que o init tem PID 1. Não lo, a maioria dos arquivos será idêntica existe uma forma disso ser verdadeiro em vários servidores. Para simplificar e num VServer. Portanto, a entrada do acelerar o processo, pode-se deixar que init tem que receber explicitamente seus servidores virtuais compartilhem o PID 1 quando o sistema de arquivos partes do sistema de arquivos. /proc for virtualizado. Se os administradores dos hóspedes não foSe o sistema hóspede for um SV De- rem fazer grandes modificações nos servidores, bian, apenas /etc/init.d/rc 3 é executado uma opção é montar o sistema de arquivos na inicialização, o que significa que um raiz em modo somente-leitura, com exceção processo init nem existe. Nesse caso, o do /etc/, /var e os sistemas de arquivos de da/proc/1 tem que ser simulado. Isso tam- dos. Infelizmente, em várias situações, isso é bém se aplica a outras entradas do /proc, muito restritivo e, por isso, o Linux VServer utiliza uma técnica diferente. como /proc/uptime, por exemplo. Acrescentar outros ambientes é bem simples agora. Use as ferramentas vserver para criar uma nova configuração de SV, e copie o sistema de arquivos do SV. Depois, mude as configurações de rede. A ferramenta vserver-new facilita isso ainda mais: Se os diretórios dos servidores virtuais revserver-new vs02 --context 1002 sidirem em um mesmo sistema de arqui➥ --hostname vs02 --interface vos, pode-se usar o vhashify para agrupar ➥ vs02=eth1:192.168.39.14/24 clone vs01 arquivos idênticos num diretório central e substituir os arquivos por hardlinks nos servidores virtuais, deixando apenas uma instância de cada objeto de arquivo, econoO interessante da virtualização baseada mizando assim espaço de armazenamento. no particionamento no nível do kernel Obviamente, o acesso de gravação só pode é que o kernel é o mesmo para todas as ser dado ao servidor virtual em execução. A partições ou servidores virtuais. Essa não solução que permite isso é conhecida como é uma restrição muito importante, já que CoWLB, ou copy-on-write link breaking. O não impede a instalação de outras distri- hardlink que aponta para o diretório central buições como sistemas hóspedes. Em é apagado, e o arquivo é substituído pela nosso exemplo, instalaremos um hóspede cópia modificada. O CoWLB é suportado Debian num hospedeiro Gentoo. pelas versões developer 2.1.0 e posteriores É incrivelmente fácil fazer isso usando dos patches do VServer. Essa solução pode ser aplicada a direo debootstrap. Ao invés de instalar um esqueleto VServer conforme descrito acima, tórios arbitrários, como mostra o exemplo pode-se permitir que o vserver coopere a seguir. Um arquivo chamado x reside com o debootstrap. Após executar emerge nos diretórios /vservers/a0[12]/x: debootstrap, faça o seguinte para complegs vservers # ls -li a0[12]/x tar a instalação do VServer:
Um servidor virtual deve aparecer exatamente como um ambiente Linux nativo para os aplicativos e usuários. Um
vserver vs03 build --context 1003 ➥ --hostname vs03 --interface ➥ vs03=eth1:192.168.39.23/24 -m ➥ debootstrap -- -d sarge
Quadro 2: A armadilha de associação de endereços Você precisa se certificar de que os processos do servidor no contexto do hospedeiro não se liguem a todas as interfaces e aliases disponíveis. Caso contrário, os daemons que estiverem rodando nos servidores virtuais serão incapazes de se ligar a eles. O daemon ssh geralmente causa problemas. Ele é configurado para se ligar a todos os endereços por padrão. Para eliminar essa armadilha, assegure-se de especificar os endereços certos em /etc/ssh/sshd_config, e retire todas as entradas referentes aos aliases dos servidores virtuais.
685511 -rw-r--r-- 1 root root 942 ➥ Jan 17 07:12 a01/x 685514 -rw-r--r-- 1 root root 942 ➥ Jan 17 07:12 a02/x
Com o comando a seguir, podemos substituir o arquivo por uma cópia com inode 122620. Arquivos muito pequenos são ignorados. gs vservers # /usr/lib/util-vserver ➥ /vhashify --manually --destination ➥ /vservers/.hash /vservers/a01 exclude ➥ /vservers/vexclude
46
http://www.linuxmagazine.com.br
© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).
VServer | CAPA
Para o arquivo a01/x, os rótulos immutable e unlink são especificados pelo vhashify. Isso impede a modificação do arquivo mas permite que os hardlinks sejam apagados, e é usado para implementar o copy-on-write.
gs vservers # showattr a0[12]/x ----UI- a01/x ----ui- a02/x
Até agora isso não teve muito efeito. Então, vamos aplicar o mesmo princípio ao diretório /vservers/a02: gs vservers # ➥ /usr/lib/util-vserver/vhashify ➥ --manually --destination ➥ /etc/vservers/.defaults/apps/vunify/hash ➥ /vservers/a02 exclude /vservers/vexclude gs vservers # ls -li a0[12]/x 122620 -rw-r--r-- 3 root root 942 ➥ Jan 17 07:12 a01/x 122620 -rw-r--r-- 3 root root 942 ➥ Jan 17 07:12 a02/x
As duas novas entradas existem como hardlinks no inode 122620. Se alterarmos o arquivo agora, ele será apagado e substituído por uma cópia: gs vservers # echo “test” >> a02/x gs vservers # ls -li a0[12]/x 122620 -rw-r--r-- 2 root root 942 ➥ Jan 17 07:12 a01/x 685511 -rw-r--r-- 1 root root 947 ➥ Jan 17 07:14 a02/x
Figura 1 Unificação de ramos de sistemas de arquivos com o UnionFS.
mia de espaço para um grande número de VServers é enorme. gs vservers # vdu /vservers/vs0[12] /vservers/vs01 5K /vservers/vs02 5K
O vhashify unifica os dois diretórios no VServer vs01 e no clone vs02. O arquivo /vservers/vexclude contém uma lista de exceções com diretórios que não queremos unificar. Isso faz sentido para dados inerentemente variáveis, como o conteúdo do diretório /var, ou os arquivos de dispositivos sob /dev/. O vhashify é o sucessor do vunify e pode usar a mesma lista de exceções padrão em /usr/lib/ util-vserver/defaults/vunify-exclude. Se você criar um link agora, ln -s /vservers/.hash /etc/vservers/.defaults/apps/vunify/hash/0, você pode unificar digitando simplesmente /usr/lib/util-vserver/vhashifyvs02. Você verá que o diretório .hash cresceu consideravelmente, apesar de parecer que nada aconteceu com /vservers/vs0 [1]. gs vservers # du -sh /vservers/.hash ➥ /vservers/vs0[12] 391M /vservers/.hash 331M /vservers/vs01 331M /vservers/vs02
A ferramenta vdu consegue distinguir corretamente entre hardlinks. A econo-
Dependendo de qual aplicação você tiver em mente para seus VServers, você notará que os diretórios dos SVs tendem a se diferenciar progressivamente.
UnionFS
Outra solução elegante para unificar os diretórios do VServer envolve a utilização do UnionFS [5], e suporta a unificação além dos limites do sistema de arquivos. O UnionFS (ainda) não está incluído no kernel “oficial”, e está mascarado no Gentoo. Isso significa que se deve instalar o módulo do kernel e as ferramentas do espaço do usuário com o comando:
echo ‘sys-fs/unionfs’ >> ➥ /etc/portage/package.keywords ➥ && emerge unionfs
O desenvolvimento desse sistema de arquivos está avançando a passos largos, e a versão atual é suficientemente estável para a maioria dos propósitos. O UnionFS é um sistema dito ventilado. As operações no sistema de ar-
quivos são distribuídas ao longo de um grupo de sistemas de arquivos (figura 1). Quanto mais para a esquerda estiver um ramo, mais alta é sua prioridade. Uma operação de busca de um arquivo a começará na extremidade esquerda do ramo, e terminará no ramo onde se encontra o arquivo. Se o ramo com a maior prioridade for montado em modo de leitura e escrita no grupo, seu espaço pode ser usado para operações de leitura. Para apagar um arquivo b, não é suficiente deletar o arquivo no ramo com a maior prioridade, pois ele pode ainda existir nos ramos mais para a direita. Nesse caso, um arquivo em branco, .wh.b, é gravado para mascarar os arquivos à direita. Isso é necessário até mesmo se o arquivo vier de um ramo somente-leitura. Se você criar um arquivo C, ele só poderá ser criado no ramo de leitura e escrita. Para modificar um arquivo d de um ramo somente-leitura, primeiro é necessário copiar o arquivo para o ramo de leitura e escrita com a segunda maior prioridade. Podemos usar o unionctl para inserir dinamicamente o ramo /vservers/vsnoportage num sistema de arquivos unionfs em frente ao /vservers/vsmaster, e provavelmente vamos querer acrescentar uma entrada em /etc/fstab para tornar isso permanente: ➧
47
Linux Magazine #24 | Outubro de 2006
© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).
CAPA | VServer
none /vservers/vs04 unionfs ➥ dirs=/vservers/vs04diff=rw:/vservers/ ➥vsnoportage=ro:/vservers/vsmaster=ro 0 0
Quadro 3: Contextos A introdução de contextos é uma das modificações mais significativas que os patches do VServer fazem no kernel Linux. Um contexto define o número de processos que cooperam e competem uns com os outros. Os processos em diferentes contextos não podem mais cooperar no sistema local (veja a figura 2). Para deixar isso acontecer, um ID de contexto é adicionado ao PID para suportar a designação de processos únicos. O contexto original recebe uma ID de 0 (zero). Esse contexto é automaticamente gerado quando o kernel é inicializado. O contexto da raiz não tem qualquer papel especial na separação dos processos, e os processos em outros contextos não podem ser influenciados de dentro dele. Para dar aos administradores uma idéia geral de todos os processos em todos os contextos de um sistema, o contexto de monitoramento 1 foi introduzido. Todos os processos do sistema ficam visíveis no contexto 1, que você só pode entrar se vier do contexto da raiz. O vcontext permite que você crie uma nova ferramenta, ou entre em algum outro contexto.
Depois de iniciar o SV vs04, temos um sistema sem o sistema de gerenciamento de pacotes portage. Obviamente, esse princípio pode se aplicar a outros pacotes que tenhamos que adicionar ou remover independentemente do mestre. Contudo, a manipulação de pacotes deve ficar restrita a um ramo do UnionFS por motivo de consistência. O comando vcontext --migrate --xid 1 ps aux entra no contexto de monitoramento 1 Se você pretender usar BME e Coe inicia o ps aux nesse contexto, para gerar como saída uma lista de processos de todos os WLB em combinação com o UnionFS contextos. As ferramentas vps e vtop estão disponíveis para trabalhos de administração simnum sistema hospedeiro, atualmente isso ples e listam ainda a ID e o nome do contexto. Por motivos de segurança, o contexto raiz 0 designifica aplicar um patch do UnionFS veria ser acessível somente para gerenciar os outros contextos de um sistema VServer Linux. [6]. Esse passo é necessário por causa das Os serviços rodam em seus próprios contextos, e o acesso ao contexto raiz deve ser restrito. alterações na assinatura do auxiliar do VFS causadas pelos patches do VServer. Você perde a compatibilidade com os mó- do espaço do usuário vêm nos pacotes vzctl e Note que você precisará criar o /dev/ dulos de kernel que chamam o auxiliar vzquota. No momento da escrita deste artigo, vzctl antes de iniciar o hóspede pela prido VFS da maneira tradicional. os patches do OpenVZ foram feitos para o meira vez: /bin/mknod /dev/vzctl c 126 0. kernel 2.6.8. Patches estáveis não estão dispo- Se a opção RC_DEVICE_TARBALL=”yes” estiver níveis para versões mais recentes do kernel. em uso no /etc/conf.d/rc, o arquivo de Existe uma versão beta disponível para o kernel dispositivo será salvo em /lib/udev-state/ O OpenVZ [2], a variante livre da solução 2.6.15. E você sempre pode usar o genkernel devices.tar.bz2 quando você desligar o comercial de virtualização Virtuozzo [7], para compilar um kernel. Mas a abordagem hospedeiro, e será recuperado na próxima oferece uma funcionalidade semelhante à mais fácil é usar uma configuração estável do vez que você inicializar o hospedeiro. do Linux VServer. O patch para o kernel website do OpenVZ. Descompacte a versão Outra coisa importante é realizar as alteestá disponível no website do OpenVZ, assim em /usr/src/linux com o arquivo .config, e rações necessárias em /etc/sysctl.conf: como kernels pré-compilados. No Gentoo, depois prossiga com a compilação, como há o pacote openvz-sources para ajudar na de costume. Para iniciar automaticamente net.ipv4.ip_forward = 1 integração dos patches do OpenVZ e outros o servidor OpenVZ, você deverá executar net.ipv4.conf.default.proxy_arp = 0 net.ipv4.conf.all.rp_filter = 1 patches críticos. As ferramentas necessárias rc-update add vz default. net.ipv4.conf.default.send_redirects = 1
OpenVZ
net.ipv4.conf.all.send_redirects = 0 kernel.sysrq = 1
Após gerar o kernel, modificar o carregador de inicialização e instalar as ferramentas de espaço de usuário, você pode reiniciar o sistema.
Hóspedes no OpenVZ Pode parecer uma boa idéia instalar um sistema Gentoo hóspede agora mesmo, e não demorará muito até você poder usar para isso o modelo baselayout-vserver mencionado acima [4]. Compacte o VServer mestre e guarde-o em /vz/template/cache/vsmaster. tar.gz. Você pode prosseguir criando um hóspede do OpenVZ assim: vzctl create 2001 --ostemplate vsmaster ➥ --ipadd 192.168.39.21 --hostname ovz01
Figura 2 O Vserver cria partições isoladas de sistemas operacionais.
Novamente, de forma semelhante ao VServer, precisamos associar um ID de contexto. Acrescente .tar.gz
48
http://www.linuxmagazine.com.br
© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).
VServer | CAPA
Modelos para várias distribuições podem ser baixados em [2]. Além do Debian, no momento há modelos para CentOS, Fedora, Gentoo, Mandriva e OpenSuse. Os modelos oferecem uma solução fácil para a instalação de todos os sistemas hóspedes. Infelizmente, os métodos a que nos referimos antes para suportar o gerenciamento de grandes números de servidores virtuais não são atualmente suportados pelo OpenVZ. Todavia, novamente, a SWsoft oferece uma ferramenta comercial para cd /vz/template/cache isso: o Virtuozzo. O UnionFS não é mais mkdir debian_sarge compatível com o já idoso kernel 2.6.8, e debootstrap sarge ./debian_sarge não é possível aplicar os patches BME. Tudo cd debian_sarge; tar zcvf isso vai mudar quando for implementado ➥ ../debian_sarge.tar.gz . o suporte a kernels mais recentes. Para contornar o problema, você pode mover Rodar a ferramenta de instalação os sistemas de arquivos do SV para um vzctl descompacta o arquivo, joga-o em servidor NFS de alta performance, que /vz/private/<id> e roda o script /etc/vz/ suportará todas as opções descritas antedists/scripts/postcreate.sh para fazer riormente. Isso acrescenta o benefício da algumas alterações. migração indolor de um servidor virtual de uma máquina física para outra. vzctl create 2005 --ostemplate ➥ debian-sarge --ipadd 192.168.39.25 ➥ --hostname ovz05
NOME DA SEÇÃO
ao valor do parâmetro para ostemplate e renomeie o arquivo com o sistema hóspede para /vz/template/cache. Isso não funcionará no Gentoo, devido a algumas falhas que deveriam ser fáceis de eliminar, mas atualmente impedem o uso em produção. Por outro lado, é bem fácil instalar um sistema Debian como hóspede. Use debootstrap para preparar um sistema, e comprima o sistema para instalação no OpenVZ:
Futuro
Depois, você pode iniciar o VServer. Note que o OpenVZ utiliza o /sbin/init para iniciar os sistemas hóspedes. Os processos getty iniciados pelo init são inúteis, devido à falta de acesso ao hardware, e o mesmo se aplica ao klogd. A virtualização com o OpenVZ elimina o /proc/kmsg. Certifique-se de desativar esses serviços para resolver esses problemas. Como os scripts de inicialização não rodam nenhum comando mount, será necessário substituir o /etc/mtab por um link simbólico apontando para /proc/mounts. Use vzctl enter 2005 para mudar para o contexto do VPS. Certifique-se de verificar ou especificar explicitamente as variáveis de ambiente do Bash. Após rodar apt-get update, pode-se instalar qualquer software de que se precise. Faz sentido salvar o sistema hóspede modificado como um modelo para o Debian quando você terminar; depois, você pode usar o modelo para gerar mais sistemas hóspedes. Se você precisar realizar alguma ação especial ao iniciar e parar um servidor virtual, pode usar scripts para isso. Ao contrário do que o manual do OpenVZ informa, o sistema Gentoo hóspede espera que esses scripts estejam em /etc/ vz/<vsid>.{mount,umount,start,stop}. Os scripts mount/umount rodam no contexto do hospedeiro, enquanto os scripts start/ stop rodam no contexto do SV.
Nem o VServer nem o OpenVZ atingiram todo seu potencial. Além do gerenciamento efetivo do VServer, também é importante ter um controle granular dos recursos para gerenciar o espaço em disco e os ciclos de CPU. Mais uma vez, ambos os projetos possuem mecanismos como quotas e escalonador justo para controle dos recursos. ■
Mais Informações [1] Linux-VServer: http://linux-vserver.org/ [2] OpenVZ: http://openvz.org/ [3] Projeto Gentoo VServer-Utils: http://dev.croup.de/ proj/vserver-utils [4] Gentoo VPS: http://dev.croup.de/ proj/gentoo-vps [5] Homepage do UnionFS: http://www.fsl.cs.sunysb.edu/ project-unionfs.html [6] Patch de desenvolvimento do VServer para UnionFS:
http://mozart.informatik. fh-kl.de/download/Software/ VServer/vserver.html [7] SWsoft Virtuozzo: http://www.virtuozzo.com/
49
Linux Magazine #24 | Outubro de 2006
© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).
Anka Dra
ganski –
w w w.sxc
.hu
CAPA
Balanceamento de carga melhorado, administração central e consolidação – você só tem a ganhar com a virtualização. A Linux Magazine visitou um datacenter municipal para obter uma visão prática sobre a virtualização no local de trabalho. por Charly Kühnast e Jürgen Backes
Virtualização prática com o ESX Server
Fácil e eficiente N
ós os chamamos de “aquecedores elétricos”: os servidores indispensáveis às operações cotidianas, mas que nunca ultrapassam uma carga de 10%. Poderiam ser servidores DHCP, DNS, de impressão, de arquivos ou de fax, ou talvez um daqueles veneráveis servidores de aplicação que apenas três pessoas usam e precisam – mas ninguém se arrisca a desligá-los. Acrescente os inevitáveis sistemas de teste nos quais ninguém ousa tocar. O hardware normalmente é ultrapassado, mas por que você compraria algo novo se as máquinas velhas não estão nem perto da capacidade total?
Figura 1
Modelo de camadas
Ao mesmo tempo, essas máquinas passam uma sensação de temor, pois O projeto funcional do ESX Server é uma coisa é certa: hardware velho está praticamente igual ao do já conhecido fadado a falhar alguma hora. Imagine VMware Workstation, apesar de o servidor o caos se o servidor DHCP parar numa também fornecer o sistema operacional. segunda-feira de manhã. Numa hora Em ambos os casos, no entanto, uma dessas, a carga de somente uns poucos camada de virtualização separa o sistepontos percentuais realmente começa- ma hospedeiro dos hóspedes. Estes são apresentados a uma emulação de hardria a fazer falta. Foi isso que nos convenceu a co- ware isolada e idealizada. Por exemplo, nhecer a virtualização há não muito cada sistema hóspede pensa que tem uma tempo. Nós dois somos administradores CPU própria, ou até mesmo duas, caso num datacenter municipal que fornece o sistema hospedeiro possua a extensão serviços aos escritórios distrital e mu- virtualSMP, vendida separadamente. O nicipal, e também às comunidades e que realmente acontece é que todas essas instituições oficiais, suportando um CPUs lógicas são mapeadas nas CPUs total de 11 mil desktops. físicas pela camada de virtualização. A Quando chegamos à nossa memória é alocada pelo VMware condecisão, não havia tantas tecnolo- forme necessário, sendo compartilhagias competitivas de virtualização da por múltiplos sistemas hóspedes ou quanto hoje, e algumas delas não completamente enviada para o espaço ofereciam a flexibilidade de que de troca (swap). Obviamente, os sistemas necessitávamos, possivelmente por hóspedes não têm a menor idéia disso, não suportarem a mistura de sis- já que todo esse processo é completatemas operacionais que esperáva- mente transparente para eles. mos. Por outro lado, já havíamos Os sistemas hóspedes também vêem tido experiências positivas com o discos rígidos e adaptadores de rede VMware; um fato que nos levou como seus próprios recursos físicos, a considerar os outros membros com cada placa de rede virtual tendo da família do VMware. Ficou um endereço MAC próprio. As VMwarapidamente claro que o GSX re Tools, como você talvez já conheça Server não nos daria o desempe- do VMware Workstation, fornecem os nho de que precisávamos, o que drivers necessários para as placas de Monitoramento centralizado do consumo de recursos para nos levou a escolher o VMware rede, vídeo etc. múltiplas instâncias virtuais paralelas. ESX Server.
50
http://www.linuxmagazine.com.br
© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).
VMware | CAPA
Atualização de hardware
sistemas operacionais, quaisquer imagens ISO necessárias e outros componentes de instalação. O motivo disso era tanto o custo (espaço de SAN é caro) quanto o fato de que a versão 1.5.x disponível na época não suportava a inicialização por SAN. A versão atual não tem essa limitação. Enquanto isso, nos- Figura 2 Um panorama de todas as caixas de pizza virtuais nesse hospedeiro. É so parque de servidores fácil identificar falhas e sistemas com problemas. cresceu até incluir 9 servidores em produção (com um total de pedeiro, isso não afetará os sistemas hós60 processadores) que hospedam mais de pedes, graças à camada de virtualização. 200 sistemas. Os sistemas operacionais Ao invés disso, você apenas precisa mover hóspedes são Windows® XP, Windows os sistemas hóspedes para o novo hard2000 Server, Windows 2003 Server, Suse ware. E se você usar o Virtual Center e SLES 8, Suse SLES 9, Suse Linux 9.x, o VMotion para isso, pode até fazê-lo Fedora Core 2 e Debian. Os dois últimos dinamicamente! não são oficialmente suportados, mas funcionam a contento.
Para rodar um ESX Server, necessitase de um sistema com no mínimo dois processadores – ou um processador de núcleo duplo. Nenhuma quantidade de memória ou espaço em disco é demais. Duas placas de rede também são um pré-requisito, pois uma é reservada ao gerenciamento do ESX Server, enquanto a outra é compartilhada pelos sistemas hóspedes. Documentação e fóruns antigos informam que uma placa velha de 10 MBps funciona perfeitamente como placa de rede primária, já que ela só é usada para gerenciar o servidor. Mas esse é um gargalo que você provavelmente não quer ter, pois você precisa dessa interface para fazer becapes das imagens dos sistemas hóspedes. Portanto, é bom você adquirir o melhor hardware que o orçamento permitir. Em nossos primeiros experimentos O Virtual Center é uma interface de adcom o ESX Server, utilizamos duas ministração do VMware GSX, e o ESX máquinas IBM xSeries (x445) com oito fornece uma visão em árvore de todos os processadores Xeon 2.8 GHz e 24 GB seus servidores hóspedes e hospedeiros, de memória cada, com um conector SAN (Storage Area Network) redundante A economia conseguida com o uso das junto com dados de status e utilização de através de duas placas fibre channel. As soluções de virtualização são resultado do recursos. Um agendador simples suporta placas foram detectadas como um gru- uso melhorado do hardware (principal- a automação de várias tarefas, incluindo a po quando instalamos o ESX Server, e mente da CPU e memória) e de redução clonagem de sistemas hóspedes. O Virtual foram automaticamente configuradas dos gastos com conexões (LAN e SAN), Center assim oferece funcionalidades rupara redundância. que freqüentemente são menospreza- dimentares de gerenciamento de sistemas. Mal colocamos o sistema no ar e dos. Além disso, a virtualização oferece Instalações em maior escala serão difíceis nossos colegas, chefes e clientes o ado- a possibilidade de reagir rapidamente à de gerenciar sem o Virtual Center, que raram, o que significa que o trabalho crescente demanda por mais sistemas é um pré-requisito para usar o Vmotion rapidamente tornou-se demais para o (supondo hardware escalável). Num para migrar sistemas hóspedes para o hardware. O novo hardware consistia ambiente de produção, faz grande dife- novo hospedeiro dinamicamente. O ESX Server não chega nem perto de três máquinas HP Proliant DL580 rença ser capaz de colocar rapidamente G2, com quatro processadores Xeon 2.0 no ar os sistemas urgentemente neces- de suportar a gama de sistemas operaGHz e 16 GB de memória cada. Assim sários, ao invés de termos que esperar cionais virtuais que o GSX e o VMware como antes, esses sistemas possuíam dois o fornecedor de hardware entregar as Workstation suportam. Entretanto, se adaptadores SAN QLOGIC. Na etapa encomendas. Para acelerar ainda mais você precisar virtualizar servidores Winseguinte, acrescentamos três máquinas esse processo, é possível clonar sistemas dows, essa não será uma desvantagem. HP Proliant DL740 G1 com oito proces- – uma boa idéia para sistemas Linux hós- Os derivados de Linux restringem-se a sadores de 2.7 GHz, 32 GB de memória pedes – ou usar a instalação automática distribuições comerciais da Red Hat e e dois adaptadores SAN. Nossa aquisição do Windows para instalar um sistema Novell. OpenSuse e Fedora não são sumais recente foi um HP Proliant DL585 com uns poucos cliques. Dessa forma, portados, assim como Solaris e Ubuntu. G1 com quatro CPUs Opteron 2.2 GHz economiza-se muito tempo e dinheiro Além disso, a versão ESX do VMware Server tende a ficar atrasada em relação de núcleo duplo. em todos os departamentos. Isso se mostrou uma má idéia, pois Não nos esqueçamos da capacidade às outras. Você pode visitar [1] para uma foi difícil migrar os sistemas hóspedes do VMware de criar automaticamente visão geral dos sistemas operacionais entre as várias arquiteturas de processa- imagens de becape de sistemas hóspe- suportados. ■ dor, independentemente dos truques que des, tanto on-line quanto off-line, sem a tentássemos. Pelo lado bom, o Opteron necessidade de investimento em caros exibiu um desempenho surpreenden- softwares de becape. Depois de virtuaMais Informações temente bom. lizar um servidor, você elimina de vez [1] Sistemas operacionais suportados: Além do SAN, todas as máquinas dis- a necessidade de futuras migrações de http://www.vmware.com/support/ punham de dois discos locais espelhados, hardware. Mesmo que algum dia você guestnotes/doc/index.html para os sistemas virtuais armazenarem os tenha que substituir o hardware do hos-
Economia por todos os lados
Virtual Center
51
Linux Magazine #24 | Outubro de 2006
© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).
Virtualização nos servidores mais simples da IBM e Sun
ANÁLISE
A seu serviço Os principais personagens do cenário de servidores Unix incluem suporte a virtualização em seus sistemas operacionais. Nós comparamos dois candidatos da IBM e da Sun. por Jens-Christoph Brendel
C
rawford Del Prete, Vice-Presidente Sênior da empresa de pesquisa de mercado IDC, crê que cada década tem sua própria revolução na TI. Os anos sessenta foram marcados pela ascensão dos mainframes, superados dez anos depois pelos minicomputadores. A revolução cliente-servidor se iniciou em 1985, e os anos noventa viram o nascimento e a explosão da Internet. Atualmente, o tópico número um é a computação como utilidade, ou seja, os recursos computacionais orientados à demanda, fornecidos como utilidades, exatamente como eletricidade ou água. A virtualização, que é um forte pré-requisito para a computação como utilidade, é o campo de maior crescimento, segundo o IDC. Os analistas prevêem um volume de mercado de US$ 2,2 bilhões em 2007 [1]. As histórias de sucesso de grandes vendedores de software parecem confirmar essa previsão: O VMware alega ser a empresa de maior crescimento em toda a indústria do software, e a SWSoft, cujos sistemas virtuais Virtuozzo estão disponíveis para todas as principais plataformas de 32 e 64 bits, reportou um crescimento de 160% e dobrou seu quadro de funcionários no ano passado. O derivado li-
vre, OpenVZ [2], não é o único concorrente no setor do código aberto; o Xen [3] também visa à inclusão no kernel Linux. E há várias alternativas a esses produtos. Não é de se surpreender que os fornecedores tradicionais de servidores Unix, como IBM, Sun e HP, estejam tentando garantir que não sejam deixados para trás, apresentando soluções mais baratas para assegurar sua fatia do bolo. A Linux Magazine investigou dois candidatos.
IBM P5-505
A primeira máquina a chegar em nosso escritório foi um sistema IBM P5-505. A máquina veio com o sistema operacional AIX 5L 5.3 pré-instalado e o chamado Virtual I/O Server (VIOS), a entidade central que circunda e gerencia todos os recursos de E/S do sistema. O VIOS mapeia discos físicos, interfaces de rede e dispositivos ópticos em recursos para as máquinas virtuais, que são conhecidas como partições lógicas, ou LPARs. Além disso, obviamente as LPARs precisam de memória e, ou uma CPU dedicada, ou uma garantia de uma cota mínima de ciclos de CPU de um grupo de processadores compartilhados, que
52
http://www.linuxmagazine.com.br
© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).
IBM x Sun | ANÁLISE
externo foi configurado para bombardear cada servidor com requisições. Utilizamos para isso a ferramenta de teste de regressão HTTP Siege. A idéia era usar instâncias paralelas dos benchmarks para pedir um número máximo de páginas de um, dois, três, quatro e, finalmente, todos os cinco servidores virtuais (figura 3). Isso torna necessário alocar recursos para os consumidores, baseado em pesagens (a configuração original era 0.2 CPUs por LPAR). Como esperado, os tempos de resposta dos servidores virtuais individuais aumentam junto com o número de servidores virtuais respondendo a requisitos, enquanto a taxa de transações cai de forma mais ou menos inversamente proporcional (figura 2). Acrescentar a taxa de transação ou os resultados do processamento total de todos os servidores retorna números semelhantes aos valores para uma única instância, levando-nos a concluir que o trabalho adicional para realizar a virtualização é mais ou menos desprezível.
Sem competição
Figura 1 O LPARMon visualiza a carga nas várias partições virtuais. Nesse cenário, a primeira instância, que está sujeita a uma maior carga, demonstrou melhor desempenho da CPU.
os administradores podem alocar em décimos de CPU. Todas essas alocações são estáticas. Em outras palavras, os recursos conferidos a uma LPAR não ficam disponíveis para outras partições, e mudanças dinâmicas não são suportadas. Dito isso, para alterar alocações, os administradores só precisam desabilitar temporariamente a partição em questão, sem necessidade de reiniciar o servidor todo. O VIOS também oferece a interface de usuário na forma do Integrated Virtualization Manager (IVM) [4]. Nesse caso, o IVM substitui o Hardware Management Console (HMC) normalmente instalado pela IBM, que normalmente exigiria uma máquina adicional. Além de uma interface de linha de comando, o IVM ainda traz uma interface web intuitiva que permite que os administradores instalem e configurem as partições virtuais. Um assistente está disponível para auxiliar na maioria das tarefas, e os valores padrão também fazem sentido, eliminando a necessidade de habilidades de expert.
Quinteto virtual
Em nosso primeiro teste, configuramos cinco partições lógicas e instalamos o Suse Linux Enterprise Server (SLES) 9 [5] em cada. Um servidor web foi instalado em cada máquina virtual, e um cliente
Em outro teste, o benchmark esperava um espaço aleatório de tempo, menor que um segundo, antes de pedir cada página. Isso significou menor sobreposição no acesso aos recursos do sistema em cada servidor virtual, e, portanto, uma distribuição de carga mais realista do que o teste de carga total. Nesse cenário, o número de servidores web paralelos não tinha praticamente nenhuma influência sobre a taxa de transação. A carga da CPU medida na máquina AIX hospedeira simplesmente mostra que o tempo ocioso da CPU cai quando mais servidores web são ativados (figura 3). Isso
Figura 2 O desempenho das máquinas virtuais dos servidores de categoria de entrada da IBM e da Sun foi semelhante, e os tempos de resposta aumentaram proporcionalmente ao número de instâncias concorrentes sob carga total.
53
Linux Magazine #24 | Outubro de 2006
© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).
ANÁLISE | IBM x Sun
Sun Fire 4100
Nome: Sun Fire 4100 CPU: Uma ou duas CPUs 64 bits Athlon64 ou Opteron (núcleo simples ou duplo: dois Opteron 280s de núcleo duplo, 2,4 GHz, na máquina testada) Cache: 1MB Cache L2 por núcleo RAM: máx. 16 GB (8 GB na máquina testada) Discos: máx. 4x SAS 2,5” internamente, com hotplug Slots: 2x PCI (perfil pequeno, 1x100 MHz, 1x133 MHz) Interfaces: 4x Ethernet (10/100/1000), 3x USB 1.1 Conectores de sistema: Processador de serviço (Ethernet) Sistemas operacionais: Solaris, Linux (RHEL3/4, SLES9), Windows Server 2003 Fonte: 2 redundantes, 550 W, com suporte a hotplug Dimensões: 19” (48,26 cm), 1U
demonstra que múltiplas LPARs podem mobilizar reservas de força inutilizadas sem atrapalharem umas às outras – supondo uma tarefa que imponha carga máxima nas LPARs simultaneamente.
Sun Fire 4100
O segundo candidato foi um modelo de categoria de entrada da Sun. O Sun Fire 4100 também tem 2 CPUs (2x Opteron 280 dual core, no caso) e 8 GB de RAM. O Solaris 10, com sua tecnologia de virtualização baseada em zonas, veio pré-instalado. À primeira vista, esse conceito não é muito diferente das partições lógicas da IBM: nos dois casos, aplicações específicas podem ser completamente isoladas, conferidas a ambientes de execução independentes, e receber uma quantidade pré-definida de recursos do sistema. À segunda vista, algumas diferenças óbvias se tornam visíveis. A mais gritante delas é que as zonas do Solaris automaticamente usam a instância do Solaris que está rodando no hospedeiro como seu próprio sistema operacional. Outras versões e outros sistemas operacionais não são suportados – pelo menos, não quando escrevemos esta matéria –, mas uma extensão na forma do framework BrandZ já foi liberada para o Open Solaris. Além disso, o conjunto de recursos, que agrupa os recursos operacionais de uma
zona e os isola das outras, só suporta um tipo de recurso: a CPU. Diferentemente da solução da IBM, não há como alocar RAM para uma zona. Dito isso, pode-se especificar um limite para o consumo de memória de um aplicativo específico dentro de uma zona, embora de uma forma um tanto obtusa. Para isso, devem-se definir projetos para impulsionar o recurso de gerenciamento de recursos do Solaris, pois projetos podem ser alocados em zonas. Uma solução semelhante permite que se defina o desempenho mínimo aceitável de CPU para uma zona. Essa definição pode ser modificada dinamicamente a qualquer momento.
Menos quebras, mais trabalho Os administradores precisam usar a linha de comando para configurar e iniciar as zonas no Solaris. Essa é uma tarefa bem simples, apesar da falta de uma interface gráfica ou de um assistente. Exatamente como em nosso teste anterior, configuramos cinco zonas e ativamos um servidor web em cada. Depois disso, rodamos os benchmarks descritos anteriormente. É claro que os valores absolutos do benchmark não permitem um julgamento aprofundado do desempenho do sistema – nem era esse o propósito do teste. O que podemos
Figura 3 Em um cenário menos competitivo, o desempenho de cada servidor virtual não depende minimamente do número de servidores concorrentes – o que diminui é o tempo ocioso da CPU.
54
http://www.linuxmagazine.com.br
© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).
IBM x Sun | ANÁLISE
IBM P5-505
Nome: IBM System P5-505 CPU: Uma ou duas CPUs POWER5 de 64 bits (duas no sistema testado) Cache: 1,9 MB Cache L2, e 36 MB Cache L3 RAM: máx. 32 GB (8 GB na máquina testada) Discos: 2x Ultra320 SCSI, máx. 600 GB internamente Slots: 2x PCI (1x longo, 1x perfil pequeno) Interfaces: 2x Ethernet (10/100/1000), 2x USB, opcional: Fibre Channel, 10 Gigabit Ethernet, Infiniband Conectores de sistema: 2x HMC Sistemas operacionais: AIX 5L ou Linux (RHEL AS 4, ou SLES 9) Fonte: 2 redundantes com suporte a hotplug Dimensões: 19” (48,26 cm), 1U
dizer é que os resultados do benchmark fo- da CPU caiu somente 10%, mas tenha em ram semelhantes nos dois sistemas. mente que mais servidores virtuais não só No cenário da virtualização, os resultados consumiriam mais tempo de CPU, mas da máquina Sun foram como o esperado: a também precisariam de mais memória, carga máxima força a distribuição dos recur- espaço em disco, e interfaces. sos pelos candidatos do benchmark. A soma dos resultados de desempenho individuais permanece mais ou menos constante, novamente demonstrando que a virtualização Enquanto a virtualização no Linux ou no não causa um excesso perceptível de traba- Windows® significa a adição de software de lho (figura 4). Se relevarmos os problemas terceiros, muitas tecnologias tradicionais do de concorrência – o que seria um reflexo Unix integram essa capacidade. A virtualizamais verídico de um cenário de produção ção traz um mínimo acréscimo de trabalho – veremos que a máquina é capaz de suportar nesse cenário, e integra-se transparentemente muito mais do que somente uns poucos ser- com a administração já familiar do sistema. vidores virtuais. No Solaris, o tempo ocioso Em combinação com hardwares de alto de-
Conclusões
sempenho, onde sistemas de categoria de entrada não são muito mais caros que um PC bem equipado, a virtualização oferece uma alternativa convincente. As diferenças ficam escondidas nos detalhes. Em nosso teste comparativo, o sistema IBM conseguiu alguns pontos extras graças a seu suporte a um uso mais flexível das máquinas virtuais e um gerenciamento mais simples dos recursos. Mas para administradores experientes de Solaris, que conseguem lidar com todas as exigências de seus usuários numa única plataforma, a virtualização sem perda e sem ferramentas de terceiros, baseada na abordagem de zonas, definitivamente tem algumas vantagens. ■
Mais Informações [1] Relatório especial IDC sobre virtualização:
http://www.sinaimedia.com/ board/file/IDG Special Report DC Virtualization.pdf [2] OpenVZ: http://openvz.org [3] Xen: http://www.cl.cam.ac.uk/ Research/SRG/netos/ xen/index.html [4] IVM: http://www.redbooks.ibm.com/ abstracts/redp4061.html?Open Figura 4 A soma dos resultados do benchmark de todos os candidatos permaneceu constante: adicionar mais zonas ao Solaris obviamente afeta muito pouco o desempenho do sistema.
[5] SLES9: http://www.novell.com/ products/linuxenterpriseserver
55
Linux Magazine #24 | Outubro de 2006
© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).
Um servidor corporativo sob medida para empresas e administradores.
ANÁLISE
100% alinhado ao business
Apesar do avanço crescente dos sistemas livres, o mercado corporativo ainda se ressente da aparente falta de perspectivas do software de código aberto no que diz respeito a ferramentas e soluções de alta produtividade. por Tadeu Carmona
S
e as soluções livres são imbatíveis na relação custo-benefício, ainda falta muito para estabelecer uma solução aberta como padrão de mercado. E é em servidores corporativos, associados a produtos de alto custo operacional ou de implantação, que essa distância pode ser mais sentida: afinal, se os custos de aquisição são eliminados, ainda existe toda a gama de custo em horas trabalhadas com a migração segura de uma solução proprietária para outra de código aberto.
A migração para o padrão aberto está atrelada à segurança dos dados durante o processo de migração. ➧ 2. A migração deve ser feita com o auxílio de ferramentas confiáveis. ➧ 3. Em servidores corporativos, que contêm dados vitais, o processo de migração ou manipulação de um serviço ou dos dados a ele relacionados devem ocorrer de forma transparente, para que todas as partes envolvidas entendam o processo. Pouco importa que qualquer um dos três requisitos passe pela interoperação ou aceitação de um dos padrões Linux – ou do reconhecimento da existência e utilização de um serO dilema é simples: as ferramentas de vidor Windows® 2000 Server/Server código livre têm de continuar livres, mas 2003: se a rede da empresa continuar também têm de se adequar às necessida- funcionando, se o staff das aplicações des de um mercado em que os serviços não for desmontado por uma interdevem ser regidos por um férreo controle rupção técnica, se não for necessário de qualidade e desempenho. Essa solu- “alfabetizar” a equipe, a interoperação ção passaria por três requisitos: pode ser encarada não como um mal menor, mas como um bem mais do que desejável, necessário. A maioria das distribuições GNU/ Linux tem dificuldade de entender essa necessidade, seja pela ideologia embutida em algumas comunidades de programadores, seja pela dificuldade de se entender o fluxograma do trabalho de uma empresa. Mas um outro motivo pode ser bem menos casual e muito mais prático: a dificuldade, por parte dos desenvolvedores de software de código aberto, em conseguir reproduzir ou trazer suporte a protocolos de rede, softwares É possível adicionar diversos recursos já existentes e dispositivos proprietários. E é aí que em uma rede Windows, como a zona de DNS. surgiu a Xandros.
O caminho para uma solução
Figura 1
➧
1.
Casamentos e compromissos A Xandros nasceu em 2001, ano da aquisição da base de projetos Corel Linux Business Division, responsável pelo desenvolvimento de um desktop Linux suficientemente amigável a ponto de um usuário de desktop Windows, em ambiente corporativo ou doméstico, não notar a substituição. O sucesso levaria a empresa ao desenvolvimento de um servidor nos mesmos moldes, aliando a liberdade do código aberto à satisfação de compatibilidade com certos padrões atuais de indústria. O primeiro lançamento dessa linha da Xandros é o Server Standard Edition, uma solução completa para vários tipos de servidores que já possui diversas soluções, desenvolvidas pela própria Xandros, para a integração com os sistemas da Microsoft, ou ainda com parques de máquinas oriundos de outros “sabores” de Linux ou Unix. O compromisso explícito da Xandros em tornar a administração de servidores de tipos diferentes o mais unificada e transparente possível fica claro no momento da instalação. Ao chegar à etapa Server Configuration, o Xandros pergunta se você deseja torná-lo o servidor primário da rede ou se ele já existe. Em uma rede com o Windows Server 2003/Windows 2000 Server, basta responder que um servidor já é o Controlador Primário da rede para que a instalação do Xandros continue, respeitando toda a estrutura hierárquica já estabelecida – o que é essencial para um processo de migração limpo.
56
http://www.linuxmagazine.com.br
© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).
Xandros Server | ANÁLISE
Serviços Windows em másquinas Linux A Microsoft utilizou o padrão Wins (Windows Internet Naming Service) em intervalos mais ou menos regulares, abandonando-o como padrão durante a vigência do Windows 2000 Server. O Wins era capaz de reconhecer nomes Netbios – um protocolo reconhecidamente inseguro, mas que é insistentemente utilizado, tanto em boa parte das implementações do Windows quanto na implementação livre do protocolo SMB, o Samba. A vantagem do Wins é a de que ele é capaz de encontrar máquinas com nomes Netbios, utilizando endereços de IP para isso. O Wins encontra as estações de trabalho e estabelece a comunicação destas para com ele diretamente via Internet Protocol. Assim, nos livramos de duas situações desagradáveis advindas da utilização de protocolos SMB/Samba/similares: o broadcasting gerado para comunicação entre as máquinas e a listagem estática das máquinas e grupos pertencentes à rede. O Wins é um serviço dinâmico, que refaz a lista dos elementos da rede de forma automática: basta que a máquina seja ligada para que ela seja listada na rede. O Xandros Server permite a interligação com um servidor Wins presente na rede, bastando para isso digitar o endereço IP do servidor já presente na rede. Melhor ainda, o Xandros pode assumir o manto de ser um servidor Wins. Apesar de a Microsoft ter “reabilitado” o Wins no Windows Server 2003, a utilização de servidores Windows 2000 – ainda muito comuns em redes legadas de orgãos públicos ou em parques privados com orçamento de TI de médio ou baixo custo – em conjunto com Wins costuma ser problemática em redes heterogêneas que utilizem o 2000 Server como servidor central. Uma solução possível: utilizar o Xandros como um servidor Wins, deixando a administração dos demais serviços e do AD (Active Directory) legados a cargo do Windows 2000.
Active Directory antes do Samba 4 Como já foi mostrado na edição 22 da Linux Magazine (matéria Samba 4 :: Samba do futuro, pág. 58), a versão 4 do Samba promete vir acompanhada de uma implementação do protocolo Kerberos 100% compatível com os padrões da indústria. Isso permitiria que servidores Samba finalmente fossem capazes de acessar árvores do gerenciador de diretórios do Windows
de maneira mais transparente, se bem que ainda não 100% confiável, como a própria equipe de desenvolvimento do Samba confessa. Há outros fatores a se considerar: em um processo de migração de uma árvore de máquinas e usuários do Active Directory para o Samba (tanto 3 quanto 4) é impossível garantir que as senhas de rede e perfis dos usuários serão importados corretamente, ocorrendo o mesmo com os perfis de máquinas. O Xandros Server resolve esse problema. Em nossos testes, pedimos que o Xandros fizesse a migração da árvore de usuários de um servidor Windows Server 2003 para a Figura 2 O XMC (Xandros Management Console) imita os sua própria árvore de usuários. Não só as processos de administração de servidores, usuários contas foram migradas, em menos de 10 e recursos do Microsoft Active Directory. minutos, como as senhas e perfis permaneceram intactos. Ao desligar o servidor 3584, RFC 3411 e RFC 3418), existindo Windows e configurar um cliente Win- implementações para Linux há vários dows 2000 para que se conectasse à rede anos. Parece pouco para uma distribuide serviços usando o Xandros, o processo ção que tem excelentes recursos, com ocorreu como se o servidor da Microsoft uma interface de criação de modelos de ainda administrasse a rede. Os problemas administração em tudo semelhante à do com o Kerberos e as senhas do arquivo SAM MMC (Microsoft Management Console), do Windows parecem resolvidos... que cria snap-ins que podem ser utilizados inclusive para administrar servidores Windows. Mas é um detalhe que salta aos olhos de administradores experientes ou Mas achamos que ainda falta alguma coisa que estão acostumados a trabalhar com ao Xandros na parte de cá da parede – a redes realmente grandes, justamente o do administrador de sistemas realmente público da solução. ■ ocupado. O Xandros Managed Community, a solução para administração de serviços e servidores da distribuição, Ficha Técnica funciona muito bem em redes que já Xandros Server Standard Edition possuem servidores Windows e Linux Fabricante: Xandros integrados, sendo possível, inclusive, inDistribuição base: Debian terromper serviços e reiniciar servidores a distância – e não, não estamos falando de Preço da licença: cerca de U$ 500.00 por servidor implementações gráficas do SNMP ou Mídia: 3 CDs, um de instalação base do sistema, outros de sessões administrativas de SSH. dois de aplicativos, e o CD especial contendo bancos de dados licenciados, como o DB2 da IBM e o Oracle 10 g A questão é que o trabalho do administrador não está restrito aos servidores Requisitos mínimos do sistema: não especificados e seus serviços. Switches gerenciáveis (e Prós: que devem ser gerenciados!) já são uma ➧ Integração total com servidores Windows 2000/ 2003 Server realidade há algum tempo, bem como ➧ Administração de servidores e serviços transroteadores conectados a uma conexão de parente, feita via interface gráfica Internet de banda larga ou a uma VPN ➧ Criação de snap-ins de gerenciamento semelhan(Virtual Private Network) corporativa, tes e compatíveis aos construídos via MMC de forma dedicada. O Active Directory ➧ Bom custo-benefício: o CD de extras contém diveré capaz de reconhecer esses dispositivos sas licenças de bancos de dados corporativos via SNMP, representá-los de forma gráContras: fica em sua árvore e abrir as portas para ➧ O script de instalação ainda é um pouco deficiena sua administração remota, e desde a te, apresentando falhas no particionamento de discos e na aplicação de configurações de LVM (Logical Voluversão 2000. Dispositivos Wi-Fi já são me Manager) em algumas das instalações realizadas gerenciáveis na versão 2003. ➧ A inexistência do suporte à administração de roteadores e O que faltou para o Xandros fazer o switches gerenciáveis de forma centralizada – uma solumesmo? Sinceramente não sabemos, já ção que já existe a tempos no Active Directory e que não que o SNMP não é um protocolo proparece ter muitos obstáculos para sua implementação prietário (faz parte da camada UDP, e ➧ Falta localização para a língua portuguesa é coberto pelas normas técnicas RFC
Ainda falta algo
57
Linux Magazine #24 | Outubro de 2006
© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).
Criando um módulo de firewall com Netfilter
TUTORIAL
Aula de canto Se você tem necessidades especiais na sua rede, pode se beneficiar muito da construção de módulos personalizados do Netfilter. Criamos um módulo que canta conforme o tráfego de rede. por Mark Vogelsberger
O
Netfilter é o subsistema do kerEste artigo apresenta os passos nel Linux por trás de ferramen- para se construir um módulo persotas de firewall como o famoso nalizado do Netfilter. A discussão se iptables. O subsistema Netfilter fornece concentra no exemplo de um firewall a estrutura para a filtragem de pacotes “cantante” que toca um som toda vez e tradução de endereço ao oferecer di- que chega um pacote. No entanto, versos ganchos (hooks) para a pilha do os conceitos deste artigo também se protocolo de rede. aplicam ao próprio uso criativo do O ambiente Linux inclui vários co- subsistema Netfilter. mandos, scripts e aplicativos front-end para acessar o subsistema Netfilter – incluindo ferramentas como o Shorewall e o Firestarter, assim como o nativo ip- As entradas de log do firewall mantêm tables – para você não ter que ser um os administradores a par dos pacotes de programador para acessar os poderes dados, mas, do ponto de vista fisiológico do Netfilter. Entretanto, se você estiver e psicológico, examinar arquivos de log pronto para um pouco de programação, o dia inteiro pode tornar-se muito entepode usar os ganchos embutidos do Ne- diante, e informações importantes podem tfilter para criar seus próprios módulos se perder. É claro que você precisará dos personalizados de firewall. arquivos de log de qualquer forma, mas
Firewall cantante
John Siebert – www.sxc.hu
por que não contar com um sistema secundário de alerta? O módulo Singwall descrito neste artigo oferece uma forma do administrador escutar o tráfego da rede em tempo real. O Singwall é uma extensão cantante de firewall para o Netfilter. O firewall apita quando um pacote chega, e o timbre do apito varia conforme o número da porta de destino do pacote.
Enganchado
O modelo empregado pelo Netfilter permite que os desenvolvedores programem módulos do kernel que se encaixam na corrente de execução dos pacotes de redes. A primeira tarefa que o módulo tem que cumprir é registrar um gancho. Esse registro
58
http://www.linuxmagazine.com.br
© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).
Netfilter | TUTORIAL
informa ao kernel o que o módulo pretende fazer. O registro é gerenciado por duas funções com nomes apropriados: nf_register_hook(struct nc_hook_ops*) e nf_unregister_hook(struct nc_hook_ops*). A segunda função remove o gancho. É importante descarregar o módulo, pois uma falha nessa tarefa poderia causar erros complicados no kernel. O ponto de cristalização para registrar um gancho é a struct nc_hook_ops:
Escolhendo um protocolo
Argumentos
Um protótipo de gancho, ou a função hook, para ser mais preciso, está definida em linux/netfilter.h:
As últimas três entradas são particularmente interessantes: pf especifica a família do protocolo (camada de rede OSI) na qual typedef unsigned int nf_hookfn( unsigned int hooknum, o gancho está interessado. linux/socket.h struct sk_buff **skb, contém uma lista de possíveis valores de const struct net_device *in, pf. O valor PF_INET é reservado para IPv4, const struct net_device *out, e é esse que o módulo Singwall utiliza. O int (*okfn)(struct sk_buff *) número do gancho, hooknum, especifica a ); posição onde o gancho entra. Os ganchos struct nf_hook_ops { são numerados, e uma macro lhes confere O argumento crítico, e na verdade o struct list_head list; nomes. Os valores possíveis para IPv4 são único argumento relevante do Singwall, nf_hookfn *hook; é o segundo da lista: skb. Esse argumenlistados em linux/netfilter_ipv4.h. struct module *owner; Queremos que o firewall cantante faça to é um ponteiro para uma struct sk_buff int pf; um som diferente para diferentes tipos de (um buffer de socket). O kernel usa essa int hooknum; int priority; pacotes que entram e saem. Dois ganchos estrutura de dados críticos de rede para }; – hooknum=NF_IP_LOCAL_OUT para pacotes que transferir dados eficientemente entre as saem e hooknum=NF_IP_LOCAL_IN para os que camadas de rede individuais. Essa struct fornece todas as informa- entram – cuidarão disso. A última entrada ções de que o kernel precisa para efetivar na struct nf_hook_ops especifica a prioridade o gancho. A primeira entrada é para o com a qual o kernel deve inserir o novo gerenciamento numa lista encadeada. A gancho na lista de ganchos existentes. A análise de pacotes que queremos que função hook em si é armazenada como O Netfilter processa os ganchos baseado nosso firewall cantante faça pode ser proum ponteiro em hook. O kernel depois em sua prioridade. Os valores de priority cessada com o uso do buffer de socket. A usa esse ponteiro para a função, para para IPv4 também estão detalhados em complexa struct sk_buff é fornecida pelo chamar o módulo do kernel. A entrada linux/netfilter_ipv4.h. Podemos confe- linux/skbuff.h. Essa struct usa um ponteiro owner (dono) guarda o módulo corres- rir um valor de priority=NF_IP_PRI_FIRST data para apontar para os dados da rede, pondente; essa entrada existe em várias ao Singwall para colocar o gancho no e extrai informações de gerenciamento topo da lista. outras estruturas do kernel. variadas. No caso de dados TCP, o firewall
Análise de pacotes
59
Linux Magazine #24 | Outubro de 2006
© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).
TUTORIAL | Netfilter
dados da rede chegando investigação de protocolo
Outros
UDP
ICMP
TCP
freqüência no buffer de escrita em anel
200
300
100
valor da freqüência
identificação do serviço
FTP
SSH
HTTP
SSL
1000
1500
2000
2500
freqüência no buffer de escrita em anel
valor da freqüência
fim da análise Figura 1 O kernel utiliza um gancho do Netfilter para passar pacotes que chegam para o Singwall. O módulo analisa o protocolo, calcula uma freqüência e grava os resultados num buffer em anel.
primeiro extrai o cabeçalho TCP, que por sua vez dá ao firewall a possibilidade de extrair o número da porta. Os valores de retorno do gancho especificam que tipo de ação pós-processamento deve ser aplicada aos pacotes. Os valores de retorno, que estão listados em linux/netfilter.h, incluem configurações como NF_DROP e NF_ACCEPT. NF_DROP ignora (drop, larga) o pacote após processá-lo, enquanto NF_ACCEPT deixa o pacote passar. Esse arranjo facilita bastante a escrita de um firewall mínimo. Se o filtro não for com a cara do pacote que acabou de inspecionar, o gancho retorna NF_DROP, e o kernel se encarrega do trabalho sujo. O firewall cantante sempre retorna NF_ACCEPT, já que simplesmente analisa os dados da rede, sem filtrá-los.
timbres. No caso do TCP, um segundo tom indicará a porta, e assim nos dirá o serviço respectivo, baseado na análise do cabeçalho TCP.
A struct tcphdr armazena os dados do cabeçalho. Para extrair o número da porta, o Singwall lê o campo dest. Primeiro, o valor tem que ser convertido para a ordem de bytes da máquina. A função ntohs(unsigned short int netshort) cuida disso, retornando o número da porta como um inteiro. O processo de análise de pacotes está mostrado na figura 1. Um problema na interface hardware/ humano impede uma implementação direta. O tráfego de rede normalmente é tão rápido que o ouvido humano não conseguiria registrar os apitos individuais. Para tornar as coisas mais lentas, o Singwall implementa um buffer em anel com um comprimento de RING_SIZE. O gancho fucn grava os sons a serem tocados nesse buffer. Dois contadores guardam a posição do próximo som a ser tocado (tone_counter) e a posição da próxima entrada livre (tone_pos_counter). Se os pacotes de rede chegarem rápido o suficiente para dessincronizar o tone_pos_counter e o tone_counter em mais do que o valor de RANGE_SYNC, o código os sincroniza de volta, especificando o tone_pos_counter para o valor de tone_counter. O buffer em anel é mostrado na figura 2. Essa abordagem ignora muitos pacotes em caso de tráfego de rede pesado, mas, como mostraram os testes práticos, isso não significa que as conexões perdidas vão fazer alguma falta. A implementação do firewall cantante que vimos até agora não teve problemas para seguir uma sessão normal de navegação na Web. Apesar de um ping 127.0.0.1 -f ou downloads em massa levarem a múltiplas ressincronizações, isso não estragou a cantoria. ➧
»tone_counter« menos »RANGE_SYNC«
Buffer em anel
»tone_pos_counter«
Opus 1
Como abertura, vamos pedir ao Singwall para etiquetar os pacotes UDP, TCP e ICMP com tons de diferentes
Figura 2 A função de gancho armazena os tons pendentes num buffer em anel. Antes de o buffer estourar, a ressincronização joga fora alguns dados.
60
http://www.linuxmagazine.com.br
© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).
Netfilter | TUTORIAL
Exemplo 1: Singwall #include #include #include #include #include #include #include #include #include
<linux/version.h> <linux/module.h> <linux/kernel.h> <linux/netfilter.h> <linux/netfilter_ipv4.h> <linux/init.h> <linux/tcp.h> <asm/io.h> <linux/inet.h>
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,16) #include <linux/in.h> #include <linux/ip.h> #endif #define RING_SIZE 500 #define SYNC_RANGE 100 MODULE_LICENSE(“GPL”); static wait_queue_head_t wq; static int thread_id; static DECLARE_COMPLETION(on_exit); static struct nf_hook_ops nfho_out,nfho_in; u16 tone[RING_SIZE]; int tone_counter; int tone_pos_counter; void update_tone_pos_counter(void) { if(tone_pos_counter<RING_SIZE-1) tone_pos_counter++; else tone_pos_counter=0; } void update_tone_counter(void) { if(tone_counter<RING_SIZE-1) tone_counter++; else tone_counter=0; } void check_syncing(void) { int counter; if ((abs((tone_pos_counter - tone_counter+RING_SIZE) % RING_SIZE))>SYNC_RANGE) { counter=tone_counter;
}
}
while (((abs((counter - tone_counter+RING_SIZE) % RING_SIZE))<=SYNC_RANGE)) { tone[(counter%RING_SIZE)-1]=0; counter++; pr_debug(“ %d “,(counter%RING_SIZE)-1); } pr_debug(“FirewallCantante: Ressincronizando %d<---%d!”, tone_counter,tone_pos_counter); tone_pos_counter=tone_counter;
static int thread_code(void *data) {
[...]
092 } 093 094 unsigned int hook_func( 095 unsigned int hooknum, 096 struct sk_buff **skb, 097 const struct net_device *in, 098 const struct net_device *out, 099 int (*okfn)(struct sk_buff *))
100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172
{
struct tcphdr *thead; struct sk_buff *sk=*skb; u16 port; char check; check=0; if (sk->nh.iph->protocol == IPPROTO_TCP) {tone[tone_pos_counter]=100; check=1;} if (sk->nh.iph->protocol == IPPROTO_UDP) {tone[tone_pos_counter]=200; check=1;} if (sk->nh.iph->protocol == IPPROTO_ICMP) {tone[tone_pos_counter]=300; check=1;} if (!check) return NF_ACCEPT; update_tone_pos_counter(); check_syncing(); pr_debug(“Contador da Posição do Tom: %d”, tone_pos_counter);
NOME DA SEÇÃO
001 002 003 004 005 006 007 008 009 010 011 012 013 014 015 016 017 018 019 020 021 022 023 024 025 026 027 028 029 030 031 032 033 034 035 036 037 038 039 040 041 042 043 044 045 046 047 048 049 050 051 052 053 054 055 056 057 058 059 060
check=0; if (sk->nh.iph->protocol == IPPROTO_TCP) { thead=(struct tcphdr *) (sk->data + (sk->nh.iph->ihl * 4)); port=ntohs(thead->dest); switch( port ) { case 21 : {tone[tone_pos_counter]=1000;check=1;break;} case 22 : {tone[tone_pos_counter]=1500;check=1;break;} case 80 : {tone[tone_pos_counter]=2000;check=1;break;} case 443: {tone[tone_pos_counter]=2500;check=1;break;} } if (check) { update_tone_pos_counter(); check_syncing(); pr_debug(“Contador da Posição do Tom: %d”, tone_pos_counter); }
}
} return NF_ACCEPT;
int init_module() { int counter; for (counter=0; counter<=RING_SIZE-1; counter++) tone[counter]=0; tone_counter=0; tone_pos_counter=0; init_waitqueue_head(&wq); thread_id=kernel_thread(thread_code, NULL, CLONE_KERNEL); if(thread_id==0) return -EIO;
}
nfho_out.hook nfho_out.hooknum nfho_out.pf nfho_out.priority
= = = =
hook_func; NF_IP_LOCAL_OUT; PF_INET; NF_IP_PRI_FIRST;
nfho_in.hook nfho_in.hooknum nfho_in.pf nfho_in.priority
= = = =
hook_func; NF_IP_LOCAL_IN; PF_INET; NF_IP_PRI_FIRST;
nf_register_hook(&nfho_out); nf_register_hook(&nfho_in); return 0;
void cleanup_module() { if(thread_id) kill_proc(thread_id, SIGTERM, 1); wait_for_completion(&on_exit); nf_unregister_hook(&nfho_in); nf_unregister_hook(&nfho_out); outb(inb_p(0x61) & 0xFC, 0x61); }
61
Linux Magazine #24 | Outubro de 2006
© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).
TUTORIAL | Netfilter
Buffer em anel
»tone_counter«
»tone_pos_counter«
»thread_code()«
hook_func()
Figura 3 Enquanto a função de gancho preenche o buffer em anel com entradas, uma thread paralela do kernel lê os dados e reproduz os sons no alto-falante interno do PC.
Música, maestro
Exemplo 01 02 03 04 05 06 07 08 09 10
O Singwall usa o alto-falante interno do PC para emitir os sons. O código O exemplo 1 implementa os conceitos manda o alto-falante apitar na freqüência recém-descritos. O módulo precisa de pedida (apesar de já termos tido alguns dois arquivos de inclusão nas versões problemas com alto-falantes mudos em 2.6.16 e posteriores do kernel. O bloco if hardwares mais novos). Nós preferimos nas linhas 11 a 14 cuida disso. O móduum comprimento de tom de 20 milisse- lo então prossegue, definindo os valores gundos – um equilíbrio entre a audibi- para o gerenciamento do buffer em anel: lidade e o processamento rápido, que é RING_SIZE e SYNC_RANGE. Esses valores poimportante para evitar a perda de mais dem ser modificados para refletir as suas pacotes do que o necessário. próprias necessidades. É claro que precisamos evitar o bloSe a macro DEBUG estiver definida quando queio do tráfego da rede pelo firewall você rodar o compilador, o sistema exibirá enquanto ele emite um som de 20 mi- mensagens em /var/log/messages. Note que lissegundos. Uma thread do kernel que o módulo registrará os valores de tone_counprocessa o buffer em anel, e emite os ter e tone_pos_counter, criando assim um tons individuais, oferece o paralelismo grande número de mensagens no arquivo de de que precisamos. Ela inclui um laço log. Esses dados são úteis para a depuração, while() que roda a cada dez milissegun- pois mostram como o módulo sincroniza dos. Esse estudo tecnológico consegue o buffer em anel quando não consegue passar sem usar travas entre ações pa- acompanhar o tráfego de rede. A rotina init do módulo (linha 140) ralelas – no pior caso, o firewall perde alguns tons, ou tropeça em seus pró- primeiro especifica os dois contadores do prios pés, o que é aceitável do ponto buffer em anel em zero. Depois, o init de vista musical. prossegue iniciando a thread, incluindo A thread, e portanto o laço infinito, as filas (linhas 147 a 149). Finalmente, o param quando o módulo é descarrega- gancho é registrado para pacotes que do. A figura 3 mostra como a função de chegam e saem e IPv4. A rotina de limgancho e as threads cooperam para lidar peza na linha 166 reverte esses passos, com o buffer em anel. removendo higienicamente o módulo do kernel. Só para ter certeza, a linha 171 contém um comando que desabilita 2: Makefile o alto-falante interno do PC.
#Mensagens de depuracao? #EXTRA_CFLAGS+=-DDEBUG ifneq ($(KERNELRELEASE),) obj-m := singwall.o else KDIR := /lib/modules/$(shell uname -r)/build PWD := $(shell pwd) all: $(MAKE) -C $(KDIR) SUBDIRS=$(PWD) modules endif
pacote for TCP, as linhas 120 a 136 geram uma segunda freqüência de acordo com o número da porta. Se você quiser, pode acrescentar mais serviços à lista de portas. As funções update_tone_pos_counter() (linha 30) e update_tone_counter (linha 35) cuidam da atualização dos contadores. A função check_syncing() (linha 40) sincroniza os dois ponteiros. Usar uma função para isso pode não ser muito elegante, mas funciona bem, é estável e delega responsabilidades claramente. O makefile do exemplo 2 ajuda a criar o módulo em pouquíssimo tempo, e digitar insmod singwall.ko como root carregará o módulo no kernel. O firewall cantante imediatamente inicia seu programa de concerto, colocando o alto-falante para atuar em harmonia com o tráfego de rede. É bem fácil distinguir entre páginas web criptografadas e não-criptografadas, por exemplo. O som das conexões HTTPS é mais alto que o de websites não-criptografados, e fácil de detectar, mesmo que você não tenha qualquer afinidade musical. É igualmente fácil distinguir entre pacotes SSH e FTP. Se você apagar os caracteres de comentário na linha 2 do makefile, poderá compilar o módulo em modo de depuração. Rodá-lo nesse modo lhe dará milhares de entradas nos arquivos de log – úteis para a solução de problemas, mas sem nenhum uso em operações normais. Aprecie o concerto e, se ficar cansado da música dos alto-falantes, simplesmente execute rmmod singwall para A função de gancho (linhas 94 a 138) con- desligar a cantoria. ■ fere o protocolo, baseada na entrada sk->nh. iph->protocol no buffer do socket passado para ela (linhas 107 a 112). Se o Singwall Mais Informações reconhecer o protocolo, ele envia uma fre[1] Netfilter: http://www.netfilter.org qüência ao buffer em anel (linha 115). Se o
Protocolo
62
http://www.linuxmagazine.com.br
© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).
Monte um cluster de servidores VMWare
TUTORIAL
Alta rotatividade
O que acontece se duas máquinas virtuais num hospedeiro VMWare utilizarem recursos demais? Numa máquina limitada, ambos os hóspedes sofrerão uma lentidão. Mas, se tivermos um cluster de hospedeiros, essa situação pode ser praticamente eliminada. por Bruno Gola
Rafael Rosa – www.sxc.hu
A
O cluster
de rede Gigabit Ethernet PCI Express. Na idéia de utilizar o VMWare [1] como um software para um am- Quando me refiro a clusters, este seria um versão que utilizamos do PXElinux, tivemos biente de testes de sistemas ope- servidor controlando alguns “rich clients”. O alguns problemas com a placa de rede Broracionais ou teste de produtos é maravi- servidor principal guarda todas as máquinas adcom BCM5751 na hora da inicialização lhosa. Mas quando esse ambiente acaba virtuais em seu disco, por exemplo, em /home/ remota, portanto tivemos de usar a solução sendo tanto de homologação quanto de vmware/VirtualMachines/ (o usuário vmware é do quadro Inicialização sem suporte a PXE. O produção e desenvolvimento, se tudo não utilizado como um usuário administrador servidor que controla os outros é um Dell for muito bem planejado, pode acabar das máquinas virtuais). O diretório /home é com processador Intel Pentium 4, 3.20 GHz, virando um pesadelo. exportado via NFS para as outras máquinas 4 GB de memória e interface de rede Gigabit Em uma empresa onde são necessárias hospedeiras VMWare, que não precisam de Ethernet PCI Express, com 4 discos de 100 várias máquinas virtuais ligadas ao mesmo disco rígido, já que a inicialização é feita a GB configurados com RAID 10 (interface tempo, algumas rodando servidores web partir da máquina principal, via rede, usando LSI Logic MegaRAID). ➧ e servidores de aplicação, outras servin- o padrão PXE. Assim, a máquina principal do como desktops de produção, apenas guarda o kernel e o diretório raiz (/) de cada um servidor VMWare não vai resolver o máquina do cluster, e exporta-os via NFS no problema. É aí que surge a necessidade momento da inicialização. As outras máquinas de outro servidor para também fazer o só utilizam processamento e memória. Na serviço de hospedeiro de máquinas virtu- verdade, você pode usar o disco dessas máais. Mas deixar separados dois servidores quinas e montar uma partição, por exemplo, que desempenham a mesma tarefa não em /work, para facilitar o processo de criação faz sentido. Afinal de contas, imagine de máquinas. Nesse caso, a máquina é criada que você tenha uma máquina virtual em /work, que é o disco físico da máquina, e que precise ser ligada, mas sua máquina depois transferida para o disco do cluster. Essa hospedeira está sem recursos. Você só solução ainda diminui a carga de entrada e terá duas opções: ou você desliga uma saída (leitura e escrita) na máquina principal das máquinas virtuais já ligadas, ou es- e na rede. O restante do disco pode e deve pera. Pode ser que a sua outra máquina ser usado para swap. esteja com recursos suficientes para executar mais uma máquina virtual, porém, transferir os dados da máquina virtual de uma para a outra é uma solução um tan- O hardware utilizado consistia de servidores to ineficiente, já que ficar transferindo Dell com processador Intel Pentium 4 3.20 máquinas toda vez que faltarem recursos GHz, 4 GB de memória e interface de rede não parece realmente eficiente. Portan- Gigabit Ethernet PCI Express, outros servito, a solução pode ser a criação de um dores Dell com processador Intel Pentium Figura 1 Diagrama da relação entre os servidores. cluster de máquinas virtuais. 4 3.00 GHz, 4 GB de memória e interface
Hardware
63
Linux Magazine #24 | Outubro de 2006
© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).
TUTORIAL | VMWare GSX
Inicialização sem suporte a PXE Quando a inicialização pelo padrão PXE não é possível, podemos utilizar o carregador de inicialização (o GRUB, nesse exemplo) como alternativa. Tendo um sistema básico instalado, basta passar as opções corretas para o kernel, para que este monte o diretório raiz via rede, utilizando NFS. O trecho a seguir mostra a configuração do GRUB para fazer isso: title Debian GNU/Linux, kernel 2.6.13-5-486 root (hd0,0) kernel /vmlinuz root=/dev/nfs nfsroot=192.168.0.101:/home/cluster/ ➥rootfiles/01-00-12-3f-76-83-94 ip=192.168.0.103::192.168.0.1: ➥255.255.255.0:pushkin:eth0:off rw devfs=nomount mem=4096m 26 savedefault boot
Com essa configuração, é possível rodar até 28 máquinas simultaneamente (sete por servidor), cada uma com uma média de 256 MB de RAM. Dependendo do tipo de máquina necessária, pode-se rodar até mais máquinas por servidor.
Configurando o ambiente Para a montagem do cluster, será necessário um servidor DHCP e o TFTP para a inicialização via rede, além de um servidor NFS. A figura 1 mostra a relação entre os servidores.
Exemplo 1: dhcpd.conf option option option option
domain-name “dominio.net”; routers 192.168.0.1; subnet-mask 255.255.255.0; domain-name-servers 192.168.0.1;
ignore unknown-clients; allow booting; allow bootp; next-server 192.168.0.101; filename “pxelinux.0”; host host1 { hardware ethernet 00:14:22:7A:7D:3C; fixed-address 192.168.0.102; server-name “host1”; } host host2 { hardware ethernet 00:12:3F:76:83:94; fixed-address 192.168.0.103; server-name “host2”; } host host3 { hardware ethernet 00:12:3F:76:81:92; fixed-address 192.168.0.104; server-name “host3”; }
subnet 192.168.0.0 netmask 255.255.255.0 { }
Em um servidor Debian, os serviços necessários podem ser instalados da seguinte forma: apt-get install dhcp3-common dhcp3-server ➥ atftp atftpd nfs-kernel-server
O exemplo 1 mostra uma configuração simples para o servidor DHCP. Note que é importante ter o endereço MAC de cada interface de rede das máquinas hospedeiras VMWare, para que na hora da inicialização cada um encontre seus arquivos (seu diretório raiz). O parâmetro next-server define qual servidor TFTP deve ser utilizado para a inicialização; já o filename informa qual arquivo deve ser utilizado para essa inicialização. É possível fazer essa definição individualmente para cada máquina, bastando colocar dentro da definição de host. É importante notar também o parâmetro ignore unknown-clients, que faz com que o nosso servidor DHCP não interfira no resto da rede. Algumas máquinas possuem placas de rede que não suportam a inicialização via PXE; nesse caso, existe uma solução utilizando o disco apenas com um carregador de inicialização e um sistema básico instalados, montando o diretório raiz usando NFS (quadro 1). A configuração do servidor TFTP é bastante simples, e é armazenada no arquivo /etc/default/atftpd (no Debian). Um exemplo desse arquivo seria: USE_INETD=false OPTIONS=”--daemon --port 69 ➥ --retry-timeout 5 --mcast-port 1758 ➥ --mcast-addr 192.168.0.0-255 --mcast-ttl 1 ➥ --maxthread 100 /home/cluster/bootfiles”
A opção mais importante é a última, que especifica o caminho que servirá como raiz para o TFTP (no caso, /home/ cluster/bootfiles).
Por último, devemos configurar o servidor NFS para que ele exporte o diretório raiz e o /home para os servidores hospedeiros. A configuração do NFS é feita no arquivo /etc/exports: /home/cluster/rootfiles/01-00-14-22-7a-7d-3c ➥ host1(rw,no_root_squash,async) /home/cluster/rootfiles/01-00-12-3f-76-83-94 ➥ host2(rw,no_root_squash,async) /home/cluster/rootfiles/01-00-12-3f-76-81-92 ➥ host3(rw,no_root_squash,async) /home/ host1(rw,no_root_squash,async) ➥ host2(rw,no_root_squash,async) ➥ host3(rw,no_root_squash,async)
Note que os endereços MAC e as máquinas são os mesmos que foram configurados no servidor DHCP. Não se esqueça de colocar no arquivo /etc/ hosts.allow as linhas: portmap: 192.168.0.102 192.168.0.103 ➥ 192.168.0.104 lockd: 192.168.0.102 192.168.0.103 ➥ 192.168.0.104 rquotad: 192.168.0.102 192.168.0.103 ➥ 192.168.0.104 mountd: 192.168.0.102 192.168.0.103 ➥ 192.168.0.104 statd: 192.168.0.102 192.168.0.103 ➥ 192.168.0.104
para liberar para as máquinas a montagem dos diretórios / e /home via NFS.
Preparando para a inicialização No nosso exemplo, a estrutura de diretórios pode ser a seguinte: /home/cluster/bootfiles - arquivos de boot ➥ (pxelinux.0, pxelinux.cfg/...) /home/cluster/rootfiles - diretório raiz de ➥ cada máquina (host1/, host2/, host3/, ...) /home/vmware/VirtualMachines/ - máquinas ➥ virtuais compartilhadas entre as ➥ máquinas do cluster /work/ - diretório local para instalação ➥ de máquinas
Para gerarmos o diretório raiz de cada máquina, usamos o comando debootstrap: apt-get install debootstrap debootstrap --verbose --resolve-deps ➥ “sarge” ➥ “/home/cluster/rootfiles/default/” ➥ “http://ftp.br.debian.org/debian/”
No comando acima, sarge é a versão do Debian, /home/cluster/rootfiles/default/
64
http://www.linuxmagazine.com.br
© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).
VMWare GSX | TUTORIAL
é o diretório onde serão colocados os ar- instalação comum do VMWare, quivos, e http://ftp.br.debian.org/debian/ especificando o diretório das máé o repositório a ser usado para fazer o quinas virtuais como /home/vmware/ download dos arquivos. VirtualMachines/. A figura 2 mostra Feito isso, basta copiar o diretório de- um console do VMWare sendo fault/ para o endereço MAC da interface executado, conectado em algum de cada máquina e, para facilitar, criar dos servidores, que está com seis um link simbólico para o hostname da máquinas ativas, entre elas Winmáquina, ficando: dows®, SCO UNIX® e Solaris. ln -s /home/cluster/rootfiles/ ➥01-00-14-22-7a-7d-3c /home/cluster/ ➥rootfiles/host1 ln -s /home/cluster/rootfiles/ ➥01-00-12-3f-76-83-94 /home/cluster/ ➥rootfiles/host2 ln -s /home/cluster/rootfiles/ ➥01-00-12-3f-76-81-92 /home/cluster/ ➥rootfiles/host3
Conclusão
Utilizar uma solução de cluster torna bastante prático o uso de máquinas virtuais em ambientes de produção, homologação e desenvolvimento. Outras funcionalidades podem ser imple- Figura 2 Servidor VMWare rodando diversas máquinas virtuais. mentadas, tais como políticas Uma dica importante nesse ponto é de autenticação centralizada para as Mais Informações que a máquina central já tenha todos os máquinas virtuais, ou a criação de uma pacotes e atualizações necessários no mo- política de “dono e grupo” para cada [1] VMWare: http://www.vmware.com mento dessa cópia. Caso contrário, será máquina virtual. É de grande utilidade a necessário refazer esses mesmos procedi- criação de scripts usando-se o comando mentos para cada uma das máquinas. vmware-vmx para verificar a situação das O autor Para especificarmos o diretório raiz máquinas virtuais em cada hospedeide cada máquina no cluster, criamos ro. O exemplo 2 mostra um script de Bruno Gola (brunogola@gmail.com) tem dentro do diretório /home/cluster/boo- exemplo que utiliza o vmware-vmx para 19 anos, cursa o segundo ano de Ciência tfiles/pxelinux.cfg/ um arquivo para verificar quais máquinas estão rodanda Computação no Centro Universitário Senac e trabalha na área de infra-estrucada máquina e um diretório dentro de do em quais hospedeiros. Essa solução tura de projetos na empresa Eversyste/home/cluster/bootfiles/, que armazenará ajuda bastante a organizar a sua rede ms. Utiliza exclusivamente Software Livre a imagem do kernel de cada máquina. de máquinas virtuais e facilita muito há 2 anos. Nas horas vagas, escuta uma O nome, tanto do arquivo quanto do o uso do VMWare em um ambiente boa música, toca guitarra e mergulha. diretório, deve ser o endereço MAC da com várias máquinas. ■ interface de rede de cada máquina. Para facilitar, você pode criar um link simbóExemplo 2: Script para verificação lico, por exemplo:
de localização das máquinas
ln -s /home/cluster/bootfiles/ ➥01-00-14-22-7a-7d-3c /home/cluster/ ➥bootfiles/host1
Um exemplo do conteúdo do arquivo /home/cluster/bootfiles/pxelinux.cfg/0100-14-22-7a-7d-3c: label linux kernel 01-00-14-22-7a-7d-3c/bzImage append vga=normal root=/dev/nfs ➥ nfsroot=192.168.0.101:/home/cluster/ ➥rootfiles/01-00-14-22-7a-7d-3c ➥ ip=192.168.0.102::192.168.0.1: ➥255.255.255.0:host1:eth0:off ➥ rw devfs=nomount mem=4080m
Configurando o VMWare Com o cluster montado e funcionando, basta configurar o VMWare para cada máquina. Na verdade não existe nenhuma configuração especial; basta fazer uma
vmwarecmd=”/usr/local/lib/VMWare.com/VMware-server-1.0.0-28343/bin/vmware-cmd” list=”/home/vmware/scripts/maquinas_ativas/VirtualMachines_ativas.txt” vmfile=”/etc/vmware/vm-list” vmware_servers=”host0 host1 host2 host3” > $list for host in $vmware_servers do echo -e “#########\n${host}\n#########\n” >>${list} ssh -n -T -o BatchMode=yes vmware@${host} cat /etc/vmware/vm-list ➥ | grep ^config | sed -e ‘s/Virtual Machines/VirtualMachines/g’ | cut -d” “ -f2-10 ➥ | sed -e ‘s/”//g’ | sed -e ‘s/ /\\ /g’ | sed -e ‘s/ /\\ /g’ | \ while read machine do estado=$(ssh -n -T -o BatchMode=yes vmware@${host} ${vmwarecmd} ${machine} getstate) estado=${estado#getstate() = } if [ $estado == ‘on’ ] then echo -e “${machine}” >> ${list} fi done echo “” >> ${list} done
65
Linux Magazine #24 | Outubro de 2006
© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).
Richa
rd
son Simp
– ww
c.h w.sx
u
Monitoramento completo de redes
SYSADMIN
Ampla competência O monitoramento de redes é uma tarefa repetitiva e freqüentemente monótona. O Zabbix facilita imensamente essa tarefa, permitindo o diagnóstico rápido dos problemas da rede e a geração de gráficos. por Marcelo Honório
O
Figura 1
Zabbix [1] é um software de mo- ficar em uma máquina Linux ou Mac nitoramento e disponibilidade OS, pois não há um pacote disponível para criado em 2001 para ajudar a Windows na versão estável atual. Os dados resolver alguns dos principais problemas das máquinas podem ser coletados de três enfrentados pelos administradores de rede. modos: o primeiro é pelo Agente Zabbix, A necessidade desses profissionais não es- que fica instalado na máquina e rodando tava somente em monitorar os servidores, como um daemon, esperando as conexões mas também em gerar relatórios, históri- do Servidor Zabbix. O segundo modo, para cos, gráficos, e saber se a rede atendia ao a monitoração inclusive de switches e rotepercentual de Acordo de Nível de Serviço adores, utiliza-se do monitoramento pelo (SLA, do inglês Service Level Agreement), protocolo SNMP. Por fim, há a opção de que é um acordo firmado entre o cliente monitorar uma máquina por meio de vee o contratado para estabelecer um nível rificações simples, como ping e varreduras de disponibilidade dos serviços. O Zabbix de portas abertas. Essa opção é útil quando surgiu para tentar resolver todos esses pro- não se tem acesso à máquina para instalar blemas através de uma solução unificada. o Agente Zabbix. Por fim, existe a interface O desenvolvimento do software é centrali- web, que permite ao administrador visualizado na cidade de Riga, na Letônia. zar os dados coletados (figura 1). O programa é dividido em três partes A versão estável atual do Zabbix é a – Servidor Zabbix, Agente Zabbix e Interface 1.1.1, que traz muitas diferenças em relação – e conta com suporte multiplataforma, ou à anterior. Na versão 1.0, a interface não seja, é possível não só monitorar máquinas era muito agradável e não possuía todas as Linux, mas também Windows® e Mac funcionalidades da versão mais atual, como OS. Porém, o Servidor Zabbix – respon- o cálculo da SLA. O Zabbix é um software sável por coletar e armazenar os dados de livre, pois adota a Licença Pública Geral monitoramento – deve necessariamente GNU (GPL). A próxima versão estável será a 1.4, trazendo muitas novidades. Uma delas será a possibilidade de criar as tabelas do banco de dados via Web. Na versão atual, o usuário precisa executar dois scripts, contendo a estrutura e o conteúdo básico para o programa funcionar. Outra novidade é a opção de rodar o Servidor Zabbix em máquinas Windows. A versão 1.4 trará uma interface mais intuitiva e a tradução para a língua portuguesa. Mais detalhes em [2]. O Zabbix depende de alguns outros softwares para rodar. Para A interface web mostra um exemplo de tela de monitorameno Servidor e o Agente Zabbix, é to simultâneo de diversas máquinas. preciso ter o pacote Autotools ins-
talado, além do compilador gcc e o suporte ao protocolo SNMP. Para a interface, que não deve necessariamente estar instalada na mesma máquina que o Servidor Zabbix, é preciso ter instalados o Apache, um sistema gerenciador de bancos de dados MySQL ou PostgreSQL, a linguagem PHP e a extensão PHP-GD para a geração dos gráficos.
Diferencial
Há diversos softwares de monitoramento atualmente. O Nagios [3], por exemplo, é uma excelente opção, que faz verificações por ping e SNMP. Entretanto, não traz a opção de gerar gráficos. O MRTG [4] é uma ferramenta escrita em Perl para monitorar banda, capaz de gerar gráficos bastante explicativos. Porém, falta nele o recurso de gerar alertas e um monitoramento mais efetivo de outros tipos de máquinas sem suporte a SNMP. No Nagios, não é possível criar dependências de alertas. Por exemplo, se houver algumas máquinas conectadas a um switch, e o mesmo, por algum motivo, ficar indisponível, o programa gerará um alerta de queda para todas máquinas. No Zabbix isso não ocorre, pois é possível configurar dependências no software. Num cenário como o da figura 2, seria preciso somente configurar a dependência das máquinas em relação ao switch para que, assim que ele saísse do ar, fosse gerado um alerta relativo somente ao switch, e não a todas as máquinas. Um último recurso, não menos importante, é a criação de modelos (templates) de máquinas. No Zabbix, não é preciso cadastrar item a item de monitoramento para cada máquina. Pode-se simplesmente criar um modelo, que as máquinas cadastradas herdam esses itens e, se for preciso, é possível personalizá-los de acordo com suas necessidades.
66
http://www.linuxmagazine.com.br
© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).
Zabbix | SYSADMIN
O uso de modelos é útil quando se tem diversas máquinas que sirvam para um mesmo propósito. Em servidores web, por exemplo, pode-se monitorar: o uso do processamento, uso da memória, espaço livre em disco, serviço HTTP e gerenciador de banco de dados. No momento de criarmos esses itens de monitoramento, somente um modelo precisaria ser cadastrado, pois suas características seriam herdadas por todas as máquinas. Com isso, o esforço de configuração e gerenciamento fica bastante reduzido e simplificado. Não importa quantos servidores web existam; eles herdarão os itens de monitoramento do template.
Alertas
Os alertas do Zabbix são personalizados. Para cada item monitorado, pode-se colocar uma condição a respeito do alerta ser verdadeiro ou falso. Além disso, cada item pode ser associado a um nível de alerta. A cada alerta verdadeiro emitido, há as opções de enviar um email com a situação ou executar um comando remoto no cliente, caso este esteja usando o Agente Zabbix. Enviar um comando remoto é vantajoso quando há quedas de um servidor web Apache, por exemplo. Nesse caso, pode-se tentar resolver o problema com o envio de um comando remoto ao servidor, fazendo-o reiniciar o serviço. Para o monitoramento de discos, é possível criar alertas para quando uma partição atingir um determinado percentual de ocupação do espaço total. Dependendo do percentual alcançado, é atribuído um nível de importância. Todos os alertas podem ser enviados a grupos de usuários, o que permite que somente os responsáveis pela máquina sejam avisados.
Gráficos, telas e mapas
rem suas características a partir de um determinado modelo que possua um gráfico conseqüentemente gerarão gráficos equivalentes. Isso elimina boa parte do esforço necessário à configuração.
Instalação
As instruções de instalação abaixo são baseadas em uma máquina com Linux, Apache, PHP, PHP-GD, SNMP e MySQL. Segundo o site de download do programa [5], o Zabbix já está incluído nos repositórios das seguintes distribuições: Alt Linux, CRUX, Debian, Gentoo e Ubuntu, além do FreeBSD. Se você utiliza um desses sistemas, a instalação do programa segue o padrão de qualquer pacote nativo da distribuição. Caso contrário, no mesmo site há pacotes binários para Debian, FreeBSD, HP-UX, SUSE 9.0, Solaris 9, OpenBSD Tru64, Ubuntu 5.10 e Windows. Baixe o pacote adequado ao seu sistema e instaleo com o gerenciador de pacotes. Se seu sistema não estiver incluído nessa lista, ou se você preferir compilar o programa ao invés de usar pacotes pré-compilados, baixe o código-fonte do Zabbix 1.1.2 e descompacte-o. Inicie a instalação pelo banco de dados. Na shell, execute: $ mysql –u<nome_do_usuário> –p<senha> mysql> create database zabbix; mysql> quit; $ cd create/mysql $ cat schema.sql |mysql –u<nome_do_usuário> ➥ –p<senha> zabbix $ cd ../data $ cat data.sql |mysql –u<nome_do_usuário> ➥ –p<senha> zabbix
Após isso, vem a compilação dos binários: $ ./configure –-enable-server –-with-mysql ➥ –-with-net-snmp $ make $ make install
Essa é a parte mais interessante do software. Não adianta nada coletar dados se não conseguirmos exibi-los de forma Para cadastrar uma máquina a ser clara e simples. O Zabbix oferece três monitorada, acesse a página http://ip_ formas de exibir essas informações: grá- frontend/zabbix e efetue o login como ficos, telas e mapas. As diferenças entre administrador – sem senha, por padrão. essas formas infelizmente não são intui- Na aba Configurações, clique em Hosts | tivas a partir de seus nomes: uma tela é Adicionar host, preencha as informações um conjunto de gráficos, enquanto um solicitadas e salve as configurações. mapa é um conjunto de máquinas exiNesse momento a máquina ainda não bidas em uma única imagem. está sendo monitorada; é preciso que sejam O emprego de modelos de máquinas associados a ela alguns itens de monitotambém tem utilidade na geração de ramento. Por padrão, já existem alguns gráficos. Todas as máquinas que herda- modelos de monitoramento de máquinas.
Figura 2 Um esquema das partes do Zabbix, mostrando a relação de dependência entre as máquinas e o switch.
Caso a máquina monitorada seja Linux, associe-a ao modelo Unix. A partir da associação, o Servidor Zabbix inicia a coleta dos dados de monitoramento.
Conclusão
Zabbix é uma ótima ferramenta para quem procura monitorar uma rede com segurança e credibilidade. A cada versão lançada, surgem muitas novidades de grande valia para o administrador de redes. Através dos gráficos, é possível verificar todo o desempenho de uma determinada máquina. Pelos mapas, é possível verificar a saúde da rede; se houver alguma máquina gerando um alerta, além de recebê-lo por email, o administrador pode visualizá-lo no mapa. Na versão 1.4, estará disponível a tradução do software para a língua portuguesa, feita pelo autor deste artigo. ■
Mais Informações [1] Zabbix: http://www.zabbix.com [2] Recursos da próxima versão do Zabbix: http://www.zabbix.com/next.php [3] Nagios: http://www.nagios.org [4] MRTG: http://oss.oetiker.ch/mrtg/ [5] Download do Zabbix: http://www.zabbix.com/ download.php
O autor Marcelo Honório tem 21 anos e utiliza software livre há 3. É auxiliar técnico da Fundação de Amparo à Pesquisa do Estado de São Paulo (FAPESP). Formou-se técnico de Redes de Comunicação pela Escola Senai Suíço-Brasileira e é graduando em Ciência da Computação pelo Centro Universitário Senac. É o tradutor da versão em português do Zabbix desde a versão 1.1.2.
67
Linux Magazine #24 | Outubro de 2006
© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).
Usando o tar para se precaver
SYSADMIN
Salva-vidas Use um tarball para restaurar o seu sistema rapidamente – sem uma reinstalação completa. por Markus Klimke
Cr
O
aig
w Je
ell
–w
. sx ww
c.h
tar é uma ferramenta poderosa descompactar o arquivo em outro disco, que data do início da história ou outro sistema de arquivos, em caso do Unix, e todas as distribui- de emergência ou se for necessário criar ções Linux incluem uma variante GNU uma cópia. desse programa. O tar foi originalmente A opção -c manda o tar criar um ardesenvolvido como “tape archiver” (ar- quivo; -p passa as permissões, e -v (verquivador em fita), mas foi continuamen- bose) fornece uma saída detalhada na te estendido e melhorado ao longo dos tela. -f dá um nome ao arquivo que você anos. Sua tarefa original de armazenar está criando. A barra depois do nome da dados numa fita magnética é só uma imagem indica o ponto de início para o das muitas aplicações que o tar domina arquivamento, e o -j compacta o arquivo hoje em dia. final com Bzip2. À primeira vista, pode parecer estraAo invés de -j, pode-se especificar nho compactar uma instalação de Linux -z para usar o gzip na compressão do num tarball e descompactá-la em outro arquivo. As diferenças são o tamanho local para manter o mesmo sistema Linux final e o tempo levado para criar o arfuncional que se tinha antes. Entretanto, quivo: o gzip é mais rápido, mas gera o seguinte comando: arquivos maiores; o bzip2 leva mais tempo, mas utiliza um método de tar -cvjpf /tmp/data-da-imagem.tar.bz2 / compressão mais eficiente. A duração do becape e o tamanho final do tarball grava uma fotografia completa da sua dependem do seu processador e dos instalação Linux num arquivo. Pode-se dados sendo arquivados.
u
Especificando o conteúdo Até agora, tudo bem: mas, se você tentar fazer um becape como o descrito, perceberá diversas mensagens de erro. Como dito acima, mandamos o tar criar uma imagem do sistema de arquivos raiz, então ele tentará se adicionar recursivamente ao becape. E enquanto faz isso, ele nos diz que o arquivo de imagem foi modificado durante o arquivamento. Poderíamos conviver com isso, mas não faz sentido adicionarmos todos nossos arquivos e diretórios à imagem. Você provavelmente quer guardar os dados do seu diretório home numa mídia de armazenamento externa em intervalos regulares, mas dados voláteis como esses não devem fazer parte da sua imagem de recuperação. Esses dados não têm nada a ver com a restauração do sistema, e só aumenta desnecessariamente o tamanho do tarball.
68
http://www.linuxmagazine.com.br
© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).
Tar | SYSADMIN
Para excluir arquivos e diretórios explicitamente do tarball, o tar oferece a opção --exclude-from. Essa opção lê as entradas de arquivos e diretórios a serem excluídos do arquivamento a partir de um arquivo: user # cat << EOF >> /tmp/out > /home/* > /mnt/* > /usr/portage/distfiles/* > /tmp/backup-date.tar.bz2 > EOF user # tar -cvjp --exclude-from=/tmp/out ➥ -f /tmp/data-da-imagem.tar.bz2 /
Os curingas depois dos nomes de diretórios eliminam todos os arquivos e diretórios sob o diretório que você quiser excluir. Se você ignorar o curinga, o tar excluirá todo o diretório do arquivamento. O arquivo de exclusões também deve conter o nome da imagem. Antes de você criar uma imagem, rode o comando mount para verificar o que está montado no momento. Todas as mídias externas e compartilhamentos de rede que você tiver montado serão incorporados à imagem se você se esquecer de desmontálos ou excluí-los. E não nos esqueçamos que certas distribuições não montam a partição raiz por motivos de segurança. Nesse caso, você deve se certificar de que a raiz seja adicionada à imagem. Depois de criar uma imagem com o conteúdo necessário, o próximo passo é usar uma ferramenta de gravação de sua escolha – k3b, por exemplo – para gravar a imagem num DVD. Se você não tiver uma mídia disponível, ou se não tiver o espaço necessário para a imagem, pode utilizar outras máquinas da rede para gravar a imagem: tar -cvjp --exclude-from=/tmp/out -O | ssh ➥ usuário@máquina_remota ‘cat &gt; ➥ /home/usuário/data-da-imagem.tar.bz2’
O quadro Tar pelos canos explica o uso do tar pela rede.
Linha de salvamento
Durante o processo de recuperação – ou seja, o processo de restauração da imagem que você criou, num novo disco rígido – um live CD com Linux pode ser de grande ajuda, pois permite que você inicie uma distribuição mínima. O Live CD mais popular no mundo costuma ser o Knoppix [1] e, no Brasil, o Kurumin [2]. Como todos os passos para restaurar uma imagem se passam na linha de comando, um Live CD sem
Figura 1 Particionamento do disco através do redirecionamento de comandos para o fdisk. Os resultados são mostrados no final.
interfaces gráficas, como o do Gentoo [3], Grml [4] ou as mídias de instalação do Suse ou do Red Hat, em modo de recuperação, devem resolver sem dificuldade. Todas essas distribuições fornecem todas as ferramentas de que você precisa. Para liberar o leitor de DVD para colocar o disco com a imagem de recuperação após a inicialização, você precisa iniciar a distribuição Live de forma a colocar o sistema operacional na memória da máquina. Depois, pode-se desmontar o Live CD e inserir a mídia com a imagem de recuperação. A maioria dos sistemas Live CD chamam esse parâmetro de boot de toram. Se você usar o Knoppix ou o Kurumin, deve digitar knoppix toram; no Grml, seria grml toram. E se você tiver o Live CD do Gentoo, o comando gentoo docache cuidará disso.
Preparando seu disco rígido Antes de restaurar a imagem, primeiro você precisa particionar e formatar seu disco rígido. A ferramenta cfdisk (figura 2) é amigável e interativa. Contudo, para a automatização das tarefas, é melhor usarmos o “fdisk”. Vamos iniciar o processo de recuperação na linha de comando do Live CD. Comece digitando fdisk /dev/hda para entrar no modo de comando do fdisk. Digitando m, o fdisk lista as opções disponíveis. Se o disco não for novo em
folha, talvez você precise apagar todas as partições do disco. Digite p (de print) para mostrar na tela uma visão geral das partições atuais do disco rígido; d (delete) apaga as partições, uma por vez. A tabela Comandos do Fdisk exibe os comandos necessários para particionar um disco rígido com quatro partições. O comando n (de new) manda o fdisk criar uma nova partição. O fdisk então perguntará se você quer uma partição primária ou estendida. Ele também pede um número para a partição e os números de seus cilindros de início e fim, ou seu tamanho (em KB, MB ou GB). O comando a (de active) marca a primeira partição como sua partição de inicialização. Para a partição swap, é necessário pressionar t (de type) e informar o tipo 82. ➧
Exemplo 1: Arquivo de controle livecd root # cat << EOF >> /tmp/fdisk.part > n > p > 1 > > +64M > n > p > 2 > ... (aqui vão outros comandos que você queira) > w > EOF livecd root # fdisk ➥ /dev/hda < /tmp/fdisk.part
69
Linux Magazine #24 | Outubro de 2006
© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).
SYSADMIN | Tar
Tar pelos canos A estrutura de pipes do Unix é uma grande aliada do tar. Através de um pipe, podemos jogar a saída do comando tar para que outro arquivo cuide dela. Quando o tar ainda não era capaz de comprimir sua saída com o algoritmo gzip, era comum vermos a linha de comando tar -cO diretório/* | gzip -c &gt; data-imagem.tar.gz. O comando para descompactar, nessa época, seria gunzip -c data-imagem.tar.gz | tar -xvp. Nesses casos, a opção -O faz com que os dados saídos do tar sejam enviados para a entrada padrão, pois é esse o objeto de trabalho do pipe. Os pipes nos permitem também enviar conjuntos de dados através de uma conexão SSH. Nesse caso, os dados são “aglutinados” pelo tar, enviados pela rede de forma criptografada (já que trata-se do SSH), e algo é feito na outra extremidade da conexão. Podemos, por exemplo, simplesmente aglutinar os dados com o tar, sem qualquer compressão, e enviá-los pelo pipe: tar -cO /diretório/origem | ssh usuário@remoto ‘tar -xvp’
Esse exemplo mostra uma forma interessante de copiarmos dados através da rede. Note que ele aglutina os dados numa ponta, passa-os pelo pipe para uma conexão SSH na máquina remoto, e lá os expande novamente. Naturalmente, para isso temos os comandos scp e sftp, o que torna essa aplicação um tanto inútil. Uma forma realmente útil de transmitirmos uma imagem de backup pela rede seria aglutinarmos e compactarmos de um lado, e jogarmos a saída pelo pipe para a máquina remota. Para isso, faríamos: tar -zcvO /diretório/origem | ssh usuário@remoto ‘cat > data-imagem.tar.gz’ Nesse exemplo, é necessário usarmos o comando cat e redirecionarmos sua saída para o arquivo data-imagem.tar.gz. Pesando os parâmetros Se tivermos uma conexão rápida entre as máquinas local e remota, podemos realizar a aglutinação e a compactação em duas etapas, dividindo assim a carga sobre o processador:
tar -cvO /diretório/origem | ssh usuário@remoto ‘gzip > data-imagem.tar.gz’ Essa abordagem faz com que a máquina local dedique-se somente à aglutinação dos arquivos em /diretório/origem, enquanto a máquina remota se encarrega somente da compressão dos dados. Esssa é uma boa divisão de tarefas. Porém, esse uso do pipe faz com que mais dados sejam transmitidos através da rede. Como geralmente a velocidade da rede é o gargalo nessa comunicação, pode ser mais interessante transmitir os dados já compactados, diminuindo assim o uso da rede. Cabe ao usuário pesar os principais parâmetros nessa operação: a divisão de tarefas e a velocidade de finalização da tarefa. Existe ainda uma opção mais complexa, a compactação por SSH. Usando a opção -C no comando ssh, comprimem-se os dados para melhorar a velocidade de comunicação. Se você precisar da velocidade de transmissão e da divisão de tarefas, pode usar o ssh dessa forma: tar -cO /diretório/origem | ssh -C usuário@remoto ‘gzip &gt; data-imagem.tar.gz’ Entretanto, como a opção -C realiza uma forma de compressão, é de se supor que essa seja a pior saída possível, em qualquer caso, já que realiza a tarefa mais trabalhosa (a compressão e descompressão dos dados) três vezes, em vez de uma: na saída por SSH, na chegada por SSH, e novamente no armazenamento, pelo gzip.
Agora que você já particionou seu disco, talvez você queira gravar nele essas informações, digitando w (de write) para gravá-las no registro mestre de inicialização (MBR, ou Master Boot Record). Recomenda-se verificar o particionamento nessa etapa, com o comando fdisk -l /dev/hda (figura 1). Se você não quiser digitar os comandos de particionamento interativamente, pode guardá-los num arquivo de controle e passar o arquivo para o fdisk. O exemplo 1 mostra um arquivo de controle. O próximo item da lista é formatar as partições recém-criadas com algum sistema de arquivos, para gerenciar os arquivos e diretórios que você quer restaurar. Os sistemas de arquivos mais
Recuperação da imagem
populares para sistemas desktop Linux são Ext3, ReiserFS e XFS. Sistemas de arquivo com journal (como são os três citados) necessitam de mais espaço em Isso completa o trabalho preparatório, e disco. Num sistema de arquivos como o agora podemos seguir para a restauração Ext2, que não dispõe de journal, 32 MB da imagem no disco. O último passo é são suficientes para o /boot. Os comandos montar as partições recém-criadas no sisde formatação para esses três sistemas de tema de arquivos do live CD. Utilizamos arquivos são mke2fs -j, mkreiserfs e mkfs. o Gentoo CD do Gentoo para isso: xfs, respectivamente, seguidos do nome da partição. Para formatar a partição raiz user # mount /dev/hda3 /mnt/gentoo de nosso exemplo com ReiserFS, o co- user # mkdir /mnt/gentoo/{boot,home} user # mount /dev/hda1 /mnt/gentoo/boot mando então seria mkreiserfs /dev/hda3. user # mount /dev/hda4 /mnt/gentoo/home O comando mkswap /dev/hda2 cria a par- user # swapon /dev/hda2 tição swap. Se você estiver interessado em mais detalhes a respeito do particionamento, veja a documentação do O ponto de montagem /mnt/gentoo é uma convenção do Gentoo; não se esGentoo Linux em [5].
70
http://www.linuxmagazine.com.br
© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).
Tar | SYSADMIN
queça de criar um ponto de montagem adequado para outros live CDs. Depois, comece montando o diretório raiz do disco rígido. O segundo comando da lista acima cria os pontos de montagem para as partições boot e home. O último ativa a partição swap. O disco rígido está todo preparado para você recuperar a imagem. Para isso, primeiro desmonte o live CD. Depois, insira e monte o DVD com o arquivo da imagem. Finalmente, para descompactar a imagem na partição correta (/mnt/gentoo, em nosso exemplo), use os seguintes comandos: cd /mnt/gentoo tar -xvjpf ➥ /mnt/cdrom/data-da-imagem.tar.bz2
A opção -x (de extract) é a única diferença entre os comandos de compactação e descompactação do arquivo, e faz o tar descompactar o arquivo. Assim como na criação do arquivo, a descompactação também demora um pouco, mas é bem mais rápida que uma nova instalação.
Arrumando a casa
Figura 2 O cfdisk é uma ferramenta amigável e interativa para realizar o particionamento de discos.
atuais utilizam o GRUB, que pode se valer de um pequeno truque para reinstalar os dados a partir da imagem restaurada. Os comandos: user # mount -t proc none /mnt/gentoo/proc user # chroot /mnt/gentoo /bin/bash
mudam o diretório corrente para a imagem descompactada no novo disco rígido – como se o sistema tivesse acabado de iniciar a partir da imagem – usando o chroot (change root) para isso. O /proc possui um sistema de arquivos necessário ao GRUB, o que torna obrigatória a montagem deste antes de se mudar de diretório raiz. Depois de executar grub a partir da nova raiz, você deve ver um prompt:
Se o seu particionamento e sua hierarquia de dispositivos não tiver mudado em relação à instalação original, não deve ser necessário mudar a configuração do gerenciador de inicialização ou a tabela de partições. Porém, será necessário aplicar todas as mudanças no arquivo /etc/fs- livecd # grub tab que você restaurar. Se você mover a grub> root (hd0,0) grub> setup (hd0) imagem, por exemplo, descompactando- grub> quit a em seu segundo disco rígido ao invés do primeiro, será necessário modificar também o arquivo /boot/grub/grub.conf O comando root aponta a partição para refletir a mudança. boot, que no nosso exemplo é (hd0,0), O passo decisivo na reorganização ou seja, a primeira partição do pripós-restauração num novo disco é ins- meiro disco rígido da máquina. Esse talar o gerenciador de inicialização, que é o comando certo a se usar se a sua não está presente nessa etapa, na MBR instalação não tiver uma partição boot do primeiro disco rígido. Se você pular separada, e sim um diretório /boot na esse passo, o processo de inicialização vai partição raiz. Se você estiver restauranfalhar. Praticamente todas as distribuições do a imagem para um segundo disco
rígido, o comando será root (hd1,0). O comando setup grava o gerenciador de inicialização na MBR do disco; o gerenciador normalmente se localiza em (hd0), ou seja, no primeiro disco rígido da máquina, e não numa partição desse disco.
Reinicializar
Antes de você inicializar sua “velha nova” instalação recuperada, não se esqueça de dar umount em todas as partições que você montou. Desative a partição swap com o comando swapoff /dev/hda2. Agora mande sua máquina reiniciar, deite-se e relaxe enquanto a instalação restaurada é inicializada. ■
Mais Informações [1] Knoppix: http://www.knoppix.org [2] Kurumin: http://www.guiadohardware.net/ kurumin/ [3] Gentoo Linux: http://www.gentoo.org/ main/en/mirrors.xml [4] Grml: http://www.grml.org [5] Manual do Gentoo Linux: http://www.gentoo.org/ doc/pt_br/handbook/
Tabela 1: Comandos do Fdisk (Exemplos) Nome
Partição
Comando
Tipo
Número
Início/Código
Fim
/boot
/dev/hda1
n
p
1
[Enter]
+64M
swap
/dev/hda2
n
p
2
[Enter]
+1G
/
/dev/hda3
n
p
3
[Enter]
+10G
/home
/dev/hda4
n
p
4
[Enter]
[Enter]
-
/dev/hda1
a
-
1
-
-
-
/dev/hda2
t
-
2
82
-
71
Linux Magazine #24 | Outubro de 2006
© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).
A biblioteca curses no Python
PROGRAMAÇÃO
Diário de bordo
Você se lembra de quando mudou a versão do Firefox pela última vez? E por que instalou aquele outro programa que às vezes parece não servir para nada? Minha memória não é muito boa, por isso uso um diário. por José María Ruiz e Pedro Orantes
Justyna Furmanczyk – www.sxc.hu
“D
iário de bordo, data estelar 2123...” Em todos os livros sobre administração de sistemas, recomendase termos um pequeno “diário de bordo” onde possamos anotar as ações potencialmente perigosas que realizamos. Dessa maneira, poderemos supostamente recriar passo a passo os eventos que nos levaram a um desastre, e portanto ir desfazendoos em ordem inversa. A dura realidade é que nem todo mundo usa esses cadernos. É duro ter que deixar o teclado e pegar a caneta para escrever... Não estamos na era dos computadores? Não íamos abolir o papel? Muitas pessoas usam um blog em sua própria máquina ou na Internet para anotar detalhes ou notícias que lhes são interessantes. Outros inclusive publicam
seus arquivos de configuração, para poder acessá-los sempre. Mas o que fazer se quisermos as anotações só para nós? E se a máquina que estivermos acessando não possuir um servidor web com o software adequado configurado para ter um blog? E se não quisermos nos preocupar com toda essa parafernália? Algumas aplicações como o KPIM já incorporam a opção de um diário pessoal, mas não funcionam de maneira remota, a não ser que tenhamos uma conexão de rede com muita largura de banda. Que opções nos restam? Podemos voltar nossos olhos para a antiga era dos computadores, quando as interfaces funcionavam exclusivamente a partir de um console de texto. Tais interfaces
ainda são usadas em várias aplicações, pelo fato de serem mais simples de usar. É mais fácil automatizar o ato de teclar três vezes [Tab] do que mover o mouse; e isso funciona melhor remotamente, mesmo em conexões lentas. Vamos desenhar e programar um diário de bordo em Python, que utilizará ncurses para a interface texto e o gdbm para armazenar as entradas por data.
Desenho do caderno
Começaremos nosso projeto dando uma olhada nas bibliotecas em que vamos nos basear. A ncurses foi desenvolvida para abstrair, ocultar e simplificar a gestão de terminais de texto. Cada fabricante oferecia em seu terminal de
72
http://www.linuxmagazine.com.br
© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).
Python | PROGRAMAÇÃO
Armazenamento de dados
Exemplo 1: Uso da gdbm 01 >>> import gdbm
NOME DA SEÇÃO
texto características distintas dos demais, nos permite armazenar chaves e valoforçadas na maioria das vezes por uma res associados às mesmas, assim como feroz competição. Isso transformava em recuperar o valor ou apagar as chaves, uma tortura a simples tarefa de trocar simplesmente isso. um terminal por outro, exigindo na A biblioteca gdbm necessita de maioria das vezes a modificação do um arquivo para depositar os dados a programa. A ncurses permitiu execu- serem armazenados. Assim, teremos tar programas sem levar em conta as que dar a ele o nome de um arquivo diferenças entre os terminais. Não só e indicar como queremos que você o isso, mas também simplificou enorme- trate. O arquivo pode ser aberto para mente a gestão de interfaces de texto a inclusão de novos dados ou criado novamente, mesmo que já exista um como veremos mais adiante. O gdbm é uma base de “dados”. com o mesmo nome. Uma vez aberto o arquivo, o objeto Coloquei entre aspas porque na verdade só nos permite armazenar dados, gdbm se comporta como um armazenador recuperá-los e realizar buscas, porém qualquer. Podemos fazer uso da sintaxe sem usar SQL, e sim chamadas a bi- [], à qual já nos acostumamos na maioria bliotecas. O gdbm é uma família de das linguagens de programação. bibliotecas que nos permitem armazeComo podemos observar no exemplo nar dados em um arquivo e adminis- 1, o uso da biblioteca gdbm é realmente trá-los como se fossem um dicionário simples. Ela se comporta como uma lisou hash em Python. Cada entrada é ta, com todas as suas operações. O leitor composta por uma chave e um valor deve ter se perguntado ao ver o código: associado. Se não tivermos que realizar “Onde está o truque? Se a gdbm reprebuscas complexas, o gdbm será nossa senta uma base de dados, por que pode fazer uso da sintaxe []?” melhor opção. A resposta é que no Python a sintaxe Basicamente, temos que montar uma interface que divida a tela em duas partes. [] é o que em inglês se chama de “synEm uma, deverão ser mostradas as datas tactic sugar”. Uma forma de tradução é armazenadas, e deve ser possível recor- dizer que é uma maneira de tornar virer a elas; a outra deverá exibir o texto sualmente agradável a chamada a certas relacionado à data indicada. funções de linguagem. Podemos incorporar [] a um de nosAs ações serão: ➧ Navegar pelas entradas sos objetos e fazer com que se comporte ➧ Criar uma entrada como uma lista? A resposta é sim, e não há nada de complicado nisso. ➧ Editar uma entrada ➧ Apagar uma entrada O Python reserva uma série de métodos ➧ Sair ao uso especial. Entre eles estão: Cada uma das ações irá corresponder ➧ def _len_(self) a uma combinação de teclas. Começare- ➧ def _setitem_(self. chave, valor) mos criando os objetos que administram ➧ def _getitem_(self, chave) os dados e posteriormente a interface ➧ def _delitem_(self, chave) com o usuário. Esses quatro métodos são mascarados posteriormente pelo Python, da maneira mostrada no quadro 1 . Portanto, podemos mascarar as ações de um objeto de forma que ele seja usado como se fosse um dicionário. Devemos manter o texto associado a uma E é exatamente isso que vamos fazer data e hora em algum lugar. Com a febre com nosso objeto Armazem que abriga atual pelas bases de dados relacionais, o dicionário, acrescentando novas raramente menciona-se a existência de ações. O leitor pode comprovar o outras bases de dados que não cumpram código no exemplo 2 . ➧ o padrão relacional nem SQL. É realmente necessário um motor relacional e SQL para qualquer coisa que precisemos armazenar? Claro que não. Infelizmente, “quem só tem martelo pensa que tudo é prego”. O problema está na definição de Figura 1 Olá Mundo em nosso primeiro “banco de dados” – que a gdbm é, sem programa com curses. muita sofisticação. Basicamente, ela
02 >>> dados = gdbm.open(‘visitantes’,’c’) # cria o arquivo 03 >>> dados[“Joao Jose”] = “virah terca-feira” 04 >>> dados[“Joao Jose”] 05 ‘virah terca-feira’ 06 >>> dados.close() 07 >>> 08 >>> dados = gdbm.open(‘visitantes’) 09 >>> dados[“Joao Jose”] 10 ‘virah terca-feira’ 11 >>> dados.keys() 12 [‘Joao Jose’] 13 >>> for chave in dados.keys(): 14 ...
print “[“ + chave + “] ->” + dados[chave]
15 ... 16 [Joao Jose] -> virah terca-feira 17 >>> dados.close()
Exemplo 2: armazem.py 01 #!/usr/bin/python 02 03 import gdbm 04 class Armazem: 05 def __init__ (self,nome): 06 self.bd = gdbm.open(nome,’c’) 07 08 def busca_palavra (self, palavra): 09 chaves = self.entradas() 10 encontradas = [] 11 12 for chave in chaves: 13 conteudo = self.conteudo(chave) 14 if palavra in contenido: 15 encontradas.push(chave) 16 17 return encontradas 18 19 def entradas (self): 20 a = self.bd.keys() 21 if not a: 22 a = [] 23 return a 24 25 def fecha (self): 26 self.bd.close() 27 28 def __len__(self): 29 return len(self.entradas()) 30 31 def __setitem__ (self, chave, valor): 32 self.bd[chave] = valor 33 34 def __getitem__(self,chave): 35 return self.bd[chave] 36 37 def __delitem__(self,chave): 38 del self.bd[chave]
73
Linux Magazine #24 | Outubro de 2006
© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).
PROGRAMAÇÃO | Python
Figura 2 Um quadro de texto curses.
Curses
Curses são algumas bibliotecas de baixo nível. As abstrações que elas criam são muito básicas: preparar o console, criar “janelas” (que nada têm a ver com as janelas gráficas), escrever nessas janelas, receber caracteres e algo mais. Por esse motivo, são muito complicadas de manipular. Fazer coisas chamativas costuma precisar de muito código. Por isso, vamos nos concentrar em uma interface simples. Nosso programa será modular: terá um modo de “navegação” e um de “edição”, da mesma forma que o editor Vi.
Desenho principal
Vamos começar a inicializar a curses. Infelizmente, isso também nos faz perder o controle do nosso console Python,
visto que impede o seu funcionamento. Por isso, pede-se ao leitor que execute todas as ações relacionadas a curses a partir de um programa Python executável (lembre-se de fazer o chmod +x <programa>). Podemos ver um programa que inicializa o console com curses no exemplo 3. Depois, escrevemos um “Olá mundo” e a tela é atualizada. Podemos ver o resultado na figura 1. Se não atualizarmos a tela, a curses não mostrará nada. No exemplo 3, stdscr representa toda a tela. É possível criar subjanelas e realizar atualizações seletivas como poderemos comprovar no código do programa. Uma vez realizadas as operações, prosseguimos deixando a tela em uma configuração correta, o que é realizado pelas quatro últimas chamadas de funções. O objeto diario criará por sua vez um objeto GUI, que administra a interface, e o objeto Armazem, que se encarrega de administrar a base de dados. O objeto Armazem é passado para o GUI como parâmetro, em sua criação. E a missão de GUI é exatamente responder aos eventos que o usuário enviar mediante um laço infinito.
Exemplo 3: “Olá mundo” com curses 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
#!/usr/bin/python # -*- coding: UTF-8 import curses from time import sleep # Inicialização da tela stdscr=curses.initscr() curses.noecho() curses.cbreak() stdscr.keypad(1) # Escrevendo algo stdscr.addstr(“\nOla, mundo\n\n\n”,0) stdscr.refresh() # Esperando 4 segundos antes de... sleep(4) # Limpar a tela stdscr.keypad(1) curses.echo() curses.nocbreak() curses.endwin()
Duas janelas
Nosso programa vai dispor de duas janelas. A maior faz o papel de “quadro”, onde podemos ver as anotações feitas no momento. Podemos nos mover para cima e para baixo através dele. Para indicar qual é a data selecionada, iremos destacá-la em negrito e sublinhá-la. A segunda janela servirá de barra de ajuda e status. Ao mudarmos o status, por exemplo, ao editar, isso se reflitirá lá. É o mesmo modo de trabalho de que se orgulha o Vim. As janelas devem dividir a tela de maneira que não se sobreponham. A janela de um terminal tem 80 colunas de largura e 25 linhas de altura. Deixaremos uma linha abaixo, que será usada para mostrar informações. O restante das 24 fileiras se encarregarão de mostrar as entradas armazenadas.
Deslocamento das entradas A janela de dados permitirá que nos movamos para cima e para baixo pelas entradas. Como vamos conseguir recriar esse movimento? A solução é capturar as teclas dos cursores “Para cima” e “Para baixo”. Ao pressionar uma delas, incrementaremos ou decrementaremos uma variável que estabelece a posição da entrada selecionada em cada momento, e voltaremos a desenhar, ou escrever, a tela de dados. Mas não faremos isso de qualquer jeito. Queremos que o efeito seja bonito, de forma que sempre tentaremos mostrar um número fixo de entradas acima e abaixo da nossa. Como temos a posição da entrada selecionada, um simples cálculo nos permite selecionar quais entradas queremos mostrar. As listas em Python têm uma funcionalidade que nos será muito útil. Usando a sintaxe lista[começo:fim], podemos extrair os elementos entre começo e fim, formando uma nova lista. Simplesmente temos que selecionar aqueles que estejam a uma distância fixa do selecionado e usá-los como começo e fim. Podemos ver o código que realiza essa ação no método mostra_datas(self) da GUI, no exemplo 6 .
74
http://www.linuxmagazine.com.br
© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).
Python | PROGRAMAÇÃO
Textbox
O Python dispõe de uma ferramenta muito útil para a edição de textos com curses. Infelizmente, apesar de seu poder, ela possui alguns inconvenientes que demonstraremos mais adiante. Essa ferramenta é o objeto Textbox, que se encontra na biblioteca curses. textpad. Textbox nos permite editar um texto dentro de uma janela, e utilizar muitas das combinações de teclas que o editor de textos Emacs suporta. Assim, um [Ctrl]+[E] os leva ao final da linha que estivermos editando, e [Ctrl]+ [D] apaga o caractere sobre o qual nos encontramos. Vamos utilizar um Textbox para percorrer o texto que o usuário quer introduzir. Infelizmente, ele possui uma limitação devido ao seu desenho. Se, ao editarmos o texto, pressionarmos repetidas vezes a seta para a esquerda, deslocando-nos até encontrar a borda da janela, o programa irá falhar. O suporte a curses no Python baseiase nas bibliotecas originais escritas em C e, como já dissemos, são de muito baixo nível. A implementação do Textbox é realmente básica e não controla todos os parâmetros. Ainda assim, ela será de alguma serventia. Um exemplo de utilização do Textbox aparece em seu próprio códigofonte (ver o exemplo 4 e a figura 2). Esse código gera um retângulo com bordas (usando a função rectangle do curses.textpad) e nos solicita que escrevamos algo no mesmo. Para terminar, devemos pressionar [Ctrl] + [G] e o escrito é mostrado mais abaixo. Se experimentarmos, comprovaremos que não podemos sair do retângulo a ser editado. Na figura 3 vemos como integramos o Textbox em nosso programa. Aumentamos o número de colunas para permitir a introdução de mensagens mais longas.
Gerenciamento de comandos Existem muitas maneiras de se fazer um gerenciador de comandos. A mais típica consiste em fazer uma estrutura switch ou uma grande quantidade de ifs agrupados, cada um dos quais responde a uma tecla ou combinação diferente. O código gerado chega a ficar ilegível quando o número de comandos ultrapassa dez.
Há uma maneira muito mais elegante de combater esse problema, mas não é tão fácil fazer uso dela em todas as linguagens. Felizmente, o Python nos permite uma implementação muito simples. A idéia é a seguinte: cada comando está associado Figura 3 Inserção de uma nova entrada no diário de bordo. a uma série de Exemplo 4: Uso de Textbox ações a serem realizadas. Vincularemos as ações de cada comando a 01 #!/usr/bin/python um método respectivo do nosso ob02 # -*- coding: UTF-8 -*03 jeto “GUI”. Até aqui, tudo é bastante 04 import curses normal. Agora vem a magia. 05 import curses.textpad as textpad O Python nos permite invocar mé06 todos de objetos usando seu nome. 07 # Inicialização da tela Se declararmos o objeto Pessoa : 08 stdscr=curses.initscr() >>> class Pessoa: ... def fala(self): ... print “Ola, mundo” ... >>>
Poderemos invocar o método fala usando uma cadeia com seu nome através do método getattr() , que precisa da instância do objeto e do método a ser invocado. Ele devolve, por assim dizer, uma referência ao método em questão, que funciona da mesma maneira. Como dizem por aí, “uma imagem vale mais que mil palavras”. ➧
09 10 11 12 13 14 15 16 17 18
curses.noecho() curses.cbreak() stdscr.keypad(1) ncols, nlinhas = 9, 4 uly, ulx = 15, 20 stdscr.addstr(uly-2, ulx, ‘Use Ctrl-G para sair da edicao.’)
win = curses.newwin(nlinhas, ncols, uly, ulx) textpad.rectangle(stdscr, uly-1, ulx-1, uly + nlinhas, ➥ ulx + ncols) 19 stdscr.refresh() 20 textpad.Textbox(win).edit() 21 22 # Limpar a tela 23 stdscr.keypad(1) 24 curses.echo() 25 curses.nocbreak() 26 curses.endwin()
Exemplo 5: Método executa_comando(self,ch) 01 # Espera-se que ANTES voce tenha executado 02 # import curses 03 04 def executa_comando(self,ch): 05 “Processa as teclas recebidas” 06 if curses.ascii.isprint(ch): 07 for comando in self.comandos: 08 if comando[0] == chr(ch): 09 (getattr(self.comando[1]))() 10 break 11 else: 12 if ch in (curses.ascii.DLE, curses.KEY_UP): 13 self.incr_pos_datas() 14 self.redesenha() 15 elif ch in (curses.ascii.SO, curses.KEY_DOWN): 16 self.decr_pos_datas() 17 self.redesenha() 18 self.atualiza() 19 return 1
75
Linux Magazine #24 | Outubro de 2006
© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).
PROGRAMAÇÃO | Python
>>> fulano = Pessoa() >>> fulano.fala() Ola, mundo >>> (getattr(fulano, “fala”))() Ola, mundo >>>
Vamos criar uma lista de listas, cada uma das quais contendo dois elementos. O primeiro será um caractere, e o segundo, o nome do método a ser invocado. Dessa maneira, nosso gerenciador de comandos se reduz a um código que recebe um caractere, compara-o ao primeiro elemento de cada entrada em sua lista de comandos e, se encontrar uma coincidência, executa o comando associado (exemplo 5). Como podemos ver no código, comprova-se se o caractere recebido é “imprimível” e, posteriormente, fazse a busca na lista de comandos. Em caso de coincidência, é feita a execução usando-se self como instância. Dessa maneira, é possível manipular o funcionamento a respeito de a quais caracteres o programa responde, sem termos que modificar seu código-fonte. Isso nos dá muita flexibilidade e é menos propenso a erros.
Uso do programa
O uso do programa foi simplificado ao máximo possível. Seu aspecto é apresentado na figura 4. Ao pressionarmos [N], cria-se uma nova entrada com data e hora. Caso já exista uma entrada com essas mesmas data e hora, nada é feito. Com [N], elimina-se uma entrada, e com [E] podemos editá-la. Quando se está introduzindo um texto, ele é armazenado pressionado-se [Ctrl]+[G]. Para sair, deve-se pressionar [Q], e com as setas “Para cima” e “Para baixo”, nos deslocamos pelo programa.
Figura 4 Visão do diário de bordo com várias entradas.
Exemplo 6: diario.py
069
001 002 003 004 005 006 007 008 009 010 011 012 013 014 015 016 017 018 019 020 021
070 071 072
022 023 024 025 026 027 028 029 030 031 032 033
#!/usr/bin/python # -*- coding: UTF-8 -*import import import import import import import import
curses curses.ascii curses.textpad time os.path string sys armazem
class GUI: “””Interface com o usuario.””” def __init__(self,dados): self.registra_comandos()
➥ 1
self.dados = dados self.pos_datas = len(self.dados) self.gera_janelas()
self.banner(“-- [n] nova | ➥ [e] editar | [s] sair --”) self.desenha_datas() self.atualiza_tela()
def gera_janelas(self): “Gera as janelas iniciais” self.scr_datas = stdscr.subwin( ➥23, 80, 0, 0) 034 self.scr_info = stdscr.subwin( ➥1,80,23,0) 035 036 037 def registra_comandos(self): 038 “Armazena a letra e o comando ➥ associado” 039 self.comandos = [[‘a’,’apagar’], 040 [‘e’,’editar’], 041 [‘n’, ➥ ’nova_entrada’], 042 [‘s’,’sair’], 043 [‘t’,”estado”]] 044 045 def executa_comando(self, ch): 046 “Processa as teclas recebidas” 047 if curses.ascii.isprint(ch): 048 for comando in self.comandos: 049 if comando[0] == chr(ch): 050 (getattr(self, ➥comando[1]))() 051 break 052 else: 053 if ch in (curses.ascii.DLE, ➥curses.KEY_UP): 054 self.incr_pos_datas() 055 self.redesenha() 056 elif ch in (curses.ascii.SO, ➥curses.KEY_DOWN): 057 self.decr_pos_datas() 058 self.redesenha() 059 060 self.atualiza_tela() 061 return 1 062 063 064 def data(self): 065 return time.strftime(“%Y-%m-%d ➥ %H:%M”) 066 067 def long_data(self): 068 caixa_de_texto = 2 # o | esquerdo ➥ e o | direito
76
return len(self.data()) + ➥ caixa_de_texto def long_linha_de_texto(self): return (80 - self. ➥long_data())
073 074 075 076
def banner(self, texto): “Mostra o texto na regiao do ➥ banner” 077 self.scr_info.clear() 078 self.scr_info.addstr(texto, ➥ curses.A_BOLD) 079 self.scr_info.refresh() 080 081 082 def desenha_datas(self): 083 “Gera a listagem das datas ➥ na esquerda” 084 085 086 self.scr_datas.clear() 087 pos_x = 3 088 089 # 8 elementos acima e abaixo 090 min = self.pos_datas - 8 091 max = self.pos_datas + 8 092 093 094 if max > len(self.dados): 095 max = len(self.dados) 096 min = min + (max ➥ len(self.dados)) 097 if min < 0: 098 max = max + ( -min) 099 min = 0 100 101 if len(self.dados) > 0: 102 103 # Marcamos em negrito a ➥ data sobre a qual estah o cursor 104 # Para isso, iteramos, ➥ escrevendo as datas. Quando as 105 # encontramos, passamos ➥ a ela o atributo de negrito. 106 datas = self.listagem_ ➥datas() 107 for data in datas[min: ➥max]: 108 109 data_temp = ➥ “[“+data+”] “ 110 111 if datas[self.pos_ ➥datas] == data: 112 # Encontramos ➥ nossa data!!! 113 self.scr_datas. ➥addstr(pos_x,1,data_temp , curses. ➥A_BOLD | curses.A_UNDERLINE) 114 115 else: 116 self.scr_datas. ➥addstr(pos_x,1,data_temp, 0) 117 118 self.scr_datas. ➥addstr(pos_x,len(data_temp),self. ➥dados[data],0) 119 pos_x = pos_x + 1 120 121 self.atualiza_tela() 122 123 def editar(self): 124 “Mostra um quadro para ➥ introduzir o texto e armazena-o” 125 if len(self.dados) == 0: 126 return 127 else: 128 self.banner(“ EDITANDO ! ➥-- [control+g] guardar | [s]
http://www.linuxmagazine.com.br
© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).
Python | PROGRAMAÇÃO
➥ sair --”) 129 datas = self.listagem_ ➥datas() 130 texto = self. ➥dados[datas[self.pos_datas]] 131 self.atualiza_tela() 132 133 # Capturamos o novo ➥ texto. 134 135 ncols, nlinhas = 25, 4 136 uly, ulx = 15, 20 137 stdscr.addstr(uly-2, ➥ ulx, “Use Ctrl-G para guardar.”) 138 win = curses. ➥newwin(nlinhas, ncols, uly, ulx) 139 curses.textpad. ➥rectangle(stdscr, uly-1, ulx-1, uly ➥ + nlinhas, ulx + ncols) 140 stdscr.refresh() 141 novo_texto= curses. ➥textpad.Textbox(win).edit() 142 stdscr.refresh() 143 144 novo_texto = novo_texto. ➥replace(‘\n’,’’) 145 # Guardamos o novo texto 146 self.dados[datas[self. ➥pos_datas]] = novo_texto 147 148 self.banner(“-- [n] nova ➥ | [e] editar | [s] sair --”) 149 150 def apagar(self): 151 “Elimina a entrada ➥ selecionada” 152 if len(self.dados) > 0: 153 datas = self.listagem_ ➥datas() 154 del self.dados[datas ➥[self.pos_datas]] 155 self.atualiza_pos_datas() 156 self.redesenha() 157 self.atualiza_tela() 158 159 def redesenha(self): 160 “Redesenha a tela” 161 self.desenha_datas() 162 self.atualiza_tela() 163 164 def atualiza_tela(self): 165 self.scr_datas.refresh() 166 167 def listagem_datas(self): 168 “Retorna a listagem das ➥ datas ordenada” 169 datas = self.dados.entradas() 170 datas.sort(reverse=-1) 171 return datas 172 173 def decr_pos_datas(self): 174 “Move a data selecionada ➥ para cima” 175 if self.pos_datas >= (len ➥(self.dados) - 1): 176 self.pos_datas = len ➥(self.dados) - 1 177 else: 178 self.pos_datas += 1 179 180 def incr_pos_datas(self): 181 “Move a data selecionada ➥ para baixo” 182 if self.pos_datas <= 0: 183 self.pos_datas = 0 184 else: 185 self.pos_datas -= 1 186 187 def atualiza_pos_datas ➥(self,data=””): 188 “Realiza as trocas apropri
189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211
➥adas quando se elimina uma data” if data == “”: self.decr_pos_datas() else: datas = self.listagem_datas() cont = 0 resultado = 0 for f in datas: if f == data: resultado = cont break cont += 1 self.pos_datas = resultado self.redesenha() self.atualiza_tela()
def nova_entrada(self): “Introduz uma nova data” datas = self.listagem_datas() data = self.data() if not data in datas: self.dados[data] = “Texto ➥ vazio” 212 self.atualiza_pos_datas(data) 213 self.redesenha() 214 self.atualiza_tela() 215 self.editar() 216 217 def sair(self): 218 fecha_curses(stdscr) 219 sys.exit(0) 220 221 def estado(self): 222 “Mostra informacoes gerais” 223 cadeia = “” 224 datas = self.listagem_datas() 225 cont = 0 226 for data in datas: 227 cadeia += “[“+str(cont)+”>” ➥+data+”]” 228 cont += 1 229 230 cadeia = “[P:”+str(self.pos_datas) ➥+”]”+”--[L:”+str(len(self.dados))+”]” + ➥ cadeia 231 self.banner(cadeia) 232 233 class Diario: 234 def __init__(self): 235 self.dados = armazem.Armazem ➥(‘diario’) 236 self.gui = GUI(self.dados) 237 self.laco_infinito() 238 239 def laco_infinito(self): 240 while 1: 241 c = stdscr.getch() 242 n = self.gui.executa_comando(c) 243 if not n: 244 break 245 246 def inicia_curses(stdscr): 247 curses.noecho() 248 curses.cbreak() 249 stdscr.keypad(1) 250 251 def fecha_curses(stdscr): 252 stdscr.keypad(0) 253 curses.echo() 254 curses.nocbreak() 255 curses.endwin() 256 257 if __name__==’__main__’: 258 stdscr=curses.initscr() 259 inicia_curses(stdscr) 260 diario = Diario() 261 fecha_curses(stdscr)
Quadro 1: Alguns métodos especiais do Python ➧ _len_(self) devolve o comprimento de nosso objeto. É invocado quando se executa len(meu_objeto) ➧ _setitem(self,chave,valor) corresponde a conferir um valor em um dicionário: meu_objeto[chave]=valor ➧ _getitem(self,chave) equivale a meu_objeto[chave] e devolve a informação armazenada em chave ➧ _delitem(self,chave) equivale a eliminar do dicionário um par chave-valor: meu_objeto.pop(chave)
O arquivo de armazenamento recebe o nome diario.db. Se ele não existir, deverá ser criado, e se existir, usa-se esse.
Conclusão
Mesmo que o uso de curses seja considerado difícil, o Python traz módulos que nos possibilitam manipulá-la com certa facilidade. Uma vez tendo compreendido o programa, sabemos que qualquer um que instale o Python poderá fazer uso de curses. Sempre é possível utilizar uma série de objetos que levem a cabo tarefas de nível mais alto. Existem bibliotecas que nos proporcionam barras de menus e widgets mais avançados. Mas é sempre bom estar o mais próximo possível do padrão. Na próxima vez que você tiver que fazer uma interface em modo texto, pode ser uma boa idéia dar uma oportunidade à curses. ■
Mais Informações [1] Programa final deste artigo: http://www.linuxmagazine.com.br/ issue/24/diario.py
Os autores José María Ruiz está atualmente fazendo seu Projeto de Conclusão de Curso em Engenharia Técnica em Informática de Sistemas, enquanto estuda Física. Há oito anos usa e desenvolve software livre e, há dois, está se especializando em FreeBSD. José Pedro Orantes Casado cursa o 3° ano de Engenharia Técnica em Informática de Sistemas e, há muitos anos, usa Linux como ferramenta de trabalho e sistema de escritório.
77
Linux Magazine #24 | Outubro de 2006
© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).
Linux.local
SERVIÇOS
O maior diretório de empresas que oferecem produtos, soluções e serviços em Linux e Software Livre, organizado por Estado. Sentiu falta do nome de sua empresa aqui? Entre em contato com a gente: 11 2161-5400 ou anuncios@linuxmagazine.com.br
Fornecedor de Hardware = 1 Redes e Telefonia / PBX = 2 Integrador de Soluções = 3 Literatura / Editora = 4 Fornecedor de Software = 5 Consultoria / Treinamento = 6
Empresa
Cidade
Endereço
Telefone
Web
1 2 3 4 5 6 ✔ ✔
Espírito Santo Linux Shopp
Vila Velha
Rua São Simão (Correspondência), 18 – CEP: 29113-120
27 3082-0932
www.linuxshopp.com.br
Megawork Consultoria e Sistemas
Vitória
Rua Chapot Presvot, 389 – Praia do Canto – CEP: 29055-410 sl 201, 202
27 3315-2370
www.megawork.com.br
✔
✔ ✔
Spirit Linux
Vitória
Rua Marins Alvarino, 150 – CEP: 29047-660
27 3227-5543
www.spiritlinux.com.br
✔
✔ ✔
✔ ✔
Minas Gerais Instituto Online
Belo Horizonte
Av. Bias Fortes, 932, Sala 204 – CEP: 30170-011
31 3224-7920
www.institutoonline.com.br
Linux Place
Belo Horizonte
Rua do Ouro, 136, Sala 301 – Serra – CEP: 30220-000
31 3284-0575
corporate.linuxplace.com.br
Microhard
Belo Horizonte
Rua República da Argentina, 520 – Sion – CEP: 30315-490
31 3281-5522
TurboSite
Belo Horizonte
Rua Paraíba, 966, Sala 303 – Savassi – CEP: 30130-141
0800 702-9004
✔
✔
✔ ✔
✔ ✔
www.microhard.com.br
✔ ✔ ✔
✔ ✔
www.turbosite.com.br
✔
✔ ✔
Paraná iSolve
Curitiba
Av. Cândido de Abreu, 526, Cj. 1206B – CEP: 80530-000
41 252-2977
www.isolve.com.br
Mandriva Conectiva
Curitiba
Rua Tocantins, 89 – Cristo Rei – CEP: 80050-430
41 3360-2600
www.mandriva.com.br
NSI Training
Rio de Janeiro
Rua Araújo Porto Alegre, 71, 4ºandar Centro – CEP: 20030-012 21 2220-7055
www.nsi.com.br
✔
✔
Open IT
Rio de Janeiro
Rua do Mercado, 34, Sl, 402 – Centro – CEP: 20010-120
21 2508-9103
www.openit.com.br
✔
✔
Unipi Tecnologias
Campos dos Goytacazes
Av. Alberto Torres, 303, 1ºandar - Centro – CEP 28035-581
22 2725-1041
www.unipi.com.br
✔ ✔ ✔ ✔
Solis
Lajeado
Rua Comandante Wagner, 12 – São Cristóvão – CEP: 95900-000
51 3714-6653
www.solis.coop.br
✔ ✔ ✔ ✔ ✔
DualCon
Novo Hamburgo
Rua Joaquim Pedro Soares, 1099, Sl. 305 – Centro
51 3593-5437
www.dualcon.com.br
✔
✔
Datarecover
Porto Alegre
Av. Carlos Gomes, 403, Sala 908, Centro Comercial Atrium Center – Bela Vista – CEP: 90480-003
51 3018-1200
www.datarecover.com.br
✔
✔
LM2 Consulting
Porto Alegre
Rua Germano Petersen Junior, 101-Sl 202 – Higienópolis – CEP: 90540-140
51 3018-1007
www.lm2.com.br
Lnx-IT Informação e Tecnologia Porto Alegre
Av. Venâncio Aires, 1137 – Rio Branco – CEP: 90.040.193
51 3331-1446
www.lnx-it.inf.br
Plugin
Porto Alegre
Av. Júlio de Castilhos, 132, 11º andar Centro – CEP: 90030-130 51 4003-1001
www.plugin.com.br
TeHospedo
Porto Alegre
Rua dos Andradas, 1234/610 – Centro – CEP: 90020-008
51 3286-3799
www.tehospedo.com.br
✔ ✔
Redix
Blumenau
Rua 02 de Setembro, 733, sl 08. CEP 89052-000
47 3323-7313
www.redix.com.br
✔ ✔
✔
✔ ✔ ✔ ✔
Rio de Janeiro
Rio Grande do Sul
✔ ✔
✔
✔ ✔
✔
✔
✔ ✔
✔
✔
✔
Santa Catarina ✔ ✔
✔ ✔
São Paulo Ws Host
Arthur Nogueira
Rua Jerere, 36 – Vista Alegre – CEP: 13280-000
19 3846-1137
www.wshost.com.br
✔
DigiVoice
Barueri
Al. Juruá, 159, Térreo – Alphaville – CEP: 06455-010
11 4195-2557
www.digivoice.com.br
✔ ✔ ✔
✔ ✔
Dextra Sistemas
Campinas
Rua Antônio Paioli, 320 – Pq. das Universidades – CEP: 13086-045
19 3256-6722
www.dextra.com.br
✔
✔ ✔
Insigne Free Software do Brasil Campinas
Av. Andrades Neves, 1579 – Castelo – CEP: 13070-001
19 3213-2100
www.insignesoftware.com
✔
Microcamp
Campinas
Av. Thomaz Alves, 20 – Centro – CEP: 13010-160
19 3236-1915
www.microcamp.com.br
Savant Tecnologia
Diadema
Av. Senador Vitorino Freire, 465 – CEP: 09910-550
11 5034-4199
www.savant.com.br
Epopéia Informática
Marília
Rua Goiás, 392 – Bairro Cascata – CEP 17509-140
14 3413-1137
www.epopeia.com.br
Redentor
Osasco
Rua Costante Piovan, 150 – Jd. Três Montanhas – CEP: 06263-270
11 2106-9392
www.redentor.ind.br
Go-Global
Santana de Parnaíba Av. Yojiro Takaoca, 4384, Ed. Shopping Service, Cj. 1013 – CEP: 06541-038
11 2173-4211
www.go-global.com.br
AW2NET
Santo André
Rua Edson Soares, 59 – CEP: 09760-350
11 4990-0065
www.aw2net.com.br
Async Open Source
São Carlos
Rua Orlando Damiano, 2212 – CEP 13560-450
16 3376-0125
www.async.com.br
✔
Delix Internet
São José do Rio Preto
Rua Voluntário de São Paulo, 3066 9º – Centro – CEP: 15015-909
11 4062-9889
www.delixhosting.com.br
✔
4Linux
São Paulo
Rua Teixeira da Silva, 660, 6º andar – CEP: 04002-031
11 2125-4747
www.4linux.com.br
78
✔
✔
✔ ✔ ✔
✔
✔ ✔ ✔
✔ ✔
✔ ✔
✔ ✔
✔
✔ ✔ ✔ ✔
✔
✔ ✔ ✔
http://www.linuxmagazine.com.br
© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).
Linux.local | SERVIÇOS
Empresa
Cidade
Endereço
Telefone
Web
1 2 3 4 5 6
São Paulo (continuação) A Casa do Linux
São Paulo
Al. Jaú, 490 – Jd. Paulista – CEP 01420-000
11 3549-5151
www.acasadolinux.com.br
✔
✔ ✔
Accenture do Brasil Ltda.
São Paulo
Rua Alexandre Dumas, 2051 – Chácara Santo Antônio – CEP: 04717-004
11 5188-3000
www.accenture.com.br
✔
✔ ✔
ACR Informática
São Paulo
Rua Lincoln de Albuquerque, 65 –Perdizes – CEP: 05004-010
11 3873-1515
www.acrinformatica.com.br
✔
✔
Agit Informática
São Paulo
Rua Major Quedinho, 111, 5º andar, Cj. 508 – Centro – CEP: 01050-030
11 3255-4945
www.agit.com.br
✔ ✔
✔
Altbit - Informática Comércio e Serviços LTDA.
São Paulo
Av. Francisco Matarazzo, 229, Cj. 57 – Água Branca – CEP 05001-000
11 3879-9390
www.altbit.com.br
✔
AS2M -WPC Consultoria
São Paulo
Av. Tiradentes, 615, Ed. Santiago, 2º andar Bom Retiro – CEP: 01101-010
11 3228-3709
www.wpc.com.br
Big Host
São Paulo
Rua Dr. Miguel Couto, 58 – Centro – CEP: 01008-010
11 3033-4000
www.bighost.com.br
✔
✔ ✔
Blanes
São Paulo
Rua André Ampére, 153 – 9º andar – Conj. 91 CEP: 04562-907 (próx. Av. L. C. Berrini)
11 5506-9677
www.blanes.com.br
✔ ✔ ✔
✔ ✔
Commlogik do Brasil Ltda.
São Paulo
Av. das Nações Unidas, 13.797, Bloco II, 6º andar – Morumbi – CEP: 04794-000
11 5503-1011
www.commlogik.com.br
✔ ✔ ✔
✔ ✔
Computer Consulting Projeto e Consultoria Ltda.
São Paulo
Rua Vergueiro, 6455, Cj. 06 – Alto do Ipiranga – CEP: 04273-100 11 5062-3927
www.computerconsulting.com.br
✔
✔ ✔
Consist Consultoria, Sistemas e Representações Ltda.
São Paulo
Av. das Nações Unidas, 20.727 – CEP: 04795-100
11 5693-7210
www.consist.com.br
Domínio Tecnologia
São Paulo
Rua das Carnaubeiras, 98 – Metrô Conceição – CEP: 04343-080
11 5017-0040
www.dominiotecnologia.com.br
EDS do Brasil
São Paulo
Av. Pres. Juscelino Kubistcheck, 1830 Torre 4 - 5º andar
11 3707-4100
www.eds.com
Ética Tecnologia
São Paulo
Rua Nova York, 945 – Brooklin – CEP:04560-002
11 5093-3025
www.etica.net
Getronics ICT Solutions and Services
São Paulo
Rua Verbo Divino, 1207 – CEP: 04719-002
11 5187-2700
www.getronics.com/br
Hewlett-Packard Brasil Ltda.
São Paulo
Av. das Nações Unidas, 12.901, 25º andar – CEP: 04578-000
11 5502-5000
www.hp.com.br
✔
✔ ✔ ✔ ✔
IBM Brasil Ltda.
São Paulo
Rua Tutóia, 1157 – CEP: 04007-900
0800-7074 837
www.br.ibm.com
✔
✔
✔ ✔
iFractal
São Paulo
Rua Fiação da Saúde, 145, Conj. 66 – Saúde – CEP: 04144-020 11 5078-6618
www.ifractal.com.br
✔
✔ ✔
Integral
São Paulo
Rua Dr. Gentil Leite Martins, 295, 2º andar Jd. Prudência – CEP: 04648-001
11 5545-2600
www.integral.com.br
✔
Itautec S.A.
São Paulo
Rua Santa Catarina, 1 – Tatuapé – CEP: 03086-025
11 6097-3000
www.itautec.com.br
✔ ✔ ✔
Linux Komputer Informática
São Paulo
Av. Dr. Lino de Moraes Leme, 185 – CEP: 04360-001
11 5034-4191
www.komputer.com.br
✔
Linux Mall
São Paulo
Rua Machado Bittencourt, 190, Cj. 2087 – CEP: 04044-001
11 5087-9441
www.linuxmall.com.br
✔
Livraria Tempo Real
São Paulo
Al. Santos, 1202 – Cerqueira César – CEP: 01418-100
11 3266-2988
www.temporeal.com.br
Locasite Internet Service
São Paulo
Av. Brigadeiro Luiz Antonio, 2482, 3º andar – Centro – CEP: 01402-000
11 2121-4555
www.locasite.com.br
Microsiga
São Paulo
Av. Braz Leme, 1631 – CEP: 02511-000
11 3981-7200
www.microsiga.com.br
Novatec Editora Ltda.
São Paulo
R. Luis Antonio dos Santos, 110 – Santana – 02460-000
11 6979-0071
www.novateceditora.com.br
Novell América Latina
São Paulo
Rua Funchal, 418 – Vila Olímpia
11 3345-3900
www.novell.com/brasil
Av. Alfredo Egídio de Souza Aranha, 100 – Bloco B – 5º andar – CEP: 04726-170
11 5189-3000
www.oracle.com.br
Oracle do Brasil Sistemas Ltda. São Paulo
✔
✔ ✔
✔
✔ ✔
✔
✔ ✔ ✔ ✔ ✔
✔ ✔ ✔
✔
✔
✔ ✔
✔
✔ ✔
✔
✔ ✔ ✔
✔
✔ ✔ ✔ ✔ ✔ ✔ ✔
✔
✔ ✔ ✔
✔ ✔ ✔
✔
✔ ✔ ✔ ✔
Proelbra Tecnologia Eletrônica Ltda.
São Paulo
Av. Rouxinol, 1.041, Cj. 204, 2º andar Moema – CEP: 04516-001 11 5052- 8044
www.proelbra.com.br
Provider
São Paulo
Av. Cardoso de Melo, 1450, 6º andar – Vila Olímpia – CEP: 04548-005
11 2165-6500
www.e-provider.com.br
Red Hat Brasil
São Paulo
Av. Angélica, 2503, 8º andar Consolação – CEP: 01227-200
11 3124-6000
www.latinsourcetech.com.br
Samurai Projetos Especiais
São Paulo
Rua Barão do Triunfo, 550, 6º andar – CEP: 04602-002
11 5097-3014
www.samurai.com.br
✔
✔ ✔
SAP Brasil
São Paulo
Av. das Nações Unidas, 11.541, 16º andar – CEP: 04578-000
11 5503-2400
www.sap.com.br
✔
✔ ✔
Simples Consultoria
São Paulo
Rua Mourato Coelho, 299, Cj. 02 Pinheiros – CEP: 05417-010
11 3898-2121
www.simplesconsultoria.com.br
✔
✔ ✔
Smart Solutions
São Paulo
Av. Jabaquara, 2940 cj 56 e 57
11 5052-5958
www.smart-tec.com.br
✔ ✔
✔ ✔
Snap IT
São Paulo
Rua João Gomes Junior, 131 – Jd. Bonfiglioli – CEP: 05299-000
11 3731-8008
www.snapit.com.br
✔
✔ ✔
Stefanini IT Solutions
São Paulo
Av. Brig. Faria Lima, 1355, 19º – Pinheiros – CEP: 01452-919
11 3039-2000
www.stefanini.com.br
✔
✔ ✔
Sun Microsystems
São Paulo
Rua Alexandre Dumas, 2016 – CEP: 04717-004
11 5187-2100
www.sun.com.br
✔
✔ ✔
Sybase Brasil
São Paulo
Av. Juscelino Kubitschek, 510, 9º andar Itaim Bibi – CEP: 04543-000
11 3046-7388
www.sybase.com.br
The Source
São Paulo
Rua Marquês de Abrantes, 203 – Chácara Tatuapé – CEP: 03060-020
11 6698-5090
www.thesource.com.br
Unisys Brasil Ltda.
São Paulo
Rua Alexandre Dumas, 1711, 10º andar, Ed. Birmann 11 – CEP: 04717-004
11 3305-7000
www.unisys.com.br
Utah
São Paulo
Av. Paulista, 925, 13º andar – Cerqueira César – CEP: 01311-916
11 3145-5888
Visuelles
São Paulo
R. Eng. Domicio Diele Pacheco e Silva, 585 – Interlagos – CEP 04455-310
Webnow
São Paulo
Av. Nações Unidas, 12.995, 10º andar, Ed. Plaza Centenário – Chácara Itaim – CEP: 04578-000
WRL Informática Ltda.
São Paulo
Systech
Taquaritinga
✔
✔
✔
✔
✔ ✔ ✔
✔
✔
✔ ✔ ✔
✔ ✔
✔
✔ ✔
www.utah.com.br
✔
✔ ✔
11 5614-1010
www.visuelles.com.br
✔
✔ ✔
11 5503-6510
www.webnow.com.br
✔
✔
✔
Rua Santa Ifigênia, 211/213, Box 02– Centro – CEP: 01207-001 11 3362-1334
www.wrl.com.br
✔
✔
✔
Rua São José, 1126 – Centro - Caixa Postal 71 – CEP: 15.900-000
www.systech-ltd.com.br
✔ ✔
16 3252-7308
✔
✔
79
Linux Magazine #24 | Outubro de 2006
© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).
SERVIÇOS
Calendário de eventos Evento
Data
Local
Website
Conisli 2006
3 a 5 de Novembro
São Paulo, SP
www.conisli.org
YAPC::SA::2006
3 a 5 de Novembro
São Paulo, SP
perl.org.br/bin/view/YAPC/SA2006
International PHP Conference 2006
5 a 8 de Novembro
Frankfurt, Alemanha
www.phpconference.com
Web 2.0 Conference
7 a 9 de Novembro
Califórnia, EUA
www.web2con.com
Linux New Media Awards
11 de Novembro
Colônia, Alemanha
www.linuxnewmedia.com
Linux Day Limeira
9 de Novembro
Limeira, SP
www.linuxday.com.br
2 Encontro On-line de Educação e Software Livre
13 a 24 de Novembro
on-line
bine.org.mx/edusol/e2006/ convocatoria.php
Linux Day Mogi Mirim
16 de Novembro
Mogi Mirim, SP
www.linuxday.com.br
Latinoware
16 e 17 de Novembro
Foz do Iguaçu, PR
www.latinoware.org/2006
Linux Day Jaguariuna
18 de Novembro
Jaguariuna
www.linuxday.com.br
1 Fórum de Software Livre do Tocantins
18 a 20 de Novembro
Palmas, TO
www.sol-to.org
Seminário Temático sobre Cultura Digital
21 a 23 de Novembro
Araraquara, SP
fcbs.web@gmail.com
Hackers to Hackers Conference
24 a 26 de Novembro
São Paulo, SP
www.h2hc.org.br
PHP Conference Brasil
1 e 2 de Dezembro
São Paulo, SP
www.temporealeventos.com. br/?area=13&tipo=1&id=1334
Reunião ICANN
2 a 8 de Dezembro
São Paulo, SP
www.icann.org/minutes
Estação VoIP 2006
5 e 6 de Dezembro
Curitiba, PR
www.estacaovoip.com.br
Índice de anunciantes Empresa
Pág.
BRConnection
49
Guia de Tecnologia da Informação
02
IBM
13
Intel
84
Intelig
80
Itautec
07
LinuxWorld Expo
81
Linux.local
59
Linux Magazine
83
LinuxPark
11
Plugin
15
Samsung
20
SnapIT
17
Thin Networks
43
VIPware
33
80
http://www.linuxmagazine.com.br
© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).
�������������������������������
���������������� ��������
�����������������������
���������������������
�������
�����������������������
������������������������
��������
������������������������
���������������������
����������
������������������������
�����������������������
���������
�����������������������
����������������������
������������
����������������������������� �������������������������
��������
������������������������
�����������������������
�������
�������������
���������������������������
�������������
�����������
�������������������������
������
�����������
�����������������������
����������
�����������
�������������������������
������
������������
�����������������������
��������������
��������������������
����������������������
����������
�����������������
�����������������������
��������
���������������
���������������������
© Linux New Media do Brasil Editora Ltda. ��������������������������� ����������������������������������������������������������������� Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).
Novembro de 2006
PREVIEW
Na Linux Magazine #25… DESTAQUE
TUTORIAL
Seus dados estão seguros? Quando seu notebook for para a manutenção, ninguém vai tentar ler seus dados? E se você por acaso esquecer seu notebook no internet café? A criptografia de sistemas de arquivos é uma forma bastante eficiente e já madura para proteger seus dados contra o acesso não permitido. Mesmo que o disco rígido seja retirado da máquina, os dados permanecem legíveis somente para quem tiver autorização para tal. Quer transportar dados seguramente, sem acessos indevidos, em CD ou DVD? Mostraremos as melhores formas de criptografar o conteúdo dessas mídias, para que você possa carregar dados confidenciais sem ficar paranóico. ■
Milhões de voluntários já ofereceram seus ciclos ociosos de CPU para colaborar com a busca de vida extraterrestre no projeto SETI@home. O BOINC (Berkeley Open Infrastructure for Network Computing) é uma plataforma que permite à sua empresa construir de forma relativamente simples um grid computacional para processar seus próprios dados. ■
Criptografia de arquivos
SETI@ sua empresa
SYSADMIN
Bashish
Cansado da tela preta? O bashish oferece interessantíssimas possibilidades de configuração de temas para seu bash. Personalize suas fontes, cores e papel de parede, como se fosse um ambiente desktop! ■
Novembro de 2006
Na EasyLinux #08… DESTAQUE
Sincronização de dados
Celulares, PDAs e computadores armazenam endereços, emails e outros dados. O laptop trabalha como armazenador móvel desses documentos. Para que esses aparelhos não se tornem soluções isoladas, existem protocolos que sincronizam dados uns com os outros. O Linux dispõe de uma série de ferramen-
tas com as quais é possível manter dois ou mais aparelhos sincronizados e administrar uma única base de dados integrada. Nossa matéria de capa vai mostrar como configurar essas ferramentas de maneira correta e quais alternativas existem para os conhecidos programas de sincronização. ■
LABORATÓRIO
Linux de bolso Você pode conhecer e desfrutar do sistema operacional livre sem ter que instalá-lo em seu computador ou utilizar um Live CD. Distribuições compactas como o Damn Small Linux e o Puppy Linux, com cerca de 50 MBytes de tamanho, podem
ser facilmente carregadas em um chaveiro USB, deixando ainda espaço para documentos após a instalação. E provando que tamanho não é documento, ambas reúnem todos os aplicativos necessários para se trabalhar confortavelmente com imagens, editar textos e planilhas, ouvir MP3, além de navegador web e cliente de email. ■
82
http://www.linuxmagazine.com.br
© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).
© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).
CEZAR TAURION p.32 O impacto dos padrões abertos nas empresas
Outubro 2006
R$ 13,90 € 7,50
9 771806 942009
00024
Acerte de primeira:
LINUX 5 ESTRELAS p.30 Turismo com SL na Rede Plaza de Hotéis
#24 10/06
Linux Magazine
Disponibilize as suas aplicações para um ambiente de processamento escalável
10/2006
Transforme o Poder MultiCore de um Cluster em Aplicações Paralelas de Altíssimo Desempenho
2º LINUXPARK’06 p.24 O ROI do Linux e do Software Livre
XANDROS SERVER
Dr. Takahiro Koichi Laboratório de Astrofísica Computacional RIKEN, Japão
Itautec 0800 121444 www.itautec.com.br/intel
Strattus (11) 3531-6550 www.strattus.com.br/intel
BACKUP
Katalogo 0800 7729897 www.katalogo.com.br/intel
Tech Digital (11) 5181-1852 www.techdigital.com.br/intel
CLUSTER LINUXPARK’06
MStech (11) 5080-3838 www.mstech.com.br/intel
© 2006 Intel Corporation, Intel, e Intel logo, Pentium, Itanium, Intel Xeon e VTune são marcas ou marcas registradas da Intel Corporation ou de suas subsidiárias nos Estados Unidos e em outros países. *Outros nomes e marcas pode ser reclamados como propriedades de outras empresas e instituições.
© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).
VIRTUALIZAÇÃO
p.34
SAIBA POR QUE A VIRTUALIZAÇÃO DE SERVIDORES ESTÁ REVOLUCIONANDO A ÁREA DE TI E COMO IMPLANTAR ESSA TECNOLOGIA NA SUA EMPRESA
» Sun e IBM mostram soluções profissionais p.52 » Kernel compartilhado com o Vserver p.44 » A facilidade do VMWare p.50 » Xen 3 explicado p.38
ZABBIX
“As Ferramentas de Cluster e MPI da Intel’s nos oferecem o melhor ambiente de desenvolvimento em Cluster. Usando Intel® Trace Analyser and Collector, nos fomos capazes de diminuir o tempo de comunicação do MPI pela metade, localizando e removendo gargalos de padrões de comunicação ‘blocking’ e ‘non-blocking’”.
NETFILTER
• Intel® MPI Benchmarks Benchmark padrão medido com MPI (antigo PMB).
VMWARE
• Intel® Trace Analyzer and Collector Analisa gargalos de desempenho e interpreta comportamentos detalhados de aplicações distribuídas para maximizar a escalabilidade e o desempenho computacional.
VSERVER
• Intel® Math Kernel Library Cluster Edition Faça uso das funções matemáticas altamente otimizadas e thread-safe existentes na Intel® Math Kernel Library, além do ScaLAPACK otimizado e de funções FFT (Fast Fourier Transforms) em memória-distribuida.
XEN
• Intel® MPI Library Desenvolva, teste e distribua aplicações no padrão MPI-2 para praticamente todo tipo de configuração de cluster e arquitetura de rede, com somente uma biblioteca MPI de alto desempenho.
A REVISTA DO PROFISSIONAL DE TI
VIRTUALIZAÇÃO
Intel® Cluster Toolkit para Linux* oferece um pacote único com todas as ferramentas de Cluster da Intel®, assegurando o mais alto desempenho em pequenos e grandes Clusters baseados nos processadores Intel, para eficientemente desenvolver, otimizar, executar e distribuir aplicações paralelas:
# 24
Compiladores Intel® C++ e Fortran para Linux* são compiladores altamente otimizados para lidar com aplicações em ambiente de Cluster de alta demanda de processamento. Os compiladores oferecem suporte para aplicações desenvolvidas baseadas em threads utilizando bibliotecas OpenMP*, e capacidade de auto-paralelismo de código para extrair o máximo de desempenho dos Processadores Multi-Core da Intel®.
# 24
Intel® Threading Building Blocks Insere códigos escalaveis baseados em threads através de algoritmos em C++.
ZABBIX p.66 Monitoramento inteligente
CLUSTER VMWARE p.63 Vários hóspedes em um cluster
VEJA TAMBÉM NESTA EDIÇÃO: » Xandros Server Standard Edition p.56 » Desenvolva um diário com Python p.72 » Recuperação de servidores com tar p.68 » Crie módulos personalizados de Netfilter p.58 WWW.LINUXMAGAZINE.COM.BR
EDIÇÃO DE ANIVERSÁRIO: 2 ANOS!