60_raid_samba_e_backup_NoRestriction

Page 1

Linux Magazine

kwarup.com

11/2009

Cloud Computing Com autonomia total e flexibilidade na administração do servidor.

CONTRA LINUX NA

UNIMED

p.26

LINUX NA UNIMED p.26

CONTRA O DESPERDÍCIO P.28

A Unimed Londrina adotou Linux e só tem elogios

OPEN SOURCE MADURO p.30

Maddog mostra por que live CDs devem ser pagos

Novas oportunidades que vêm com o amadurecimento

MADURO

p.30

CE vêm des que oportunidamento Novas amadureci com o

OPEN SOUR

IO P.28

O DESPERDÍC

por que mostra Maddog pagos m ser CDs deve

u

rina adoto ed Lond A Unim elogios e só tem Linux

live

# 60 Novembro 2009

RAID SAMBA BACKUP E

WAR TO. O SOFT TO E BARA RESULTADO HOR BOM, BONI STORAGE ORCIONA O MEL . p.31 LIVRE PROP NADA POR ISSO AR p.32 SEM COBR ram o RAID que acele simples Bacula p.45 l com o » Truques BD p.40 profissiona ção para » Backup ed, a salva » Memcach

Sua aplic que garantem das de medi

UÍDO p.58 BA DISTRIB s máquinas por vária REDES: oSAM Samba nibilidade Distribua alta dispo ho. e obtenha desempen e melhor

e disco exclusivos para suas aplicações. A partir de r$ 59,00/mês.

Cloud server: ajuste as capacidades de seu servidor Linux ou Windows quando quiser, garantindo disponibilidade de hardware, desempenho de ponta e crescimento sob demanda. A partir de r$ 149,00/mês. private Cloud: conte com recursos em larga escala em uma nuvem inteiramente dedicada a sua empresa. Consulte nossa equipe comercial e conheça os planos para necessidades específicas. Cloud Computing loCaweb: a melhor infraestrutura para hospedar seu site e suas aplicações com alta performance e tecnologia de ponta.

a locaweb traz para você a nova fronteira da era digital. assista ao vídeo sobre o Cloud Computing em locaweb.com.br/cloud.

A REVISTA DO PROFISSIONAL DE TI

M.BR

CEZAR TAURION p.34 O Código Aberto como incentivo à inovação

#44 07/08 R$ 13,90 € 7,50

A REVISTA DO PROFISSIONAL DE TI

GOVERNANÇA COM

SEJA UM BOM GESTOR E UTILIZE AS MELHORES PRÁTICAS ADOTADAS E RECOMENDADAS PELOS PROFISSIONAIS MAIS EXPERIENTES NESSA ÁREA p.36

» O que dizem os profissionais certificados p.24 » Cobit, CMMI, ITIL. Quais as melhores práticas? p.36 » ITIL na prática p.39

» Novidades do ITIL v3. p.44

SEGURANÇA: DNSSEC p.69

VEJA TAMBÉM NESTA EDIÇÃO:

Com o DNSSEC, a resolução de nomes fica protegida de ataques. Mas seu preço vale a pena?

» Relatórios do Squid com o SARG p.60

REDES: IPV6 p.64

» Becape de bancos de dados com a Libferris p.46

Conheça as vantagens da nova versão do Internet Protocol, e veja por que é difícil adotá-la

» Java, Ruby e Rails: conheça o JRuby on Rails p.74 » Benchmarks do GCC 4.3? p.58

» LPI nível 2: Servidores NIS e DHCP p.52

WWW.LINUXMAGAZINE.COM.BR

STORAGE BOM, BONITO E BARATO. O SOFTWARE LIVRE PROPORCIONA O MELHOR RESULTADO SEM COBRAR NADA POR ISSO. p.31 » Truques simples que aceleram o RAID p.32 » Memcached, a salvação para BD p.40 » Backup profissional com o Bacula p.45

SEGURANÇA: APLICAÇÕES WEB p.66 Sua aplicação web é segura? Confira uma lista de medidas que garantem seu sono tranquilo.

REDES: SAMBA DISTRIBUÍDO p.58 Distribua o Samba por várias máquinas e obtenha alta disponibilidade e melhor desempenho.

WWW.LINUXMAGAZINE.COM.BR

VEJA TAMBÉM NESTA EDIÇÃO:

» Conheça as certificações do mercado p.16 » Kurt Seifried: Wi-fi nunca é seguro p.18 » OpenSolaris: formatação de partições p.51 » Python 3.0: quais as mudanças? p.72

© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).

venda  proibida

LINUX PARK 2008 p.28 Iniciada em Porto Alegre a temporada de seminários Linux Park de 2008

Assinante

CASE ALFRESCO p.26 A Construcap agilizou seus projetos com o Alfresco

exemplar de

RAID SAMBA BACKUP 00044

RAID  SAMBA  BACKUP  BACULA   MEMCACHED   SAMBA DISTRIBUÍDO   APLICAÇÕES WEB  OPENSOLARIS  PYTHON 3   CERTIFICAÇÕES

Cloud mini: tenha autonomia total para administrar seu servidor Linux, com processamento, memória

» Conheça ied: Wi-fi nunca partições p.51 de » Kurt Seifr ris: formatação nças? p.72 » OpenSola quais as muda 3.0: » Python

AZINE.CO

NUXMAG

WWW.LI

TA EDIÇÃO: ado p.16 BÉM NES do merc ficações VEJA TAM p.18 as certi é seguro

9 771806 942009

# 60

WEB p.66 ICAÇÕES ra uma lista NÇA: APL ra? Confi uilo. SEGURAação web é segu seu sono tranq


Matéria | SEÇÃO

e r t i fi c

SEÇÃO

Livro C

o ã ç i d e ª 2 2 I P L açã o

A Linux Magazine está lançando a 2ª edição revisada e ampliada do livro que te prepara para a Certificação LPIC-2 com as seguintes novidades: • Exercícios em todos os tópicos • Todo conteúdo ampliado para a nova versão da prova, atualizada em abril/2009

Garanta já o seu pelo site da Linux Magazine www.linuxmagazine.com.br

3

Linux Magazine #XX | Mês de 200X

© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).


Expediente editorial Editor Pablo Hess phess@linuxmagazine.com.br Revisora Aileen Otomi Nakamura anakamura@linuxmagazine.com.br Editora de Arte Paola Viveiros pviveiros@linuxmagazine.com.br Coordenador de Comunicação Igor Daurício idauricio@linuxmagazine.com.br Tradutores Diana Ricci Aranha e Pablo Hess Colaboradores Célio de Jesus Santos e Cloves Ferreira Júnior Centros de Competência Centro de Competência em Software: Oliver Frommel: ofrommel@linuxnewmedia.de Kristian Kißling: kkissling@linuxnewmedia.de Peter Kreussel: pkreussel@linuxnewmedia.de Marcel Hilzinger: hilzinger@linuxnewmedia.de Centro de Competência em Redes e Segurança: Jens-Christoph B.: jbrendel@linuxnewmedia.de Hans-Georg Eßer: hgesser@linuxnewmedia.de Thomas Leichtenstern: tleichtenstern@linuxnewmedia.de Markus Feilner: mfeilner@linuxnewmedia.de Nils Magnus: nmagnus@linuxnewmedia.de Anúncios: Rafael Peregrino da Silva (Brasil) anuncios@linuxmagazine.com.br Tel.: +55 (0)11 4082 1300 Fax: +55 (0)11 4082 1302 Petra Jaser (Alemanha, Áustria e Suíça) anzeigen@linuxnewmedia.de Penny Wilby (Reino Unido e Irlanda) pwilby@linux-magazine.com Amy Phalen (Estados Unidos) aphalen@linux-magazine.com Hubert Wiest (Outros países) hwiest@linuxnewmedia.de Gerente de Circulação Claudio Bazzoli cbazzoli@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 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 consequências que advenham de seu uso. A utilização de qualquer material da revista ocorre por conta e risco do leitor.

gazine Lin ux Ma

EDITORIAL

Nosso quinto aniversário

Diretor Geral Rafael Peregrino da Silva rperegrino@linuxmagazine.com.br

Prezados leitores, Em cinco anos de vida, uma criança passa de mero consumidor de leite e produtor de fluidos e ruídos para um pequeno ser capaz de receber informações, interpretá-las e questioná-las. A Linux Magazine também amadureceu. Em cinco anos de existência, nossa forma de transmitir a informação mudou, da mesma forma como o próprio mercado de TI, em geral, e do Software Livre, em particular. Crises mundiais foram deflagradas, economias se expandiram e retraíram, situações pelas quais o Software Livre atravessou com impressionante solidez. Apesar de ser relativamente recente no mercado corporativo, o GNU/Linux se mostrou capaz de beneficiarse tanto dos momentos de fartura quanto daqueles de recessão, crescendo de forma consistente. Com um mercado em franca expansão, a revista experimentou novas formas e conteúdos, adaptou-se – de “Excelência em matéria de Linux”, nas primeiras edições, a “Tecnologia sem limites” e depois a “A revista do profissional de TI” a partir da edição 19 –, adequou a linguagem ao público e avançou como veículo. O mais recente avanço vocês viram nesta 60º edição: aproximamo-nos de nossos leitores para perguntar como vocês prefeririam a capa deste número, atitude que pretendemos repetir muitas vezes no futuro. Desejamos uma revista cada vez mais próxima da realidade dos nossos leitores, os profissionais de TI, então vamos seguir rumo a essa maior colaboração. A equipe da Linux Magazine agradece a vocês, nossos leitores, por nos acompanhar nesses cinco anos. Estamos trabalhando para que os próximos cinco sejam ainda melhores. Vida longa ao Software Livre.  n

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, sejam 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. Av. Fagundes Filho, 134 Conj. 53 – Saúde 04304-000 – São Paulo – SP – Brasil Tel.: +55 (0)11 4082 1300 – Fax: +55 (0)11 4082 1302 Direitos Autorais e Marcas Registradas © 2004 - 2009: Linux New Media do Brasil Editora Ltda. Impressão e Acabamento: RR Donnelley Distribuída em todo o país pela Dinap S.A., Distribuidora Nacional de Publicações, São Paulo. Atendimento Assinante www.linuxnewmedia.com.br/atendimento São Paulo: +55 (0)11 3512 9460 Rio de Janeiro: +55 (0)21 3512 0888 Belo Horizonte: +55 (0)31 3516 1280 ISSN 1806-9428

Impresso no Brasil

.

3

Linux Magazine #60 | Novembro de 2009

© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).


ÍNDICE

CAPA Rápido como deve ser

31

E ste mês, apresentamos algumas formas de tornar o storage mais rápido sem gastar um centavo a mais.

RAID ótimo

32

É possível ganhar até 20% de desempenho simplesmente com o uso dos parâmetros corretos nos sistemas de arquivos sobre RAID.

Cache mais rápido

40

O prático Memcached pode reduzir em até 90% a carga de um servidor de banco de dados web.

Backup profissional

45

G ravar arquivos de um local em outro é muito fácil, mas só o Bacula é capaz de fazer backups em escala industrial sem perder a praticidade necessária para os modernos administradores.

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 60 |  ÍNDICE

COLUNAS

TUTORIAL 08

OpenSolaris, parte 7

Charly Kühnast

10

Zack Brown

12

A gora que já sabemos como criar partições de disco no OpenSolaris, vamos criar sistemas de arquivos nelas e disponibilizá-las via iSCSI.

Augusto Campos

14

Alexandre Borges

16

Kurt Seifried

18

Klaus Knopper

NOTÍCIAS

51

REDES Samba mais disponível

58

A versão 3.3 do Samba, associada ao gerenciador de locks CTDB, oferece suporte completo à criação de clusters.

Geral ➧ Código do KDE vale US$ 175 milhões

22

➧ HTC publica código-fonte do seu kernel ➧ ATI libera SDK para OpenCL ➧ Eeebuntu: sai Ubuntu, entra Debian

SEGURANÇA Aplicação web protegida

66

A plicações web oferecem grandes riscos à segurança. Aprenda a proteger todos os elementos dessa complexa equação.

CORPORATE Notícias ➧ IBM promove Ubuntu nos EUA

24

➧ Sun prevê 3.000 demissões ➧ Lançado o CentOS 5.4

PROGRAMAÇÃO A próxima serpente

72

O que os programadores de Python 2.x precisam saber sobre o Python 3. Linux na Unimed Londrina

26

A Unimed Londrina precisava de uma solução mais poderosa e estável para aplicações de missão crítica. Após escolher o Linux, ela agora colhe os frutos.

SERVIÇOS Editorial

03

Emails

06

Linux.local

78

Coluna: Jon “maddog” Hall

28

Eventos

80

Coluna: Cezar Taurion

30

Preview

82

5

Linux Magazine #60 | Novembro de 2009

© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).


u c.h ww .s x –w ro nja

gje

ne

Emails para o editor

CARTAS

sa

Permissão de Escrita Ajuda com Samba

Sou assinante da linux maganize e estou escrevendo pela primeira vez pois achei interessante um problema que estou tendo na versão do GNU/Linux Red Hat 5.4 com o Samba e acho que é um bug. No servidor Samba da empresa, configurei manualmente o arquivo smb.conf. Depois de subir o serviço do Samba, o usuário, mesmo sendo dono do arquivo ou pertencente ao grupo do dono, tenta abrir um arquivo .xls e sempre recebe aquele aviso de read-only, como se o arquivo estivesse aberto em outra máquina. O trecho relevante do smb.conf está no quadro ao lado. Eu criei os usuários tanto na máquina com o [global] servidor Samba quanto na máquina servidor de log level = 3 passdb:5 auth:10 winbind:2 workgroup = Landmark arquivos e fiz todos os teste com o usuário u4159, server string = Samba Server que pertence ao grupo IS e tem permissão de security = share passdb backend = tdbsam leitura e escrita. load printers = yes Quando faço login no Windows, uso a senha cups options = raw do Samba, mas todos os arquivos que esse usuário [IS] abre sempre vêm como read-only. path = /filer/whome/IS IMPORTANTE: Não tenho esse problema na valid users = u2283 u3593 u4159 u9886 u2131 u4114 public = no versão 3.8 do Red Hat. Ela funciona normalmenwritable = yes te, abre, salva e fecha os arquivos sem problema browsable = no algum. Se puderem ajudar, agradeço. printable = no inherit permissions = yes # blocking locks = no veto oplock files = /*.doc/*.xls/*.mdb/*.ldb/

Igor Costa (Igor.Costa@halliburton.com) – Rio de Janeiro, RJ

Escreva para nós!

Powered by Google

Muito interessante a matéria de capa da LM58, “Powered by Google”, bem como a coluna do Jon Maddog desse mês. Entretanto, venho ressaltar que há alguns dados desatualizados. São permitidas 10 aplicações atualmente, os limites do quadro 1 mudaram e, o mais interessante, há suporte para Java, o que abre outras possibilidades, como rodar JRuby on Rails, por exemplo. Douglas Drumond – Campinas, SP

6 © Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).

Sempre queremos sua opinião sobre a Linux Magazine e nossos artigos. Envie seus emails para cartas@linuxmagazine.com.br e compartilhe suas dúvidas, opiniões, sugestões e críticas. Infelizmente, devido ao volume de emails, não podemos garantir que seu email seja publicado, mas é certo que ele será lido e analisado.


© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).


Coluna do Klaus

COLUNA

Pergunte ao Klaus! O professor Klaus responde as mais diversas dúvidas dos leitores.

Windows pré-instalado virtualizado

Parabéns pela revista. Leio-a regularmente, apesar de me considerar um “novato intermediário” em *nix. Tenho uma pergunta relativa à coexistência do MS Windows com o GNU/Linux no mesmo computador. Como a maioria dos computadores vem com Windows pré-instalado, os usuários GNU/Linux que quiserem manter o sistema “de fábrica” precisam redimensionar sua partição para usar um esquema de dual-boot. Apesar de eu saber que é possível usar o Wine para rodar programas do Windows no GNU/Linux, imagino um outro cenário para usar os dois sistemas, mas não sei se é possível. Você saberia me responder? O cenário: Windows pré-instalado na partição sda1, GNU/Linux em outras partições no mesmo disco. Eu iniciaria o GNU/Linux e executaria o Windows da partição sda1 dentro de uma solução de virtualização, sem a necessidade de “reinstalar” o Windows na máquina virtual e ainda preservando a possibilidade de entrar no Windows via dual-boot. Além disso, como todos os softwares pré-instalados no Windows têm licenças válidas, seria possível configurar o Wine para “explorar” as DLLs e recursos do Windows da sda1 com o objetivo de melhorar a compatilidade dos programas do Windows no Wine?

Resposta

A configuração padrão do Wine é usar bibliotecas embutidas compatíveis com as do Windows. Porém, existem “recursos não documentados” de programas para Windows que ainda não foram implementados no Wine. Ou, ainda, existem bibliotecas proprietárias que não podem ser livremente distribuídas no Wine. No caso destas, é possível especificar o caminho (do Linux) no qual o Wine pode encontrar esses componentes).

No seu caso, a sua instalação “genuína” do Windows pode ser montada para que você forneça o caminho ao Wine. Porém, note que a maioria dos programas para Windows espera que o C: seja gravável, então podem não funcionar ou causar problemas na instalação genuína. Se você preferir a técnica da virtualização em vez do Wine, há alguns problemas. O primeiro é o hardware diferente. Máquinas virtuais simulam os componentes de hardware, que na maioria das vezes são diferentes daqueles presentes na máquina física quando o Windows foi instalado. Isso certamente causará problemas, a menos que seu Windows original tenha sido instalado usando somente drivers genéricos. Por isso, a solução é reinstalar o Win­dows dentro da máquina virtual, ou iniciar o Windows original, instalar os drivers que serão necessários no ambiente virtual e só então iniciar o Windows em uma máquina virtual. A segunda dificuldade é que os chips gráficos e CPUs (exceto aquelas com suporte a virtualização completa) são mais lentos na máquina virtual do que na máquina real, além de a maior parte do hardware real não ser acessível pelo Windows virtualizado. Em geral, programas independentes e aplicativos não muito complexos podem rodar pelo Wine, ao passo que os mais complexos e dependentes do Windows se comportam melhor com a solução virtualizada. Novamente, lembro que isso funciona melhor quando o Windows é reinstalado dentro da máquina virtual, em vez de esperar que haja drivers adequados na instalação original.  n Klaus Knopper é o criador do Knoppix e co-fundador do evento Linux Tag. Atualmente trabalha como professor, programador e consultor.

8

http://www.linuxmagazine.com.br

© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).


SAC CAIXA - 0800 726 0101

Informações, reclamações, sugestões e elogios 0800 726 2492 - Atendimento a deficientes auditivos 0800 725 7474 - Ouvidoria

todo dia, você abre sua empresa pensando em fazer mais e crescer. e a caixa abre as portas para ajudar você.

Na CAIXA, você tem crédito facilitado com as melhores taxas. e tem também um pacote de soluções para simplificar seu dia-a-dia. seja qual for o tamanho da sua empresa e o seu ramo, fale com um gerente. CAIXA. O banco que acredita nas pessoas.

caixa.gov.br © Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).


Coluna do Charly

COLUNA

RoundCube No último fim de semana, mudei o webmail da minha família do SquirrelMail para um programa Web 2.0.

H

á muitos anos mantenho em meu servidor as contas de email da minha família e de amigos. Alguns deles tiveram problemas com clientes pesados como o Thunderbird e agora preferem usar o webmail para acessar suas mensagens. A princípio, escolhi o SquirrelMail [1] para essa tarefa, principalmente pela facilidade de uso. Após tanto tempo, ainda acho difícil bater o SquirrelMail neste quesito – a interface é simples e a equipe desenvolvedora reduziu-o ao estritamente necessário. No entanto, meus usuários – extremamente exigentes com o passar dos anos – tiveram que se adaptar a certas inconveniências, incluindo problemas de segurança recorrentes. Felizmente, o SquirrelMail não é o único webmail do mundo e, no último fim de semana, ele finalmente foi substituído pelo RoundCube [2]. O baixo número da versão – 0.2.2 – pode enganar, mas o RoundCube é um aplicativo extremamente maduro e estável, além de possuir vários anos de desenvolvimento. Um instalador via Web que vai avisando sobre dependências não resolvidas facilita o processo de instalação. O RoundCube precisa de um banco de dados; o instalador aceita MySQL, PostgresSQL ou SQLite e já vem com scripts para gerar a estrutura de tabelas necessária. Em outro passo da configuração, é preciso fornecer os dados de transporte de emails, incluindo os servidores SMTP e IMAP, domínio padrão e locale. Depois disso, o instalador gera dois arquivos de configuração: um para os parâmetros do banco de dados e outro para as configurações do webmail. Após movê-los para o diretório web do RoundCube, tudo estará pronto para começar.

porados à mensagem vem desabilitada por motivos de segurança. É possível configurar múltiplas identidades SMTP por usuário – não que alguém precise disso no meu servidor, mas é bom saber que tem. Convenientemente, ao escrever um endereço de destino num novo email, o RoundCube busca os endereços semelhantes no catálogo de emails. Ao menos, isso poupa digitação e evita erros ocasionais. Se você olhar o catálogo de endereços, verá potenciais melhorias para as próximas versões. Por exemplo, a função de importação e exportação de endereços, por enquanto, suporta apenas o formato vCard e não consigo agrupar contatos para criar um grupo. Entretanto, anexar arquivos a mensagens é simples. Além disso, o RoundCube tem até corretor ortográfico. Se você ainda tiver problemas, os fóruns de suporte e a documentação wiki são de fácil acesso [3]. Por enquanto, só estou esperando para ver se meus usuários também ficarão impressionados ou se vão querer o espartano SquirrelMail de volta.  n

É o melhor

Charly Kühnast é administrador de sistemas Unix no data center de Moers, Alemanha. Suas tarefas incluem segurança e disponibilidade de firewalls e DMZ. Ele divide seu tempo livre nos setores quente, molhado e oriental, nos quais se diverte com culinária, aquários de água doce e aprendizado de japonês, respectivamente.

A interface do usuário é agradavelmente organizada, com a quantidade certa de suporte a AJAX e muito intuitiva. A capacidade de carregar elementos incor-

Mais informações [1] SquirrelMail: http://squirrelmail.org [2] RoundCube: http://www.roundcube.net [3] Wiki do RoundCube: http://trac.roundcube.net/wiki

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).


Coluna do Zack

COLUNA

Crônicas do kernel Contos e histórias do desenvolvimento do Linux.

Novo dispositivo de blocos no espaço do usuário Zachary Amsden incluiu suporte a dispositivos de bloco no espaço do usuário, semelhante ao FUSE (Filesystem in Userspace, sistema de arquivos no espaço do usuário) e CUSE (Character Device in Userspace, dispositivo de caracteres no espaço do usuário). Zachary chamou sua criação de aBUSE. Como mostrou Alan Cox, o código de Zachary faz algo semelhante ao NBD (Network Block Device, dispositivo de bloco em rede), que já existe há algum tempo. Mas Zachary disse que já sabia do NBD e achava o aBUSE suficientemente diferente para ser justificável. Por um lado, o NBD exige acesso a um soquete, o que pode levar a deadlocks em algumas situações, e o NBD é mais complexo no todo. Tejun Heo concordou que a semelhança com o NBD é um grande problema e também sugeriu o uso do FUSE para alcançar boa parte do que aBUSE faz; porém, como Zachary afirmou, uma implementação como essa seria muito chata de fazer. Mesmo assim, a comparação com o NBD convenceu Zachary no fim das contas, o qual decidiu se basear no NBD para suas próprias necessidades e deixou o aBUSE nos arquivos da lista de emails caso alguém no futuro julgue adequado explorá-lo novamente.

ReiserFS, bloqueios e testes de patches Frederic Weisbecker vem tentando eliminar o Big Kernel Lock (BKL) do ReiserFS. Originalmente, as alterações ao ReiserFS eram parte do conjunto geral de patches anti-BKL incluídos na árvore git original, mas rapidamente migraram para sua própria árvore específica do ReiserFS 3. O mecanismo de locking que Frederic escolheu é baseado num mutex recursivo e na maioria

dos casos é mais rápido que o BKL. Em pelo menos um benchmark, no entanto, ele se saiu pior. Surgiu então uma discussão interessante a partir dos patches de Frederic. Andi Kleen mostrou que em todos os benchmarks faltava algum teste de stress que garantisse que o código de fato se comporte de forma adequada sem corromper os dados do disco. Principalmente no caso de sistemas de arquivos, a integridade dos dados tende a ser considerada sagrada. Mas Ingo Molnar argumentou que, além da diligência básica, não é preciso testar exaustivamente os patches antes de submetê-los. Realizar tantos testes nas árvores linux-next e -mm produziria uma variedade de ambientes de teste maior do que qualquer contribuidor poderia ter à disposição. Obviamente não há nada de errado em usar softwares para testes de stress, quando eles existem. Chris Mason afirmou que o script de teste stress.sh seria adequado para testar o ReiserFS, e Frederic ficou satisfeito em usá-lo antes de enviar o código para mais experimentos. Essa parece ser uma extensão da nova ideologia “inclua cedo, inclua frequentemente” proposta quando Linus Torvalds decidiu descontinuar o estilo de desenvolvimento par/ímpar, no qual as árvores de número par teriam foco em estabilidade e as ímpares (como a 2.7, que ainda não existe) se concentrariam no desenvolvimento. Desde essa decisão, os esforços para garantir a estabilidade do kernel foram propagados para várias áreas diferentes, incluindo a árvore estável 2.6.x.y que é liberada a cada versão oficial, as árvores linux-next, -mm e outras especializadas, e as distribuições do sistema operacional Linux propriamente ditas.  n

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 esteve em atividade de 1999 a 2005.

12

http://www.linuxmagazine.com.br

© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).


I Evento de Integração 110111011101101001010101101001001010101101101100101010110101010010

Win Linux

010101010101110101010101101011010110101011010101011010101101010110

“Interoperabilidade. Abrindo Caminhos.” Você vai mudar sua concepção sobre as plataformas atuais do mercado. A VirtualLink irá promover o 1º Evento de Integração Windows e Linux. A última palavra em tecnologia estará presente nesse grande encontro.

10 / 1 1 / 2 0 0 9 B e l é m - Pa r á

Usina 265

Av. Municipalidade, 265

© Linux New Media do Brasil Editora|Ltda. Confirme sua presença: Este www.winlinuxday.com.br contato e patrocinio: 91 3241-4474 documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).


Coluna do Augusto

COLUNA

Já avançamos muito Há alguns anos, usar alguns hardwares no Linux era bem difícil. Hoje, a realidade é bem diferente.

N

o final de setembro, uma série de artigos no BR-Linux serviu para comemorar um avanço pouco comentado (inclusive porque ainda falta muito mais a percorrer) no desktop Linux: o suporte aos periféricos mais comuns, que hoje – especialmente nas distribuições mais voltadas ao desktop – muitas vezes se aproxima do ideal de simplesmente conectar o aparelho e usá-lo, sem qualquer procedimento de configuração executado pelo usuário. Claro que, por um lado, os méritos são em parte da própria evolução do hardware: hoje é bem menos comum ter que plugar periféricos adicionais diretamente nos slots da placa mãe, por exemplo, e o padrão USB chegou para nivelar o campo em que antes competiam portas paralelas (lembra daqueles chaveadores externos para escolher se queria ativar o scanner ou a impressora?), interfaces SCSI e várias plaquinhas proprietárias, uma para cada dispositivo. Por outro lado, como o próprio desktop de código aberto evoluiu bastante, hoje há razoável chance de que uma impressora suportada pelo Linux seja reconhecida e configurada automaticamente, ficando pronta para o uso sem que o usuário tenha que responder a uma série de perguntas e, em especial, sem que precise sair caçando e adaptando arquivos de configuração, recompilando drivers e se preocupando com o funcionamento harmonioso da infinidade de sub-sistemas necessários para que a impressora imprima seus textos e fotos. Os meus scanners, que tanta dor de cabeça já me causaram (com suas portas paralelas, IRQs, necessidade de localizar o arquivo de firmware que o fabricante nem sempre evidenciava etc.), nos últimos anos têm sido configurados automaticamente: termino de instalar o Linux, abro o Gimp, seleciono em um menu a opção de scanear e pronto! É só mandar gerar a pré-

imagem, usar seletores visuais para ajustar formatos, definição, cores e completar a digitalização – nada de me preocupar com os ajustes de baixo nível (protocolos, conexões etc.), pois o sistema operacional cuida disso de forma transparente. E a multimídia? Houve tempo em que, para ouvir qualquer som pelas famosas placas SoundBlaster e similares, era necessário até mesmo recompilar o kernel. O mesmo valia para o uso dos leitores de CD mais comuns. Agora o suporte básico a tudo isso funciona bem, e sem intervenção – embora ainda haja alguns problemas a consertar aqui e ali. Há dois anos, fazer funcionar uma conexão via modem 3G era um parto, com instalação manual de programas discadores, eventual pesquisa de strings de discagem específicas para o seu modelo de modem, busca das opções que faziam o acesso à sua operadora e plano etc. Hoje, quando eu plugo meu modem 3G pela primeira vez em uma nova instalação, o sistema operacional o reconhece, me pergunta qual a operadora (oferecendo por padrão apenas as operadoras brasileiras) e faz toda a configuração para mim. Contando assim, parece pura maravilha, mas depende muito de fazer a escolha certa na hora de comprar o hardware, selecionando os que são compatíveis com o Linux. E há aqueles que ainda estão longe de funcionar de forma tão simples: me deu bastante trabalho configurar um fone de ouvido Bluetooth, por exemplo. Mas isso não é motivo para que deixemos de notar, e comemorar, os pontos em que já avançamos!   n

Augusto César Campos é administrador de TI e desde 1996 mantém o site BR-linux, que cobre a cena do Software Livre no Brasil e no mundo.

14

http://www.linuxmagazine.com.br

© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).


PrePare-se!

SUN TECH DAYS 2009-2010

A Worldwide Developer Conference

sUN TeCH DaYs 2009-2010 Um evento mundial criado para a comunidade global de desenvolvedores e administradores de sistema. Em sua oitava edição, o Sun Tech Days contará com a presença de um convidado especial: James Gosling, conhecido como o ‘Pai do Java’, além dos principais experts da Sun Microsystems. Venha aprender, compartilhar informações, interagir, criar oportunidades, conhecer outros desenvolvedores e, principalmente, participar. Principais temas:

Java • Scripting • MySQL OpenSolaris • NetBeans • RIA’s

Sun Tech Days 8 e 9 de dezembro de 2009 Amcham Business Center | Rua da Paz, 1431 Chácara Santo Antônio - São Paulo - SP Para mais informações, acesse www.suntechdays.com.br, ligue para 11 2532 8926 ou envie um email para techdays@sun.com.

© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).


Coluna do Alexandre

COLUNA

Certificações Quais as principais certificações no mercado de TI? Elas valem o esforço?

A

pergunta é recorrente no mercado de TI e entre os profissionais que dele fazem parte: vale a pena fazer provas de certificação? Existem inúmeras pessoas com argumentos a favor e contra, entretanto a única verdade é: sim, vale e muito a pena. Talvez muitos leitores tenham ouvido a eterna argumentação de que muitos profissionais certificados têm menos conhecimento do que profissionais sem certificação. Todavia, o inverso também se aplica: existem muitos profissionais certificados com mais conhecimento do que aqueles sem certificação. As certificações já provaram seu valor: quem passa por elas atesta conhecer boa parte dos assuntos exigidos na prova, ou seja, comprova sua qualidade como profissional. Existem ótimas certificações de grandes empresas, das quais destacarei as principais: Em Linux: Linux Professional Institute Certification – níveis 1, 2 e 3 N ovell SUSE Certified Linux Professional/Engineer R ed Hat Certified Technician/Engineer Em Solaris: S un Certified System Administration S un Certified Network Administration S un Certified Security Administration Em Java: P rogramador Certificado Sun Java (SCJP) D esenvolvedor Certificado Sun Java (SCJD) Desenvolvedor de Componentes Web Certificado Sun (SCWCD) D esenvolvedor de Componentes de Negócios Certificado Sun (SCBCD) D esenvolvedor Certificado Sun para Web Services em Java (SCDJWS) A rquiteto Corporativo Certificado Sun (SCEA)

Em segurança: C ISSP C ertified Ethical Hacker C ertified Hacking Forensic Investigator As certificações da Novell e da Red Hat são mais difíceis, já que requerem uma extensa prova de perfil prático na qual o candidato deve provar seus conhecimentos com cenários e tarefas similares ao dia a dia. A LPIC é padrão de mercado por ser uma certificação séria, muito bem conceituada e em constante evolução para adequar-se ao mercado, sendo a mais requerida para quem trabalha com Linux. Os profissionais certificados pela Sun são os mais difíceis de encontrar no mercado, portanto acabam tendo grande valorização. No caso de Java, talvez nem seja preciso entrar em tantos detalhes: é a linguagem padrão do mercado e conta com um número crescente de profissionais que a aprendem; contudo, poucos passaram pelo crivo da certificação da Sun. Finalmente, as provas de segurança têm nível muito elevado e exigem um bom tempo de estudo do candidato. São muito diferenciadas, e profissionais que as detêm se destacam na área de segurança da informação. Um dos melhores atalhos na carreira são estas provas de certificação. Vale a pena estudar, dedicar um certo tempo – inclusive alguns fins de semana – e ajudar a si mesmo a ter sucesso na carreira, sem depender de ninguém além do indivíduo mais importante deste mundo: você mesmo.  n Alexandre Borges é Especialista Sênior em Solaris, OpenSolaris e Linux. Trabalha com desenvolvimento, segurança, administração e performance desses sistemas operacionais, atuando como instrutor e consultor. É pesquisador de novas tecnologias e assuntos relacionados ao kernel.

16

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).


Coluna do Kurt

COLUNA

Segurança sem fio Como encontrar, mapear, invadir e se passar por uma rede sem fio.

T

alvez eu esteja entre os últimos a ainda se conectar à Internet por uma rede com fios em vez de partir para o mundo do wi-fi como meus pais, meus amigos etc. Parece que todos estão usando laptops e pontos de acesso de R$ 100, o que, para muitas pessoas, é mais fácil e mais barato do que montar uma rede Ethernet. Mas, depois de ler esta coluna, você provavelmente vai querer manter sua rede com fio.

Procura de redes sem fio

Para ver o que me preocupa, o primeiro passo é achar algumas redes sem fio. Uma das melhores ferramentas para isso é o Kismet, já presente na maioria das distribuições. Muitas delas vêm com uma versão antiga (2008), portanto, para começar, baixe a nova versão do Kismet [1], descompacte-o, execute o script de configuração e instale-o. Note que o Kismet precisa ser executado pelo root, pois se comunica diretamente com o hardware. Outra possibilidade é ativar o suid ao executável e adicionar usuários ao grupo kismet. Note que, se for usada essa técnica, qualquer usuário do grupo kismet terá acesso às suas interfaces de rede. Portanto, tome cuidado. cd /directory/kismet-source/ ./config make make dep make install

O Kismet possui três componentes principais: o drone, o servidor e o cliente. O drone captura o tráfego da rede e o envia ao servidor (que pode estar rodando no mesmo sistema ou remotamente). O servidor coleta e compara os dados e o cliente se conecta ao servidor para retornar os dados em uma interface de texto em tempo real. Isso permite analisar múltiplos sistemas, incluindo pontos de acesso com firmware embutido

(como o WRT54G) e enviar todos os resultados para um único servidor. Para rodar o Kismet, basta executar o comando kismet_client, que oferece a opção de iniciar o servidor e colher dados. Isso, por sua vez, gera vários arquivos, incluindo dados de GPS (mapeamento de redes com localização física, caso você tenha um GPS no sistema), dados de rede (uma lista de redes e clientes encontrados, o canal usado e todos os detalhes de configuração que você puder imaginar) e um arquivo PCAP de captura de rede. Uma coisa que você vai perceber é que, se rodar o Kismet com apenas uma fonte de captura (isto é, uma única interface wi-fi), ele terá que ir de canal em canal para verificar todos os 11 canais (ou 12 ou 13, dependendo do seu país). Mesmo detectando todas as redes disponíveis, isso vai acabar gerando arquivos de captura fragmentados, pois o programa captura um pouco de tráfego de uma rede, um pouco de outra... Felizmente, a solução é simples: compre alguns adaptadores wi-fi (os USB funcionam muito bem) e adicione mais interfaces de captura. O ideal parece ser quatro deles (figura 1). Assim, você pode dedicar um ponto a cada canal principal (1, 6 e 11) e deixar o último para passar pelos canais que sobraram, garantindo a localização de todas as redes e maximizando a quantidade de dados a ser capturada [2]. A configuração é simples. Basta incluir as seguintes linhas no arquivo kismet.conf: channellist=hoplist:2,3,4,5,7,8,9,10 ncsource=wlan0:hop=false,channel=1 ncsource=wlan1:hop=false,channel=6 ncsource=wlan2:hop=false,channel=11 ncsource=wlan3:hop=true,flfl channellist=hoplist

Fui a um café local com o Kismet e em poucos minutos descobri mais de 40 redes. Numa segunda ten-

18

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).


SEÇÃO  | Matéria

na sua interface wi-fi para que os clientes obtenham informações de configuração da rede. Depois, execute o Metasploit com os módulos de servidor – para executar ataques tipo man-in-the-middle – e também com os módulos de navegador (chamados autopwn, ataque automático) – para injetar conteúdo hostil em páginas web (confira a documentação do Karmetasploit [5]) – ou monte um proxy web transparente e divirta-se .

Como se proteger Figura 1 Cliente Kismet com quatro fontes de captura.

tativa, em outro café (na mesma rua, mas no segundo andar, com uma linha de visão mais direta para os outros prédios), detectei mais de 70 redes. Em média, metade delas não era criptografada. Várias eram pontos que cobravam acesso e algumas poucas tinham apenas um cliente, provavelmente uma rede doméstica. O que achei interessante foi a possibilidade de capturar os endereços MAC de clientes de redes pagas, muitos dos quais usam filtro MAC após a autenticação. Portanto, se você souber de qual endereço MAC se apropriar, conseguirá acesso gratuito.

Atravessando a criptografia

O melhor aspecto de quebrar a criptografia é saber que, na maioria dos casos, isso não é necessário. Quando você precisar de acesso a uma rede criptografada, no entanto, saiba que os padrões WEP e WPA são bem fracos. Muitas distribuições vêm com o Aircrack-ng [3], um programa para quebrar chaves WEP e WPA. Para usá-lo, basta executar o programa airoscript, que oferece uma interface de texto. Se estiver com preguiça, escolha a opção auto, que irá varrer, selecionar e atacar uma rede de forma autônoma.

Ataque a clientes

As pessoas tendem a se concentrar na proteção de sua infraestrutura wi-fi (criptografia, controle de acesso etc.), mas se esquecem dos clientes. Se você tem uma rede wi-fi ao alcance, pode fingir ser um ponto de acesso legítimo e convencer os clientes a se conectar a você. Depois, pode se conectar ao ponto de acesso legítimo para repassar e modificar seu tráfego dinamicamente. Este tipo de ataque é conhecido como “falso ponto de acesso”. O programa para isso é o Karmetasploit (antigamente apenas Karma, mas agora unido ao Metasploit). As instruções para baixar e instalar o Metasploit estão em outro artigo [4]. Depois de instalar o Metasploit e o Aircrack-ng, basta executar airbase-ng e iniciar um servidor DHCP

Mesmo os usuários mais cautelosos não têm como se certificar de que estão seguros. Muitas redes wi-fi com acesso pago não usam criptografia, pois teriam que fornecer a chave de acesso para cada usuário. Quem quisesse atacar a rede conseguiria facilmente uma cópia da chave para descriptografar o tráfego. Mesmo que o provedor tenha um gateway de pagamento protegido por SSL, não há como evitar que alguém tenha acesso ao seu tráfego ou obtenha sua senha, por exemplo. A criptografia de todo o tráfego da rede seria uma proteção, como eu já expliquei no artigo “Túneis secretos” [6]. Se você não dispõe de um servidor VPN para criptografar seu tráfego, tente o serviço VPN do IPREDator [7]. Ele permite uma conexão VPN com criptografia PPTP por apenas 5 € por mês, tunelando todo o tráfego para a Suécia, onde fortes leis de privacidade impedem o acesso a ele.  n

Mais informações [1] Kismet: http:/ www.kismetwireless.net [2] Lista de canais WLAN na Wikipédia (em inglês): http://en.wikipedia.org/ wiki/List_of_WLAN_channels [3] Aircrack-ng: http:// www.aircrack‑ng.org/ [4] Kurt Seifried, “Explorar vulnerabilidades é fácil com o Metasploit”: http:// lnm.com.br/article/2472 [5] KARMA + Metasploit 3 = Karmetasploit: http:// trac.metasploit.com/wiki/Karmetasploit [6] Kurt Seifried, “Túneis secretos”: http:// lnm.com.br/article/2885 [7] IPREDator: https://www.ipredator.se/

Kurt Seifried é consultor de segurança da informação especializado em redes e Linux desde 1996. Ele frequentemente se pergunta como a tecnologia funciona em grande escala mas costuma falhar em pequena escala.

20

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).


NOTÍCIAS

➧ Código do KDE vale US$ 175 milhões O projeto KDE oficial consiste, atualmente, em 4,2 milhões de linhas de código. Cornelius Schumacher calculou as linhas dos projetos individuais e publicou as estatísticas de custo de produção de todo esse código. O código-fonte atual do módulo central do KDE contém exatamente 4.273.291 linhas, segundo Schumacher informa em seu blog. Quase metade das linhas pertencem aos três maiores projetos: kdebase, kdelibs e kdepim. A equipe do KDE-Edu

fica em quarto lugar no número de linhas de código, seguida por kdebinding e módulos de rede. O blog afirma que os números contabilizam somente as linhas de código do módulo principal, com o KOffice e vários outros programas possuindo muito mais linhas de código. Schumacher também mostra que os melhores desenvolvedores encurtam os programas ao retirar códigos desnecessários. Ele insiste que seus números são válidos e oferecem um bom panorama da situação atual do KDE. Cornelius Schumacher gerou os números por meio do programa SLOCCount de David A. Wheeler, que estimou o valor do software (especificamente o custo de desenvolvimento) em US$ 175.364.716.  n

➧H TC publica código-fonte do seu kernel

A HTC, fabricante dos smartphones Dream, Hero e Magic, todos equipados com o sistema operacional Android, do Google, disponibilizou para download o código-fonte do kernel Linux usado no Hero. Lançado nos EUA em julho, o smartphone movido a Linux certamente será lançado no Brasil com “aquele precinho”, mas ainda em 2009, especulase. Trata-se também do primeiro telefone com Android a oferecer suporte ao Adobe Flash. Além disso, o portal da HTC que abriga o código-fonte inclui os fontes e binários de outros smartphones com Android da HTC, como o Dream (também conhecido como G1 e avaliado pela Linux Magazine) e o Magic (lançado somente no exterior, onde é conhecido por myTouch). Os downloads ocupam aproximadamente 50 MB cada e têm como alvo os desenvolvedores que desejam criar aplicativos para os modelos. O telefone mais recente da fabricante, no entanto – chamado Tattoo e também ausente no Brasil – ainda não teve seu código-fonte liberado.  n

➧A TI libera SDK para OpenCL

A AMD liberou o Software Development Kit para o ATI Stream. Com essa ferramenta, os desenvolvedores agora podem lançar mão da Open Computing Language (OpenCL), uma plataforma que permite utilizar os poderosos processadores gráficos incluídos nas placas de vídeo para auxiliar a CPU a computar. Segundo a AMD, a SDK do Stream foi certificada pelo Khronos, consórcio responsável pela manutenção dos padrões OpenCL. Os sistemas operacionais suportados incluem o Open Suse 11.0 e o Ubuntu 9.04, ambos nas versões de 32 e 64 bits, e também o Windows XP e posteriores. Na área do hardware, são suportados chips gráficos on-board e os das placas de vídeo AMD Radeon e Firestorm.  n

➧E eebuntu: sai Ubuntu, entra Debian A equipe de desenvolvimento do sistema Eeebuntu, uma adaptação do Ubuntu para netbooks, informou que deixará de usar a distribuição da Canonical como base para seu projeto. No lugar dela, a equipe utilizará o ramo instável do Debian. Os motivos para a mudança foram explicados no fórum do Eeebuntu e incluem maiores estabilidade e flexibilidade. A independência do ciclo fixo de lançamentos do Ubuntu também foi citado como aspecto positivo da mudança. Os desenvolvedores ainda criticaram versões antigas do sistema da Canonical, caracterizando-as como frequentemente defeituosas e de lento amadurecimento. Com o Eeebian, ou qualquer que seja o novo nome que o projeto vai assumir, chegará a três o número de distribuições GNU/Linux baseadas no ramo instável do Debian, ao lado do Sidux e do Seminarix.  n

Para notícias sempre atualizadas e com a opinião de quem vive o mercado do Linux e do Software Livre, acesse nosso site: www.linuxmagazine.com.br

22

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).


CORPORATE

➧ I BM promove

Ubuntu nos EUA

Coincidindo com o lançamento do Windows 7, a IBM enviou à imprensa no fim de outubro um comunicado sobre o lançamento de seu cliente da solução Smart Work para clientes Ubuntu. O cliente é um conjunto de softwares para Ubuntu e já existe há um ano. No anúncio, a IBM enfatiza também o custo significativamente inferior de sua solução em comparação com o Windows 7: “Estimativas de mercados independentes chegam a US$ 2.000 para o custo de migrar para o sistema operacional Windows 7 para

➧ Sun prevê 3.000 demissões

vários usuários de PC. Novos requisitos de hardware de PCs são responsáveis por uma parte significativa do gasto adicional”. E, para deixar perfeitamente clara a intenção da big blue, “o cliente da IBM para o pacote Smart Work, lançado em 24 de setembro na África, foi projetado inicialmente para mercados emergentes, mas chamou a atenção para a solução nos EUA. A versão norte-americana chegará a tempo para ajudar empresas a evitar as licenças maiores, atualizações de hardware e custos de migração associados ao Microsoft Windows 7”. Pode-se encontrar os detalhes do cliente para o Smart Work na página da IBM, assim como instruções de download no site do Ubuntu.  n

Num relatório enviado à SEC (Securities and Exchange Commision) dos EUA no fim de novembro, a Sun anunciou planos de cortar 3.000 funcionários no futuro próximo. A empresa apontou como culpada pelas demissões a investigação conduzida pela União Europeia, que estaria causando atrasos em seu faturamento. Os cortes serão realizados ao longo dos próximos 12 meses, mas felizmente o Brasil parece estar fora de perigo: o anúncio citou somente as áreas da América do Norte, Ásia e Europa como afetadas pelas demissões. Esta chamada “reestruturação” custará à Sun entre 75 e 125 milhões de dólares, diz o estudo, incidindo a maior parte no primeiro semestre de 2010. Como noticiado anteriormente, a Oracle anunciou em abril a aquisição da Sun por US$ 7,5 bilhões. Ambas as empresas consideram a operação completada, diferentemente da investigação em andamento pela Comissão Europeia (órgão da União Europeia), que visa evitar a dominação do mercado e irregularidades na concorrência. Incluído no acordo está o banco de dados livre MySQL, peça principal nos questionamentos de dominação do mercado, em virtude da concorrência com o banco da Oracle.   n

➧ Lançado o CentOS 5.4

O projeto CentOS, que distribui uma versão recompilada dos pacotes que compõem o Red Hat Enterprise Linux, lançou a versão 5.4 do sistema. Pela primeira vez, o projeto é distribuído num live CD. Evidentemente, o CentOS 5.4 usa como base o RHEL 5.4, lançado pouco mais de três meses antes. A nova versão traz as melhorias do sistema de virtualização KVM e atualiza a versão do compilador GCC para a 4.4. O CentOS 5.4 está disponível para as arquiteturas x86 e x86-64, mas o live CD somente abrange a versão x86.   n

Para notícias sempre atualizadas e com a opinião de quem vive o mercado do Linux e do Software Livre, acesse nosso site: www.linuxmagazine.com.br

24

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 na Unimed Londrina

CORPORATE

Cooperativa e colaborativa A Unimed Londrina precisava de uma solução mais poderosa e estável para aplicações de missão crítica. Após escolher o Linux, ela agora colhe os frutos. por Pablo Hess

A

Unimed é um sistema de cooperativas médicas atuante desde 1967 no Brasil. Fundada na cidade de Santos, SP, seu modelo se espalhou rapidamente por todo o país, começando pela cidade de Londrina, PR, em 1971. Atualmente composta por mais de 370 cooperativas, a Unimed detém, em todo o território brasileiro, 34% de participação no mercado nacio-

José Roberto de Souza, gestor de TI da Unimed Londrina.

nal de planos de saúde, com 15,4 milhões de clientes. Num ambiente de missão crítica com quase mil usuários, a empresa – “maior experiência cooperativista na área de saúde em todo o mundo”, segundo o site da instituição – identificou na unidade de Londrina, há cerca de dois anos, a necessidade de aprimorar sua infraestrutura de TI de forma a atender às crescentes demandas e aos processos de negócio. Há usuários nas 600 clínicas distribuídas pela cidade de Londrina, além de 370 colaboradores internos de aplicações de missão crítica da unidade local da Unimed, o que significa que “o sistema não pode ficar nem um minuto fora do ar”, nas palavras de José Roberto de Souza, gestor de TI da Unimed Londrina. Porém, como ele explica, “a infraestrutura era incapaz de processar todas as atividades simultaneamente, transformando-se em um obstáculo ao desenvolvimento e avanço do nosso negócio”. Diante da opção de continuar com o mesmo fornecedor ou conhecer outras ofertas disponíveis no mercado, a Unimed Londrina optou pela liberdade e confiabilidade oferecidas pelo Software Livre. Após selecionar a HP como

fornecedora das soluções e a Suprimática como integradora, Souza aproveitou a oportunidade para não apenas atualizar os equipamentos da cooperativa, mas implantar um sistema mais sofisticado de backup e armazenamento. Com auxílio das parceiras, chegou ao desenho de uma infraestrutura focada na continuidade e evolução dos negócios. O projeto incluiu equipamentos da família HP Integrity com ambiente Red Hat Advanced Server, além de serviços de consultoria, integração e migração de máquinas e equipamentos. “Os servidores foram destinados à gerência de backup, do plano de continuidade de negócios, responsável pela administração do software de gerenciamento de backup Protector Cell Manager e outras aplicações de missão crítica”, detalhou o gestor. Os três servidores – um da linha HP ProLiant e dois da família HP Integrity ligados em cluster – foram dedicados ao banco de dados e aos processos de contingência e de gestão do ambiente de TI. “Antes, quando um servidor saía do ar, os usuários do sistema precisavam aguardar o seu restabelecimento para continuar trabalhando”, lembra Souza. “Agora, se eventualmente

26

http://www.linuxmagazine.com.br

© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).


Unimed | CORPORATE

um servidor sair do ar – o que em quase dois anos nunca aconteceu, o usuário sequer percebe, já que o equipamento de contingência mantém o sistema em funcionamento”, explica. A maior estabilidade e confiabilidade dos sistemas foram alguns dos benefícios obtidos pela empresa com a atualização de sua infraestrutura. “Os novos servidores atendem ao software de missão crítica da companhia”, destaca o gestor, acrescentando que as clínicas de saúde em Londrina dependem desse sistema para garantir o atendimento a seus clientes.“Trata-se de um serviço online para todo o processo de atendimento, solicitação de internação, autorização de exames, entre outras coisas”, afirma Souza. Desenvolvida para substituir a plataforma anterior, a solução HP foi baseada no sistema operacional Red Hat Advanced Server 4 e equipamentos da família de servidores Integrity. A oferta de serviços, hardware e software compreendeu: desenho de uma arquitetura escalável de servidores; aquisição e instalação de dois servidores HP RX3600 equipados com o sistema operacional Red Hat Advanced Server 4 para gerenciamento de backup e suporte às aplicações; aquisição e instalação de dois servidores HP ProLiant DL580 e DL380 G5 em cluster como SAN Management Appliance, ambos equipados com Red Hat Advanced Server 4, utilizados para contingência dos sistemas e banco de dados; aquisição e implementação do storage HP EVA 4000; biblioteca de fitas HP Storage­ Works MSL2024 Autoloader; aquisição e implantação do software de gerenciamento de backup HP Open View Data Protector Cell Manager;

Rack com a nova infraestrutura de TI da Unimed Londrina.

configuração dos servidores e das estruturas de armazenamento e backup.

A implantação das novas máquinas foi concluída em aproximadamente três meses e envolveu ainda a consolidação dos servidores e dados da Unimed Londrina. “Tínhamos bancos de dados distribuídos pelos diversos servidores, sem qualquer tipo de consolidação das informações”, lembra Souza. Hoje, esse banco de dados está centralizado em um único servidor. “Além disso, havia processos que só podiam ser executados fora dos horários de pico para não comprometer a capacidade de processamento disponibilizada às clínicas associadas à Unimed”, relata, explicando que, por consequência, a produtividade dos colaboradores da cooperativa aumentou expressivamente. O novo sistema de armazenamento não apenas garantiu à Unimed Londrina a integridade de seus da-

dos corporativos, como facilitou o gerenciamento desses recursos. “Os gastos e tempo despendidos com a manutenção dos sistemas também caíram a praticamente zero”, segundo Souza. Entre os resultados das ações, José Roberto avalia que houve aumento da produtividade dos colaboradores, ganho de estabilidade e confiabilidade no ambiente, garantia de contingência para os negócios, economia com gastos de manutenção dos servidores, garantia de plena segurança das informações corporativas e mais agilidade no atendimento às demandas operacionais.  n

Gostou do artigo? Queremos ouvir sua opinião. Fale conosco em cartas@linuxmagazine.com.br Este artigo no nosso site: http://lnm.com.br/article/3103

27

Linux Magazine #60 | Novembro de 2009

© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).


CORPORATE

Coluna do maddog

Não desperdice Você conhece a diferença entre Software Livre e mídia gratuita?

A

o me preparar para o dia 19 de setembro, o Dia da Liberdade do Software (SFD, na sigla em inglês), eu conversava com o Grupo de Usuários Linux da Austrália sobre os problemas e dificuldades de se criar e distribuir CDs de Software Livre. Ainda me lembro do primeiro CD que vi muitos anos atrás: o grande Knoppix de Klaus Knopper. Isso, pensei, é quase mágica – uma distribuição que roda sem precisar do disco rígido. Com o tempo, muitas distribuições escolheram o mesmo caminho, permitindo assim ser testadas sem precisarmos de fato instalá-las. Por exemplo, algumas são voltadas à educação, outras à multimídia e outras a trabalhos científicos. Depois, o conceito de iniciar com um CD, armazenando os dados em um arquivo no disco rígido ou pen drive, nos conduziu à ideia de “pen drive inicializável com persistência”. Agora, a vida é bela e, há um ano, tenho sempre no meu pescoço uma distribuição de emergência. O pen drive não causa problemas com a

e cobrarem pelo S CD ou pedirem uma doação, mesmo que pequena, a atitude do recipiente mudará e ele começará a se interessar mais pelo conteúdo, mesmo que prefira não doar nada.

segurança de aeroportos e, se algo acontecer ao meu laptop (bate na madeira), não estarei perdido. Mesmo assim, algumas questões foram levantadas nos emails do grupo da Austrália sobre o fornecimento gratuito de CDs no SFD. Havia objeções (corretas) à encomenda desigual de CDs. Alguns grupos fizeram grandes encomendas e acabaram com muitas caixas extras de CDs das quais tentavam se livrar – talvez até jogando tudo fora, pois o conteúdo já estava obsoleto. Alguns grupos encomendaram muito pouco e acabaram entregando CDs com rótulos feitos à mão, o que parece pouco profissional. Para contornar esse problema, o Grupo de Usuários Linux da Austrália decidiu pré-fabricar alguns CDs e embarcá-los prontos, mas também fizeram alguns CD-Rs adicionais e puseram a imagem ISO no CD-R no SFD. Portanto, os CDs que não fossem usados serviriam para futuros eventos do SFD. Algumas pessoas do grupo de discussão opuseram-se à produção dos CDs dizendo que a banda larga era o melhor meio para instruir novos recrutas do SFD sobre como baixar as imagens e queimar seu próprio CD. O problema dessa abordagem é que um grande número de pessoas ainda não tem acesso à banda larga ou paga caro por downloads e, por isso, a distribuição dos CDs no SFD ainda seria necessária. Uma solução para o problema de desperdício de CDs seria usar CDs regraváveis, um pouco mais caros, imprimir o rótulo e gravar a ISO. Quem recebe o CD-RW no SFD pode atualizar a imagem ISO quando necessário, mas as informações impressas (endereço do site, instruções para gravar e iniciar pelo CD-RW etc.) ainda estariam lá. Melhor até seria usar um DVD-RW, que pode armazenar várias imagens ISO. Demora um pouco mais

28

http://www.linuxmagazine.com.br

© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).


Maddog | CORPORATE

para queimar, mas possibilita ao usuário entender e escolher os diferentes tipos de distribuição live que deseja ter em casa. A solução final, logicamente, seria o pen drive de inicialização. Porém, distribuí-los gratuitamente aos frequentadores do SFD seria um tanto caro. Essa ideia nos levou à discussão de “gratuidade versus liberdade”. Quando os pen drives foram mencionados, foi dito que algumas pessoas esperam que eles sejam gratuitos. Essa foi a oportunidade perfeita para discutir as diferenças entre “Software Livre” e “Mídia grátis” com os frequentadores do SFD. Apesar de o software ser gratuito porque sua licença é distribuída gratuitamente, o custo de colocar este software em um CD é real, assim como o CD virgem. Além do mais, deve ser explicado que, mesmo que o disco tenha sido doado, assim como o software é um presente em virtude de seu licenciamento, ele acaba encarecendo com o tempo.

Já participei da distribuição gratuita de Software Livre em CDs doados em alguns eventos nos quais as pessoas pegavam os CDs sem sequer saber qual programa ele continha. Em alguns casos, achavam que era “um joguinho para Windows”. Uma vez, encontrei CDs no lixo na saída do evento. Se cobrarem pelo CD ou pedirem uma doação, mesmo que pequena, a atitude do recipiente mudará e ele começará a se interessar mais pelo conteúdo, mesmo que prefira não doar nada. Apreciação e compreensão são preços baixos a se pagar pelo Software Livre e podem evitar grandes desperdícios.  n

Jon ‘maddog’ Hall é presidente da Linux International, instituição internacional dedicada a promover o Linux e o Software Livre. Maddog viaja o mundo ministrando palestras e debatendo com decisores sobre o uso do Software Livre em âmbito tanto corporativo quanto comunitário.

29

Linux Magazine #XX | Mês de 200X

© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).


Coluna do Taurion

CORPORATE

Serviços sobre Open Source Algumas das novas oportunidades que o estabelecimento do Open Source traz.

O

pen Source já não é mais novidade. Não que o assunto tenha se esgotado, mas já está no dia a dia das empresas. E um dos negócios em torno do Open Source que está crescendo bastante são exatamente os serviços. Neste modelo, não se ganha dinheiro diretamente com venda de licenças, mas principalmente com serviços. Segundo o IDC, neste ano de 2009 o mercado mundial de serviços em torno do Open Source deverá atingir a casa dos sete bilhões de dólares, um crescimento de 25% sobre o ano anterior. Em 2013, as previsões são que alcancem 12,7 bilhões de dólares! A receita de serviços acumulada entre 2008 e 2013 será de mais de 54 bilhões de dólares. Realmente, estamos falando de muito dinheiro. Indiscutivelmente, esses números significam que o Open Source já criou um ecossistema forte e saudável que não tem como ser ignorado. O Open Source já atingiu a sua maturidade e as discussões ideológicas estão sendo deixadas de lado. Lembro-me que em 2004 e 2005 as discussões se centravam na luta entre o bem e o mal, com o mal simbolizado pelo software proprietário. Não se falava em mercado e nem das dificuldades das empresas em adotar Open Source. Muitas iniciativas eram, no âmbito governamental, definidas por decreto, sem uma visão clara e consistente dos desafios a ser enfrentados. Hoje o contexto é diferente. Muitos projetos de software Open Source já estão amadurecidos. O Linux já tem 18 anos, o MySQL 14 anos, o PostgreSQL é de 1996, o Apache surgiu em 1995, o Eclipse em 2001, Mozilla em 1998 e o OpenOffice.org em 2000. A indústria de software, salvo raras exceções, já entendeu que Open Source é irreversível. E muitas empresas de software misturam código Open Source com seu código proprietário, criando soluções híbridas. Estas alternativas abrem espaço para produtos inovadores como os ofertados pela Black Duck Software e pela OpenLogic,

que vasculham código em busca de alguma violação de patentes. Também já vemos Open Source entrando em outros setores de software, como um sistema de tíquetes de chamado, o OTRS, e sistemas de carrinho de compras para comércio eletrônico como o osCommerce ou o Zen Cart. Existem soluções para integração de dados e ETL, como o Talend e diversos outros softwares. De volta aos serviços, o segmento de maior crescimento é exatamente o de integração. Curiosamente, os de menor oportunidade de negócios são as atividades de educação e treinamento. Entretanto, os treinamentos abrem portas para os serviços de maior valor agregado, como consultoria e integração. E quais sugestões podemos fazer para empreendedores que queiram entrar neste setor? Apenas duas: a primeira é que gerar dinheiro com software Open Source é diferente do modelo proprietário. Como não existem licenças, deve-se buscar receita em serviços ou obter ganhos indiretos. Além disso, não esquecer que integração entre sistemas proprietários e Open Source é a demanda de maior oportunidade. Assim, não tem sentido uma empresa ser especializada 100% em Open Source. A segunda sugestão é prestar atenção à rápida disseminação da chamada “Internet das Coisas”, na qual sensores e outros dispositivos atuarão em tempo real, integrados à infraestrutura fisica do planeta. As oportunidades de novos negócios usando tecnologias Open Source serão absolutamente imensas. Finalizando, vejam a interessante iniciativa do projeto colaborativo e global chamado “The Open Source Census”, que pretende fazer o censo global da adoção de Open Source. O site é https://www.osscensus.org/.  n Cezar Taurion (ctaurion@br.ibm.com) é diretor de novas tecnologias aplicadas da IBM Brasil e editor do primeiro blog da América Latina do Portal de Tecnologia da IBM developerWorks, em https://www.ibm.com/ developerworks/mydeveloperworks/blogs/ctaurion/.

30

http://www.linuxmagazine.com.br

© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).


Storage mais veloz

CAPA

Rápido como deve ser Este mês, apresentamos algumas formas de tornar o storage mais rápido sem gastar um centavo a mais. por Joe Casad e Pablo Hess

S

istemas velozes são sempre mais caros. E quanto mais poderosos ficam os computadores, mais exigimos deles. O problema é que não estamos dispostos a pagar sempre um pouco (ou muito) a mais para obter respostas rápidas. Como resultado, a história é sempre a mesma: olhos no relógio e o pé nervoso batendo repetidamente no chão. Porém, num ano em que empresas e pessoas em todo o planeta tentam de tudo para economizar em TI, fazer mais com menos é fundamental – e também um dos pontos fortes do GNU/Linux. Nosso primeiro artigo de capa desta edição mostra como obter um melhor desempenho de sistemas de armazenamento RAID via software. Você entenderá todos os benefícios de alinhar o sistema de arquivos à infraestrutura RAID – algo somente possível no RAID por software, jamais via hardware – e exibiremos os resul-

tados de alguns testes práticos que comprovam o melhor desempenho dessa solução. O segundo artigo explora o inovador sistema de memória distribuída memcached, destinado a espalhar o cache por múltiplas máquinas de forma altamente escalável. Com ele, vários sites de alto tráfego já melhoraram seu desempenho e conseguiram reduzir a carga sobre os servidores de banco de dados em até 90%. Em seguida, apresentamos o software de backup de código aberto mais sofisticado e poderoso da atualidade, o Bacula. Com uma arquitetura completamente modular, ele é capaz de coletar dados com pre-

cisão absoluta e armazená-los em praticamente qualquer mídia – ou servidor, ou sistema de arquivos, ou banco de dados... Como bônus, você ainda ganha o artigo na seção Redes, que demonstra como criar um sistema de arquivos Samba distribuído e incrivelmente escalável usando somente ferramentas já incluídas no Samba 3.3. Leia com atenção e acelere sem olhar para trás!  n

Índice das matérias de capa RAID ótimo Cache mais rápido Backup profissional Samba mais disponível

32 40 45 58

31

Linux Magazine #60 | Novembro de 2009

© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).


Parâmetros de sistemas de arquivos para otimizar RAID

CAPA

RAID ótimo É possível ganhar até 20% de desempenho simplesmente com o uso dos parâmetros corretos nos sistemas de arquivos sobre RAID. por Ben Martin

C

riar um RAID por software usando o kernel Linux está cada vez mais fácil. Com os comandos mdadm e pvcreate, é rápido implantar um LVM sobre dispositivos RAID 5 ou RAID 10. Na verdade, o procedimento para montar um sistema RAID ficou tão simples que muitos usuários rotineiramente passam por todo o processo sem avaliar como as configurações afetam o desempenho. No RAID, entretanto, as configurações padrão nem sempre são um atestado de performance ótima. Como este artigo demonstra, ajustar os parâmetros do sistema de arquivos aos detalhes do sistema RAID pode melhorar o desempenho em até 20%.

Organização do RAID

Sistemas de arquivos são softwares complexos. A princípio, podem parecer simples: eles simplesmente permitem salvar um arquivo e acessá-lo depois. Infelizmente, até mesmo escrever um pequeno arquivo apresenta problemas, pois o sistema armazena dados em vários locais antes de chegar ao disco rígido. O kernel mantém caches, o controlador de disco pode ter uma pequena memória cache e o próprio disco tem alguns megabytes de cache volátil. Portanto, quando o sistema de arquivos quer se certificar

de que 100 KB estão mesmo no disco, é preciso realizar uma operação complexa e geralmente lenta. Quando se usa um sistema RAID 5 com quatro discos, o kernel Linux escreve três blocos de dados reais em três discos diferentes e em seguida põe as informações de paridade desses três blocos no quarto disco. Desta forma, é possível perder qualquer um dos quatro discos (por falha do disco) e ainda manter informações suficientes para resgatar o conteúdo completo dos três blocos de informação. Como os sistemas de arquivos e discos usam “blocos”, os especialistas em RAID chamam esses três blocos de “segmentos” (ou chunks em inglês). Com quatro discos, temos três segmentos de dados e um segmento de paridade. Assim, o tamanho do stripe é de três segmentos, enquanto o tamanho do stripe de paridade é de um segmento. O tamanho do stripe é muito importante, pois o sistema de arquivos tenta escrever todos os segmentos de um stripe ao mesmo tempo para que o segmento de paridade possa ser calculado a partir dos três segmentos presentes na memória RAM e no disco. Talvez você esteja se perguntando o que aconteceria se um programa atualizasse apenas um dos três segmentos de dados.

Para começar, vamos chamar o segmento sendo escrito de segmento X e a paridade desse stripe de segmento P. Uma opção é ler os outros segmentos do stripe, escrever o segmento X, calcular o novo segmento P e escrevê-lo no disco. A outra opção é que o RAID leia o segmento P e o valor do segmento X antigo e calcule uma maneira de modificar o segmento P para que ele reflita as mudanças feitas no segmento X. Como se pode ver, as coisas se complicam para o RAID quando não estamos apenas escrevendo no disco um grande intervalo de dados contínuos de forma sequencial. Agora, considere que o próprio sistema de arquivos tenha que manter metadados no disco onde foi criado. Por exemplo, quando você cria ou apaga um arquivo, os metadados são alterados, o que faz com que alguns dados sejam escritos no disco. Dependendo de como o sistema de arquivos é projetado, a leitura de um diretório exige que vários outros dados também sejam lidos. Por isso, se o sistema de arquivos conhece o tamanho do segmento e da faixa, ele pode tentar arrumar os metadados em segmentos que facilitariam a vida do RAID, melhorando, assim, o desempenho.

32

http://www.linuxmagazine.com.br

© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).


Raid | CAPA

RAID 5 Este artigo exige certa familiaridade com os conceitos de RAID e suas configurações no Linux. Se esse não for seu caso, há bons grupos de discussão online [1]. O RAID (Redundant Array of Inexpensive Disks, ou Conjunto Redundante de Discos Econômicos) é uma coleção de técnicas para armazenagem de dados tolerante a falhas. O termo surgiu de um trabalho de 1988 intitulado “A Case for Redundant Arrays of Inexpensive Disks”, escrito por David Patterson, Garth Gibson e Randy Katz [2]. O sistema de armazenamento de dados tolerante a falhas fornece meios de preservar dados no caso de falhas no disco. O modo mais fácil de fazer isso (conceitualmente, ao menos) é escrever todos os dados duas vezes em dois discos diferentes. Essa abordagem lembra vagamente os chamados discos espelhos e é conhecida no sistema RAID como RAID 1. Esse espelhamento não é muito elegante ou eficiente, apesar de resolver o problema. Cinquenta porcento do espaço disponível em disco é dedicado à armazenagem de informações redundantes. O trabalho original de Patterson, Gibson e Katz (bem como inovações posteriores) explorou técnicas alternativas para oferecer uma tolerância ao erro mais eficiente. O método mais usado na indústria da computação é a divisão de discos com paridade, também conhecido por RAID 5. O RAID 5 usa um arranjo de três ou mais discos. Em um arranjo de N discos, os dados são escritos em N-1 discos, e o disco final guarda a informação de paridade que será usada para restaurar os dados originais caso um dos discos falhe. A quantidade de discos do arranjo dedicada à informação redundante é, portanto, 1/N, e conforme o número de discos do arranjo aumenta, os riscos diminuem.

A chave para alinhar os parâmetros do sistema de arquivos com o dispositivo RAID é, a princípio, determinar corretamente o tamanho do stripe e do segmento ao criar o sistema de arquivos com o comando mkfs. No caso do sistema XFS, ao se criar o sistema de arquivos diretamente no dispositivo RAID, o comando mkfs.xfs se encarrega de tudo. Porém, se você usa LVM no RAID e cria sobre ele um sistema de arquivos XFS em um volume lógico, o mkfs.xfs não alinha os parâmetros para o melhor desempenho.

O tamanho padrão do segmento de 64 KB foi usado em uma configuração de RAID 5 com quatro discos. Criar o RAID por meio dos links em /dev/disk/by‑id/ diminui o risco de acidentalmente acessar

o disco errado. Para este artigo, foram feitos dois testes com Ext3 e XFS: um com o comando mkfs e outro na tentativa de fazer o sistema de arquivos se alinhar sozinho ao RAID. Os quatro sistemas de arqui-

Faça acontecer

O comando abaixo cria um dispositivo RAID. cd /dev/disk/by-id mdadm --create --auto=md \ --verbose --chunk=64 \ --level=5 \ --raid-devices=4 \ /dev/md/md-alignment-test \ ata-SAMSUNG_50LJ_SMYxx-part4 \ ata-SAMSUNG_50LJ_SMUxx-part4 \ ata-SAMSUNG_50LJ_SMUxx-part4 \ ata-SAMSUNG_64LJ_SMUxx-part7

Figura 1 Resultados do Bonnie++ para leitura e escrita por blocos. Note a grande diferença de desempenho no Ext3 em razão apenas das mudanças no mkfs.ext3.

33

Linux Magazine #60 | Novembro de 2009

© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).


CAPA  | Raid

Figura 2 Resultados do Bonnie++ para reescrita e leitura por caracteres. Repare o aumento de MB/s no desempenho de reescrita em virtude do correto alinhamento do Ext3.

vos são Ext3, ext3 alinhado ao RAID (ext3align), XFS (xfs) e XFS alinhado ao RAID (xfsalign), todos criados com e sem alinhamentos explícitos dos tamanhos de stripe e segmento. A única opção usada com o mkfs.

xfs no sistema de arquivos XFS foi lazy‑count=1, que alivia a contenção

no superbloco do sistema de arquivos em situações de uso extremo e é altamente recomendada como opção padrão.

O comando mkfs que alinha o sistema de arquivos Ext3 é mostrado a seguir. Foram usadas variáveis para ilustrar o que cada cálculo está fazendo. O parâmetro stride mostra ao Ext3 o tamanho de cada segmento

Figura 3 Desempenho de leitura do IOzone para o sistema de arquivos Ext3.

34

http://www.linuxmagazine.com.br

© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).


Raid | CAPA

Figura 4 Desempenho de leitura do IOzone para o sistema de arquivos Ext3 alinhado.

RAID em blocos de 4 KB do disco. O parâmetro stripe-width mostra a largura de uma única faixa em um bloco de dados, o qual se torna efetivamente três vezes o valor de stride na configuração de quatro discos em RAID 5.

O comando para criar o sistema de arquivos XFS alinhado é apresentado no código a seguir export RAID_DEVICE=/dev/md/ md-alignment-test export CHUNK_SZ_KB=64

export PARITY_DRIVE_COUNT=1 export NON_PARITY_DRIVE_COUNT=3 mkfs.ext3 -E stripe-width=$((NON_ PARITY_DRIVE_COUNT * CHINK_SZ_ KM/4)),stride=$((CHUNK_SZ_KB/4)) $RAID_DEVICE

Figura 5 Resultados do Bonnie++ para leitura e escrita por blocos com e sem LVM.

35

Linux Magazine #60 | Novembro de 2009

© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).


CAPA  | Raid

Figura 6 Resultados do Bonnie++ para reescrita por blocos com e sem LVM. Mais uma vez, o desempenho do LVM deixa a desejar em comparação com o sistema de arquivos criado no dispositivo RAID.

Note que os parâmetros sunit e swidth são muito semelhantes a stride e stripe-width no caso do Ext3, mesmo que, no XFS, sejam especificados os valores como segmentos de 512 bytes em vez de 4 KB como no Ext3.

Começando

Os benchmarks foram feitos com os já tradicionais Bonnie++ e IOzone. O Bonnie++ realiza benchmarks por meio da leitura e escrita de caracteres e blocos, assim como a reescrita, a busca

e as operações sobre metadados, como criação e apagamento de arquivos. O IOzone efetua vários testes com diferentes tamanhos de dados de leitura e escrita e diferentes tamanhos de arquivos; em seguida, mostra o

Figura 7 Diferença de desempenho do IOzone com leitura aleatória no Ext3 com e sem alinhamento no LVM.

36

http://www.linuxmagazine.com.br

© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).


Raid | CAPA

Detalhes Este artigo se concentra nos sistemas de arquivos XFS e Ext3. O autor não possui qualquer vínculo com eles e usa ambos em diferentes circunstâncias. Nos testes realizados para este artigo, foi usado RAID 5 composto por quatro discos rígidos de 500 GB, mais especificamente três Samsung HD501LJ de 500 GB e um Samsung HD642JJ de 640 GB. Uma das maravilhas do RAID via software no Linux é a possibilidade de usar discos de tamanhos diferentes, contanto que a partição no disco maior seja igual à do disco menor. O RAID usou 343.525.896 segmentos em cada disco, resultando em um sistema de arquivos um pouco menor que 1 TB ao ser criado no RAID. O teste foi feito com um Intel Core 2 Quad Q6600 sobre uma placa-mãe Intel P35.

efeito do tamanho do arquivo e dos tamanhos de escrita e leitura sobre o desempenho em forma de grá­ficos tridimensionais. Com relação aos resultados do Bonnie++, a figura 1 mostra o desempenho de leitura e escrita em blocos. Note que, como o mkfs.xfs detecta corretamente a configuração do RAID quando o sistema de arquivos é criado diretamente no dispositivo, os valores de desempenho de xfs e xfsalign são iguais. Portanto, somente xfs é mostrado.

O kernel Linux permite que os sistemas de arquivos usem barreiras para proteger uma sequência de comandos de escrita da outra. Quando o sistema de arquivos solicita uma barreira, o kernel garante que tudo o que o sistema escreveu até aquele ponto estará fisicamente no disco. Essa operação é lenta em virtude de complicações como descarregar o cache do disco e ações semelhantes. Por padrão, o Ext4 e o XFS usam barreiras sempre que possível. Como o Ext3 não tem essa característica, foram desabilitadas as barreiras do XFS para que o teste fosse mais fiel. Outro motivo para desabilitar as barreiras é que o LVM não as suporta. Portanto, foi preciso adotar essa medida para comparar precisamente o desempenho do XFS com e sem LVM.

Como se pode ver, a configuração adequada de parâmetros no Ext3 alinhado (veja os valores de ext3align na figura 1) possibilita uma enorme melhora no desempenho. Certamente, uma performance de escrita 10 MB/s mais rápida é altamente desejável. O desempenho de reescrita do Bonnie++ é uma medida importante quando se deseja usar um servidor de banco de dados no sistema de arquivos. Apesar de muitas operações do desktop – como salvar um arquivo – substituírem o arquivo

inteiro em uma operação, os bancos de dados normalmente sobrescrevem informações ao atualizar registros. A figura 2 mostra o desempenho de reescrita. Apesar de os resultados de I/O de caracteres serem menos importantes que o de I/O de blocos, o ganho de desempenho na reescrita de blocos ao se alinhar corretamente o sistema de arquivos Ext3 chega a 2 MB/s, ou 6% a mais de desempenho de graça. Embora os resultados do IOzone para o Ext3 e o Ext3 alinhado sejam muito semelhantes, é preciso relatar

Figura 8 Diferença de desempenho do IOzone com escrita aleatória no Ext3 com e sem alinhamento no LVM.

37

Linux Magazine #60 | Novembro de 2009

© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).


CAPA  | Raid

Indo mais longe O kernel Linux suporta o sistema de arquivos Ext4 desde a versão 2.6.28. A melhora na performance sobre o Ext3 inclui o acesso a blocos com 48 bits. Uma desvantagem de se especificar o tamanho do stripe com o mkfs é o que acontece ao se adicionar um disco extra a um RAID já montado. De uma hora para a outra, o seu RAID 5 tem quatro discos de dados em vez de três e o alinhamento da faixa usado pelo sistema de arquivos está incorreto. Felizmente, o Ext4 tem uma opção de montagem que permite determinar a faixa na hora da montagem para que, ao acrescentar mais um disco a um RAID ou estender um volume LVM, seja possível informar ao Ext4 o que foi feito para que o sistema aperfeiçoe futuras atividades com as configurações modificadas. Infelizmente, especificar as opções sunit e swidth ao montar um sistema de arquivos XFS funciona apenas quando ele é criado diretamente em um dispositivo RAID. Portanto, se você usa LVM no seu RAID e adiciona um disco, não será possível mostrar esta mudança ao XFS na hora da montagem. Isso mostra mais um caso em que o XFS não se comporta bem com LVM. Ao usar o LVM, os metadados são armazenados em várias camadas abstratas. Por exemplo, pvcreate possui várias opções para configurar o tamanho dos metadados e o alinhamento de dados. Até agora, não há ajustes do pvcreate capazes de oferecer o mesmo efeito que o ajuste dos parâmetros de stripe do sistema de arquivos, mas essa questão pode mudar no futuro.

algumas anomalias. O desempenho de leitura é mostrado nas figuras 3 e 4. Note que o Ext3 alinhado é melhor que o Ext3 na leitura de segmentos de arquivos pequenos. Estranhamente, seu desempenho cai com arquivos de 16 MB.

E com LVM?

Ao criar um sistema de arquivos XFS diretamente em um dispositivo RAID via software, o mkfs.xfs é capaz de calcular os tamanhos do segmento e stripe de forma a otimizar a configuração do XFS. Infelizmente, no

caso do RAID por hardware ou do LVM, cabe ao administrador a criação otimizada do sistema de arquivos. Nos testes deste artigo, foi criado um sistema XFS alinhado manualmente e um sistema de arquivos XFS com parâmetros padrão para verificar diferenças de desempenho, caso existam. Muitos administradores usam LVM no dispositivo RAID para melhorar o gerenciamento e a flexibilidade do sistema. A possibilidade de armazenar vários sistemas de arquivos em um único dispositivo RAID é muito conveniente. Foram testadas novamente as configurações do Ext3 para conferir se o uso da camada extra do LVM comprometeria o desempenho. A figura 5 mostra o desempenho do Ext3 e do XFS no mesmo dispositivo RAID. Na configuração “crua”, chamada de raw no gráfico, o sistema de arquivos é criado diretamente no dispositivo RAID. Na configuração “lvm”, foi criado um volume físico LVM no dispositivo RAID e um volume lógico LVM no volume físico LVM. O sistema de arquivos foi criado no volume lógico LVM.

Figura 9 Diferença de desempenho do IOzone com leitura aleatória no XFS com e sem alinhamento no LVM.

38

http://www.linuxmagazine.com.br

© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).


Raid | CAPA

Note que o ganho de desempenho de leitura resultante do alinhamento do sistema de arquivos Ext3 desaparece e que a performance de leitura entre todos os sistemas de arquivos é idêntica. Alinhar o stripe no sistema XFS piorou o desempenho de escrita em comparação com a alternativa sem alinhamento. O próprio LVM parece limitar o desempenho da leitura de blocos, portanto, o alinhamento do sistema de arquivos não gera qualquer diferença. Entretanto, a leitura de blocos no XFS melhorou muito com o uso do LVM. O XFS tenta atrasar ao máximo a escrita de arquivos. Esse atraso pode ser a razão pela qual o XFS é mais rápido na escrita com o uso do LVM – se o LVM mantiver um cache próprio, talvez o sistema de arquivos possa enviar os dados do cache para o disco de forma mais eficiente em grandes segmentos. Note que a performance de leitura diminui significativamente com o uso do LVM. A figura 6 mostra a reescrita por blocos no Bonnie++. Nela, podemos ver que o ganho, ao se alinhar corretamente o sistema de arquivos Ext3, foi mantido até certo ponto, pois o Ext3 alinhado se saiu quase 1 MB/s mais rápido do que o Ext3 não alinhado sobre LVM. Contudo, as diferenças no alinhamento correto do Ext3 são menores ao se usar LVM: 1 MB/s no LVM comparado aos cerca de 2,5 MB/s no RAID simples. Apesar de a diferença de um megabyte por segundo não parecer tão importante, na pior das hipóteses isso significa que o Ext3 alinhado no RAID “cru” é cerca de 15% mais rápido do que o Ext3 não alinhado no LVM. Se considerarmos que tudo isso é executado na mesma máquina e no mesmo disco, os 15% de ganho de desempenho são muito bem vindos. Comparar gráficos tridimensionais pode ser difícil, então optamos por gerar os gráficos das diferenças entre os dados alinhados e não alinhados no lugar dos dados originais.

Na figura 7, vemos o desempenho de leitura aleatória no LVM com IOzone (Ext3 alinhado – Ext3). Ele não é completamente favorável ao sistema de arquivos Ext3 alinhado, mas podemos ver picos significativos de desempenho em que o sistema de arquivos Ext3 alinhado é muito mais rápido com arquivos cujos tamanhos variam entre 256 e 4.096 KB (à esquerda na figura). A figura 8 mostra a diferença de desempenho de escrita aleatória no Ext3 com e sem alinhamento no LVM. Note que os picos e vales estão nos mesmos lugares, apesar de os extremos não serem tão pronunciados. As quedas de desempenho no Ext3 alinhado foram quase eliminadas. A figura 9 mostra o XFS com e sem alinhamento ao ser criado no LVM para leitura aleatória. Note que o gráfico é menos congestionado no XFS em comparação com o Ext3 (mostrado na figura 7). A leitura aleatória de pequenos arquivos é muito mais rápida em sistemas de arquivos XFS corretamente alinhados, como mostram os picos da figura 9. Para escritas menores em arquivos de 4 MB, um sistema XFS alinhado é levemente mais lento que o XFS criado com os parâmetros padrão do mkfs.xfs (não há gráfico para essa diferença). O XFS alinhado é mais rápido na escrita em arquivos entre 16 e 256 MB.

Conclusões

Como mostra este estudo, é possível obter entre 10 e 20% de ganho de desempenho ao alinhar seu sistema de arquivos Ext3 ao segmento do RAID e ao tamanho do stripe. Apesar de as diferenças não serem significativas com o XFS, seu correto alinhamento pode melhorar o desempenho ao criar ou deletar um arquivo. Em resumo: Ao usar um sistema de arquivos Ext3 ou Ext4, use sempre -E stripe‑width=x,stride=y para informar a configuração do RAID; Ao usar o XFS diretamente no dispositivo RAID, o sistema deve detectar a configuração do RAID subjacente de forma automática; Ao usar XFS em uma partição LVM criada sobre o RAID, use ‑d sunit=x,swidth=y com o mkfs. xfs para informar sua configuração de RAID; Ao usar outro sistema de arquivos, certifique-se de que ele é capaz de detectar sua configuração de RAID – especificamente, verifique os tamanhos do stripe e do segmento – ao usar o mkfs. Os verdadeiros benefícios dessas medidas variam dependendo da configuração em questão, mas, independentemente dos números, alinhar os parâmetros do sistema de arquivos ao sistema RAID é uma boa estratégia para melhorar o desempenho, principalmente com sistemas Ext3 e Ext4.  n

Mais informações [1] RAID em Linux no OSDL: http://linux‑raid.osdl.org/index.php/Linux_Raid [2] David A. Patterson, Garth Gibson e Randy H. Katz, “A Case For Redundant Arrays of Inexpensive Disks (RAID)”: http://www‑2.cs.cmu.edu/~garth/ RAIDpaper/Patterson88.pdf

Gostou do artigo? Queremos ouvir sua opinião. Fale conosco em cartas@linuxmagazine.com.br Este artigo no nosso site: http://lnm.com.br/article/3108

39

Linux Magazine #60 | Novembro de 2009

© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).


Acelere seu servidor web com cache distribuído pelo memcached

CAPA

Cache mais rápido O prático Memcached pode reduzir em até 90% a carga de um servidor de banco de dados web. por Tim Schürmann

B

rad Fitzpatrick estava frustrado: a plataforma de blog LiveJournal.com, fundada e mantida principalmente por ele, tinha como base mais de 70 máquinas poderosas, mas seu desempenho deixava muito a desejar. Nem mesmo o cache de 8 GB no servidor de banco de dados parecia ajudar. Algo precisava ser feito, e rapidamente. As soluções típicas num cenário como este são gerar conteúdo previamente ou manter no cache páginas que já tenham sido servidas. Logicamente, essas soluções exigem armazenagem redundante dos elementos que ocorrem em múltiplas páginas – o melhor caminho para encher o cache de entulho. Se o sistema ficar sem memória RAM, tudo pode ser transferido para a swap em disco, naturalmente, mas isso seria bem demorado. Na opinião de Fitzpatrick, a solução precisava ser um novo tipo de

sistema de cache – algo que armazenasse separadamente os objetos de uma página, evitando assim o lento acesso ao disco. Assim, ele logo desistiu de procurar uma solução e decidiu projetar seu próprio cache. Os servidores que ele usaria para essa tarefa tinham memória RAM suficiente livre. Inclusive, todas as máquinas precisariam acessar o cache simultaneamente e o conteúdo modificado deveria estar disponível para qualquer usuário, sem atrasos. Estas considerações finalmente o levaram ao memcached, que reduziu a carga do servidor de banco de dados do LiveJournal em surpreendentes 90% e acelerou a entrega das páginas aos usuários, melhorando o uso dos recursos das máquinas individuais. O memcached [1] é um sistema de cache distribuído de alta performance. Foi projetado para ser útil a qualquer aplicação, mas é mais usado como cache dos lentos acessos a

bancos de dados em aplicações web dinâmicas. Hoje, muitos sites importantes, como Slashdot, Fotolog.com e o próprio LiveJournal.com, contam com o memcached para melhorar seu desempenho. Desde o princípio de seu desenvolvimento, o LiveJournal.com foi comprado e vendido diversas vezes, e o memcached, disponível sob uma licença BSD de código aberto, é responsabilidade da Danga Interactive.

Roupa nova

Configurar um cache distribuído com o memcached é fácil. Basta iniciar o daemon em todos os servidores que possuam algum espaço em RAM para ser compartilhado. Se necessário, é possível disponibilizar múltiplas áreas de cache em uma única máquina. Esta opção é particularmente útil em sistemas operacionais que limitam o acesso dos processos a uma parcela

40

http://www.linuxmagazine.com.br

© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).


Memcached | CAPA

da memória total disponíDaemon 1 vel. Nesses casos, é preciso iniciar vários daemons, cada um obtendo toda a memória disponibilizada Daemon 2 pelo sistema operacional, para assim usar o máximo Aplicação Biblioteca cliente de memória para o cache. Daemon 3 Uma biblioteca cliente especial age como interface com o servidor. Ela aceita os dados e os armazena em um dos servidores existenDaemon n tes usando palavras-chave selecionáveis (figura 1). A biblioteca cliente aplica um Figura 1 A biblioteca cliente aceita os dados do aplicativo e seleciona um daemon, que se encarregará de armazenar os dados. sofisticado método matemático para escolher qual dos daemons do memcached receberá seu casaco de volta no fim do espe- # memcached -d -m 2048 \ os dados que serão, então, postos táculo e o aplicativo seria forçado a -l 192.168.1.111 -p 11211 \ em sua RAM. conversar novamente com o banco -u USERNAME Podemos comparar esse proce- de dados. O sistema do memcached dimento com a chapelaria de um não é redundante, mas não há necesEste comando inicia o memcached teatro: você entrega seu casaco ao sidade de fazer isso, pois, no fim das em modo daemon (-d), instruindoatendente que está atrás do balcão contas, ele se resume a um cache e o a ceder 2048 MB de RAM desta e recebe um número. O funcionário sua missão é armazenar informações máquina para o cache distribuído pega seu casaco, acha o lugar certo temporariamente e entregá-las o mais (-m 2048). O daemon escuta as soe o pendura no cabide com o seu rapidamente possível. Seguindo esta licitações do cliente na porta 11211 número. No fim do espetáculo, todo filosofia, é impossível iterar por todos no endereço IP 192.168.1.111. Além o processo é repetido de trás para os elementos do cache ou despejar disso, ele precisa saber qual conta frente: você informa ao atendente todo o seu conteúdo no disco. usar, mas é possível omitir a opção – ou melhor, à biblioteca cliente – -u para rodá-lo sob a conta do usuáo seu número, a biblioteca vai até rio logado. o daemon correspondente, pega os A Danga Interactive disponibiliza Os especialistas em segurança dados no cabide e os entrega ao seu o memcached daemon em seu site devem estar furiosos: por definição, aplicativo. para download [1]. As únicas depen- qualquer usuário de um sistema LiEsse modelo lembra muito os ban- dências do programa são a biblioteca nux pode rodar seu próprio daemon cos de dados e sistemas de arquivos Libevent e seu pacote de desenvolvi- do memcached. Para evitar isso, são distribuídos. Mas, quando se traba- mento correspondente. O daemon necessários alguns passos, como relha com o memcached, é necessário pode ser facilmente compilado e tirar privilégios de acesso – apenas lembrar que ele é apenas um cache. instalado com as três etapas padrão: uma das várias questões de seguranEm outras palavras, o atendente da ça evitadas pelo memcached (mais chapelaria não é confiável e tem di- $ ./configure tarde falarei sobre isso). ficuldade de se lembrar das coisas. $ make Se não houver espaço suficiente para # sudo make install novos elementos, um dos daemons Após alinhar todos os daemons, escodescartará os dados menos acessaAlgumas das principais distribui- lha uma das várias bibliotecas clientes dos para liberar espaço. O mesmo ções já oferecem pacotes pré-compi- que agora estão disponíveis para váacontece quando um dos daemons lados, mas geralmente tratam-se de rias linguagens de programação. Em falha – neste caso, qualquer informa- versões já obsoletas. Após terminar alguns casos, é até possível escolher ção armazenada por ele desaparece. a instalação, o seguinte comando – os pacotes [2]. Se você preferir criar Em outras palavras, você não teria ou um similar – inicia o daemon: seu próprio cliente, encontrará uma

Na escuta

Escolha seus parceiros

41

Linux Magazine #60 | Novembro de 2009

© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).


CAPA  | Memcached

descrição detalhada do protocolo na wiki do memcached no site do projeto no Google Code [3]. O memcached é usado para acelerar aplicativos web e, por isso, muitas pessoas optam por um cliente em PHP. Para mais informações sobre o uso do memcached com C ou C++, veja o quadro 1. A técnica básica é a mesma para qualquer linguagem: após localizar e instalar a biblioteca cliente correta, o desenvolvedor precisa incluí-la no seu próprio programa. A linha seguinte cria um novo objeto Memcached no PHP com o cliente memcached do repositório PECL, incluído no pacote PHP5–memcached do Ubuntu: $memcached = new Memcached;

Depois disso, uma chamada de função informa à biblioteca em quais servidores os daemons do memcached estão escutando:

$memcache->connect (‘192.168.2.1’, 11211) or die ( ‘Sem conexao com o servidor’);

Daqui para frente, é possível usar mais chamadas de funções para preencher o cache com seu próprio conteúdo: $memcache->set( ‘key’, ‘test’, false, 10);

Esta função grava a string test no cache, com key como chave, mantendo a entrada por dez segundos. O tamanho das chaves é restrito a 250 caracteres – restrição imposta pelo daemon do memcached. Para recuperar os dados, é preciso passar a chave para a biblioteca cliente e aceitar os resultados recebidos: $result = memcache->get(‘key’);

A listagem 1 mostra o script PHP completo.

Listagem 1: Busca básica no cache em PHP 01 <?php 02 $memcache = new Memcache; 03 $memcache‑>connect(‘localhost’, 11211) or die (‘No connection to memcached server’); 04 05 $memcache‑>set(‘key’, ‘datum’, false, 10); 06 07 $result = $memcache‑>get(‘key’); 08 09 var_dump($result); 10 ?>

Quadro 1: Libmembached Até agora, a biblioteca cliente mais popular do memcached para aplicativos em C e C++ é a Libmemcached [4] – que não deve ser confundida com sua antecessora já descontinuada Libmemcache (sem o “d” no final). Mesmo que você não seja um programador C e C++, vale a pena dar uma olhada no pacote. Ele contém ferramentas de diagnóstico muito interessantes para linha de comando. Por exemplo, o memcat recupera os dados do cache para uma chave e devolve o resultado no console; o memsat consulta o status atual de um ou vários servidores. Para montar a Libmemcached, são necessários os compiladores C e C++ no sistema; fora isso, bastam os comandos normais: ./configure; make; make install. A listagem 2 mostra uma busca básica no cache.

A opção de escrever múltiplos conjuntos de dados no cache enquanto eles são recuperados é interessante. A biblioteca cliente paraleliza automaticamente sua requisição aos servidores do memcached. Infelizmente, algumas bibliotecas clientes não possuem essa função; este exemplo em PHP só é suportado pelo cliente memcached (com um “d” no fim): $multiplo = array( ‘chave1’ => ‘valor1’, ‘chave2’ => ‘valor2’, ‘chave3’ => ‘valor3’ ); $memcache->setMulti($multiplo);

Profiling

Nas aplicações web, sempre há a questão de saber a melhor forma de empregar o memcached. O profiling responde: buscas em bancos de dados que sobrecarregam o sistema são melhor roteados via cache. As listagens 3 e 4 mostram como isso funciona na vida real: antes de buscar no banco de dados, o código confere se a informação desejada está disponível no memcached. Caso não esteja lá, o banco de dados é acessado. Para evitar uma nova busca, os resultados são armazenados no cache. Para mantê-lo atualizado, a informação de cada operação de escrita também vai para o cache. Na listagem 4, as chaves são feitas ao se combinar a palavra user com o ID de sua conta – esta é uma estratégia comum para gerar chaves únicas. Essa técnica facilita a integração do memcached aos seus aplicativos, mas é necessário tomar cuidado com as armadilhas, que só se tornam óbvias quando olhamos “sob o capô”.

Dicionário

Os programadores experientes já devem ter notado que o memcached usa internamente um dicionário; algumas linguagens de programação

42

http://www.linuxmagazine.com.br

© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).


Memcached | CAPA

chamam isso de array associativo, vetor associativo ou hash. Como em um dicionário comum, essa estrutura de dados armazena cada valor sob uma chave (palavra) específica. O sistema memcached implementa este dicionário na forma de duas tabelas hash subsequentes [5]. Primeiramente, a biblioteca cliente aceita a chave e efetua uma sofisticada função matemática para criar um hash. O número informa à biblioteca com qual dos daemons do memcached ela precisa conversar. Após receber os dados, o daemon usa sua própria função hash para atribuir um local da memória a fim de armazenar os dados. As funções matemáticas são desenvolvidas para retornar sempre o mesmo número exato para uma chave específica. Este processo garante tempos de busca e resposta extremamente curtos. Para recuperar informações do cache, o memcached precisa apenas efetuar as duas funções matemáticas. A transmissão de dados pela rede é responsável pela maior parte do tempo de resposta. Todas as máquinas envolvidas precisam ter as mesmas versões das mesmas bibliotecas, pois é a biblioteca cliente quem decide quais daemons armazenarão quais dados. Uma mistura de versões pode fazer com que os clientes utilizem funções hash diferentes, armazenando assim a mesma informação em diferentes servidores, o que pode gerar inconsistências e desorganização dos dados. Se você usar a biblioteca Libmemcached de C e C++, é bom prestar bastante atenção a isso, pois ela oferece várias funções hash. Além disso, cada cliente usa um método de serialização diferente. Por exemplo, o Java usa o Hibernate, enquanto que o PHP usa o serialize. Em outras palavras, se, além de strings, você também estiver armazenando objetos no cache, o uso compartilhado baseado em diferentes linguagens é impossível – mesmo que todos os

clientes usem a mesma função de hash. As bibliotecas também têm permissão de escolher seus métodos de compressão.

Perda de memória

O cache lida com solicitações paralelas sem perder velocidade. No exemplo da chapelaria, vários atendentes podem andar pelos corredores ao mesmo tempo, pendurando casacos ou devolvendo-os aos donos,

sem que estes tenham que esperar na fila. O mesmo princípio se aplica ao memcached. Cada cliente determina com qual daemon conversará e, num mundo ideal, cada atendente estaria encarregado de um único corredor: logicamente, nada impede que dois atendentes entrem no mesmo corredor. Se você recupera dados do cache, os altera e os devolve, não há garantias de que eles não tenham sido modificados por outra

Listagem 2: Busca básica no cache 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37

#include <memcached.h> #include <string.h> #include <stdio.h> main() { /* cria a struct memcached_st (que contém todas as informações básicas para os servidores memcached) */ memcached_st *mcd = memcached_create(NULL); /* adiciona um servidor: */ memcached_server_add(mcd, “127.0.0.1”, 11211); /* Envia o objeto para o cache: */

char *key = “chave”; size_t keylength = strlen(key); char *value = “informacao”; size_t valuelength = strlen(value); time_t expiration = 0; uint32_t flags = 0;

memcached_add(mcd, key, keylength, value, valuelength, expiration,flags); /* Obtem objeto do cache: */ memcached_return errovariable; char *result = memcached_get(mcd, key, keylength,&valuelength, &flags, &errovariable); /* Imprime o objeto: */ printf(“Cache: %s\n”, result); /* Limpa: */ memcached_free(mcd); }

Listagem 3: Busca no banco de dados sem memcached... 01 function get_user($userid) { 02 $result = mysql_query (“SELECT * FROM users WHERE userid = ‘%s’”, $userid); 03 return $result; 04 }

43

Linux Magazine #60 | Novembro de 2009

© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).


CAPA  | Memcached

Listagem 4: ...e após a introdução do memcached 01 $memcache = new Memcache; 02 $memcache‑>connect(‘servername’, 11211) or die (‘No connection to memcached server’); 03 ... 04 function get_user($userid) { 05 $result = memcache‑>get(“user” + $userid); 06 if(!$result) { 07 $result = mysql_query(“SELECT * FROM users WHERE userid = ‘%s’”, $userid); 08 memcache‑>add(“user” + $userid, $result); 09 } 10 return $result; 11 }

instância neste meio tempo. Os comandos gets e cas introduzidos na versão 1.2.5 do memcached oferecem a solução: os usuários utilizam o comando gets para recuperar dados e recebem um identificador único, o qual pode ser devolvido ao servidor juntamente com os dados modificados pelo comando cas. O daemon confere então o ID para verificar se os dados foram alterados desde a última busca e sobrescreve-os usando o novo valor, se for o caso. O modo como o memcached lida com falhas do servidor também depende do cliente. O padrão é simplesmente agir como se a informação solicitada não se encontrasse no cache. Por isso, é uma boa ideia monitorar permanentemente os servidores de cache. Graças ao design modular do memcached, cada daemon pode ser facilmente substituído. Para isso, basta apagar o registro anterior dos IPs e registrar os novos endereços IP dos clientes. Mas note que, neste caso, algumas bibliotecas acabarão considerando todo o cache inválido.

Queijo suíço

dados em múltiplas chaves ou usar um sistema de caching diferente.

Anarquia

O memcached não se preocupa com segurança. O daemon não necessita de autenticação dos clientes. Qualquer um que acesse a rede também pode acessar o cache sem reservas. Um invasor que saiba os nomes dos usuários por trás das chaves pode sistematicamente solicitar esses nomes aos daemons. Chaves criptografadas podem garantir uma proteção rudimentar. Para gerá-las, é necessário

aplicar um hash aos nomes dos usuários no escopo do aplicativo e então usar os resultados como chaves. Todos os dados da conta têm que ser deletados do cache após o uso. Além disso, é bom definir uma duração para os dados e incluir mais camadas de segurança, começando por um firewall para proteger o servidor de ataques externos.

Conclusões

O memcached é fácil de configurar e de integrar a aplicativos existentes. Porém, essa conveniência implica diversos problemas de vulnerabilidade. Se você conseguir resolver essas questões, terá um cache distribuído extremamente rápido que não o deixará na mão – mesmo em condições extremas. Esse sistema prova seu valor diariamente no LiveJournal e no Slashdot. Ao mesmo tempo, é extremamente frugal. A capacidade da CPU não é comprometida, pois o memcached praticamente gera apenas hashes. Como resultado, é possível usar até computadores mais velhos como provedores de cache.  n

Mais informações [1] Memcached: http://www.danga.com/memcached [2] Bibliotecas clientes: http://code.google.com/p/memcached/wiki/Clients [3] Protocolo do memcached: http://code.google.com/p/memcached/wiki/MemcacheBinaryProtocol [4] Libmemcached: http://tangent.org/552/libmemcached.html [5] Funcionamento de tabelas hash: http://pt.wikipedia.org/wiki/Tabela_de_dispers%C3%A3o [6] Funcionamento de alocadores slab (em inglês): http://en.wikipedia.org/wiki/Slab_allocator

Para prevenir a fragmentação da RAM, o daemon usa um alocador slab [6] para gerenciar a memória. Esse método reserva e libera pequenos pedaços da memória. No caso do memcached, esses pedaços são de 1 MB – o daemon não aceita nada maior que isso. Para armazenar mais, é preciso distribuir os

Gostou do artigo? Queremos ouvir sua opinião. Fale conosco em cartas@linuxmagazine.com.br Este artigo no nosso site: http://lnm.com.br/article/3114

44

http://www.linuxmagazine.com.br

© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).


Instalação, configuração e uso do Bacula

CAPA

Backup profissional

Stephen Gibson – www.sxc.hu

Gravar arquivos de um local em outro é muito fácil, mas só o Bacula é capaz de fazer backups em escala industrial sem perder a praticidade necessária para os modernos administradores. por Gerd Müller

A

segurança de dados, de PDAs a grandes mainframes, incluindo versões futuras dos softwares e das mídias de armazenamento, é o objetivo do projeto de backups Bacula [1] desde o início. Desenvolvedor-líder do projeto desde 2000, Kern Sibbald optou pelo modelo do Código Aberto por acreditar ser essa a melhor forma de se obter um software seguro e competente na geração e recuperação de backups. Atualmente, o Bacula já é uma alternativa às custosas soluções proprietárias.

Componentes

O Bacula é composto por várias partes, sendo as mais importantes: Catálogo (banco de dados SQL)

Director (bacula-dir) Armazenamento (bacula-sd) Arquivos (bacula-fd) Console

Estes componentes permitem dividir o servidor em múltiplos “pedaços”, de forma a facilitar instalações distribuídas. À exceção do director e do catálogo, os demais componentes podem ser utilizados somente quando necessários. A comunicação entre as peças é feita por meio de portas definidas pelo IANA (figura 1), o que facilita a instalação do Bacula através de firewalls. Evidentemente, o software também permite a criptografia de todas as conexões usadas. Cada componente se autentica por meio

de uma senha, conhecida pelos dois lados da autenticação.

Memória do Bacula

O catálogo é a memória principal do Bacula. Nele ficam os dados mais importantes para a operação do software, gerenciados por um banco de dados SQL. Atualmente, os bancos de dados suportados são MySQL, PostgreSQL e, para exigências pouco sofisticadas, SQLite. O back-end do Bacula é um de seus pontos fortes. Por isso, existem certos scripts livres para permitir seu monitoramento por soluções específicas. No caso do Nagios, o Bacula até já traz um script por padrão. Os scripts costumam ser usados para informar o sucesso do último backup. Com isso, o adminis45

Linux Magazine #60 | Novembro de 2009

© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).


CAPA  | Bacula

trador só precisa intervir na solução de backup quando for necessário.

Centro de controle

O director é o centro de controle do sistema de backup. Ele coordena os componentes, analisa os dados e os guarda no catálogo. Além disso, ele gerencia os backups de acordo com as configurações determinadas pelo administrador. Com relação à segurança, não há diferença entre o Bacula e as demais soluções proprietárias dos mais variados tamanhos. O Bacula é capaz de fazer backups das formas mais comuns: completo, diferencial e incremental. Um backup diferencial engloba todos os dados alterados desde o último backup completo. O backup incremental, por sua vez, grava somente os arquivos que tenham sido alterados após o último backup. Para garantir a confiabilidade dos backups, o Bacula sempre verifica se estão presentes o último backup completo e os incrementais posteriores a ele. Em caso negativo, o programa realiza automaticamente um backup incremental com base no último completo. O catálogo documenta as sequências de backups e os arquivos incluídos. É possível definir quais arquivos salvar por meio dos file sets e agendar as tarefas de backup no servidor.

desde simples diretórios até discos rígidos inteiros, CDs, DVDs e fitas em grandes bibliotecas (incluindo leitores de código de barra), para os quais utiliza o projeto MTX [2]. O formato do backup é idêntico em todos os casos e – embora proprietário – é muito flexível e bem documentado. No Bacula, o tamanho dos backups não está limitado ao do volume onde ele se localiza. Da mesma Figura 1 Funcionamento dos componentes do Bacula. Todos os componentes se forma, um mesmo volucomunicam com o director, o sistema me pode conter dados de é operado por meio do console e múltiplos backups. Com todas as tarefas de leitura e escrita isso, não é preciso acressão realizadas pelos daemons de centar novos volumes o arquivos e armazenamento. tempo todo, já que o programa permite aproveitar ao máximo o espaço disponível. Se um backup for apagado e deixar O daemon de arquivos (file-daemon) de ocupar um determinado es- é o agente usado pelo Bacula para paço, esse mesmo espaço poderá acessar os dados no sistema a ser lido. ser ocupado logo em seguida. Os Ele lê os dados do backup e grava-os volumes podem ser agrupados nos na mídia do servidor de backup. Ele chamados pools para permitir uma registra no director todas as tarefas de melhor organização dos backups e backup e restauração, assim como também a reserva de espaço, caso seus respectivos arquivos, volumes e necessário. Os pools associam vo- pools. O director, por sua vez, armalumes a tarefas de backup. zena essas informações no catálogo.

Agentes

Armazenamento

O componente seguinte é o daemon de armazenamento. Ele fornece acesso do director aos meios (ou volumes) de armazenamento e se encarrega da gravação e da leitura dos dados no momento da restauração destes. Nas tarefas de backup, o daemon de armazenamento recebe os dados diretamente do daemon de arquivos e os repassa ao meio de armazenamento. Para gravar, o Bacula consegue utilizar várias mídias diferentes,

Figura 2 Versão do console do Bacula para sistemas Windows.

46

http://www.linuxmagazine.com.br

© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).


Bacula | CAPA

O daemon de arquivos troca os arquivos diretamente com o daemon de armazenamento. O Bacula suporta vários sistemas no papel de daemon de arquivos, como Unix (Linux, Solaris, FreeBSD, OpenBSD, Mac OS X, Tru64, Irix, AIX, BSDI, HPUX, NetBSD e outros) e também Windows (Windows 98, Me, XP, NT, 2000 e 2003). A restauração de dados de um sistema para outro diferente não é nenhum problema, pois cada uma das tarefas é realizada por um agente específico em cada máquina – e cada agente possui todas as permissões necessárias em seu sistema local. Evidentemente, também é possível gravar e ler compartilhamentos NFS e Samba. Vale a pena mencionar que o Bacula no Windows permite fazer backup de arquivos abertos e interage com os aplicativos para garantir cópias consistentes de bancos de dados. Para isso, o programa utiliza há tempos o serviço Microsoft Volume Shadow Copy Service (VSS), utilizando uma pequena parte do concorrente também livre Amanda. Porém, no Amanda essa função está apenas no planejamento. O Bacula ainda oferece a possibilidade de executar, em cada plataforma, algumas ações antes e após cada atividade de backup. Esse recurso é especialmente útil no caso de bancos de dados, que podem fazer um dump para o disco logo antes de o backup ser realizado, de forma a conservar efetivamente todo o conteúdo do banco.

Console administrativo O último componente do Bacula – o console – é a interface do administrador. Se for desejável controlar manualmente o Bacula, o console administrativo é a ferramenta ideal. Além do Bconsole, baseado em shell, há também um console

Figura 3 O console gráfico do Bacula oferece as mesmas funções do console de texto.

gráfico para Windows e Gnome (figuras 2 e 3). Sua principal diferença para o console gráfico é a organização dos menus. No entanto, todos os consoles oferecem as mesmas – e muito úteis – funções administrativas. O exemplo detalhado a seguir ilustra a instalação do Bacula com base numa configuração mínima com um único servidor que age como catálogo, director e daemon de armazenamento. Além disso, esse mesmo sistema é o alvo do backup, o que significa que é preciso ter ainda o daemon de arquivos. O catálogo utiliza o MySQL.

Instalação

A versão atual do Bacula está disponível no site do projeto [1]. Após descompactá-la, bastam os comandos tradicionais para instalar o servidor de backup:

./configure --with-mysql make make install

Se um determinado servidor precisar apenas dos componentes para gravação ou restauração, o melhor é usar o comando ./configure--enable-client-only. Em seguida, é preciso preparar o catálogo (leia-se banco de dados) no servidor de backup. Há scripts específicos em /etc/bacula/ para realizar essa tarefa: ./create_bacula_database ./make_bacula_tables ./grant_bacula_privileges

Com isso, a instalação já está terminada. Resta apenas criar o link simbólico dos scripts de inicialização bacula-ctl-dir (para o director), bacula-ctl-sd (daemon de arma-

Listagem 1: Configuração do console 01 Director { 02 Name = dir-backup 03 DIRport = 9101 04 address = backup 05 Password = “d87Y2YQsX0PQLyDaUHTg5kVoWmk7io52” 06 }

47

Linux Magazine #60 | Novembro de 2009

© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).


CAPA  | Bacula

Listagem 2: Configurações do daemon de arquivos 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23

Director { Name = dir-backup Password = “suefheKt70tSOz29JUGwSxPZrVrH” } Director { Name = backup-mon Password = “iDD6sy05efsfNsNjZflTkedwMpdJ” Monitor = yes } FileDaemon { Name = backup-fd FDport = 9102 WorkingDirectory = /var/bacula/working Pid Directory = /var/run Maximum Concurrent Jobs = 20 } Messages { Name = Standard director = dir-backup = all, !skipped, !restored }

Listagem 3: Configuração do daemon de armazenamento 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34

Storage { Name = backup-sd SDPort = 9103 WorkingDirectory = “/var/bacula/working” Pid Directory = “/var/run” Maximum Concurrent Jobs = 20 } Director { Name = backup-dir Password = “zLsrudRETNgNMSmyE0ZcNvHgI8yW” } Director { Name = backup-mon Password = “KmAQ2EK0KEeE5j5gXLVLpVvyak/Z” Monitor = yes } Device { Name = FileStorage Media Type = File Archive Device = /tmp LabelMedia = yes; Random Access = Yes; AutomaticMount = yes; RemovableMedia = no; AlwaysOpen = no; } Messages { Name = Standard director = dir-backup- = all }

zenamento) e bacula-ctl-fd (daemon de arquivos) de seu local atual (/etc/bacula/) para o local correto no seu sistema. O Bacula sempre instala o daemon de arquivos no próprio servidor de backup. Ele oferece não apenas para fazer backups nesse servidor, mas também para gravar o catálogo sempre que necessário. Terminada a instalação, podemos proceder aos arquivos de configuração.

Configuração

A configuração dos componentes é feita nos arquivos bacula-dir.conf, bacula-fd.conf, bacula-sd.conf e bconsole. Para o exemplo deste artigo, bastam as configurações padrão desses componentes, o que significa que não precisaremos alterar tais arquivos. O arquivo mais fácil de entender é o do console. Ele controla somente a comunicação com o director (listagem 1). O daemon de arquivos, o único que requer alterações no arquivo de configuração padrão (listagem 2), requer muita atenção no uso profissional. Além da comunicação com o director, é preciso definir quais mensagens de status devem ser transmitidas ao director. O caso do daemon de armazenamento é bastante diferente. Suas opções de configuração são semelhantes às do daemon de arquivos, mas ele dispõe de um script de instalação que resolve os problemas. No nosso exemplo, temos um dispositivo que é montado em /tmp/ (listagem 3) – isto serve para demonstração, mas não para uso em produção. O arquivo bacula-sd.conf contém diversos exemplos para outros casos, como unidades de DVD e fitas, bibliotecas e muito mais. A configuração do director (listagem 4) é um pouco mais complexa. Todos os componentes se encontram novamente aqui e contêm links para seus nomes. Além disso, ele contém

48

http://www.linuxmagazine.com.br

© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).


Bacula | CAPA

as definições de tarefas de backup, agendamentos, conjuntos de arquivos e pools. Todos os componentes do Bacula já podem ser iniciados neste momento. Se a instalação e a configuração tiverem sido feitas corretamente, o administrador pode abrir o console com o comando bconsole. Nele, o comando status all oferece um panorama do status de todos os componentes. Se o teste tiver sido realizado com sucesso, já será possível realizar o primeiro backup.

Primeiro backup

Para iniciar o primeiro backup, basta usar o comando run no console administrativo, selecionando em seguida o servidor a ser lido para fazer o backup. No nosso exemplo, trata-se da máquina cliente1. Nesse momento, o console exibe as configurações dessa tarefa de backup e pergunta se pode mesmo ser executado imediatamente. Após a resposta yes, ele inicia o backup e o console mostra uma mensagem informando que há novas mensagens. Para ler as mensagens, é possível escolher o método automático (autodisplay on) ou o manual (messages). Ao final do backup, o Bacula emite um relatório com todos os detalhes mais importantes da tarefa que acabou de executar.

Restauração

A restauração do backup é igualmente fácil e pode ser iniciada com o comando restore no console administrativo. Em seguida, é possível selecionar quais dados restaurar. No momento, são oferecidas onze opções, começando pelos arquivos mais recentemente gravados e terminando com a possibilidade de selecionar os dados a restaurar por meio de comandos SQL no catálogo. Após escolher um método, basta marcar os arquivos desejados e informar o destino dos dados restaurados, além

Listagem 4: Configuração do director 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62

Director { Name = dir-backup DIRport = 9101 QueryFile = “/etc/bacula/query.sql” WorkingDirectory = “/var/bacula/working” PidDirectory = “/var/run” Maximum Concurrent Jobs = 1 Password = “4V60qoOSZgEBrirJBNAXbUUmAcM8” Messages = Daemon } JobDefs { Name = “DefaultJob” Type = Backup Level = Incremental Client = backup-fd FileSet = “Full Set” Schedule = “WeeklyCycle” Storage = File Messages = Standard Pool = Default Priority = 10 } Job { Name = “Client1” JobDefs = “DefaultJob” Write Bootstrap = “/var/bacula/working/Client1.bsr” } Job { Name = “BackupCatalog” JobDefs = “DefaultJob” Level = Full FileSet=”Catalog” Schedule = “WeeklyCycleAfterBackup” RunBeforeJob = “/etc/bacula/make_catalog_backup bacula bacula” RunAfterJob = “/etc/bacula/delete_catalog_backup” Write Bootstrap = “/var/bacula/working/BackupCatalog.bsr” Priority = 11 } Job { Name = “RestoreFiles” Type = Restore Client=backup-fd FileSet=”Full Set” Storage = File Pool = Default Messages = Standard Where = /tmp/bacula-restores } FileSet { Name = “Full Set” Include { Options { signature = MD5 } File = /usr/local/src/bacula-2.0.3 } Exclude { File = /proc File = /tmp

49

Linux Magazine #60 | Novembro de 2009

© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).


CAPA  | Bacula

Listagem 4 (continuação) 63 File = /.journal 64 File = /.fsck 65 } 66 } 067 068 Schedule { 069 Name = “Semanal” 070 Run = Full 1st sun at 23:05 071 Run = Differential 2nd-5th sun at 23:05 072 Run = Incremental mon-sat at 23:05 073 } 074 075 Schedule { 076 Name = “SemanalAposBackup” 077 Run = Full sun-sat at 23:10 078 } 079 080 FileSet { 081 Name = “Catalogo” 082 Include { 083 Options { signature = MD5 } 084 File = /var/bacula/working/bacula.sql 085 } 086 } 087 088 Client { 089 Name = backup-fd 090 Address = backup 091 FDPort = 9102 092 Catalog = MyCatalog 093 Password = “w4Usp8cV18pitA56WhtUHYSbNat83NgvesmiH” 094 File Retention = 30 days 095 Job Retention = 6 months 096 AutoPrune = yes 097 } 098 099 Storage { 100 Name = Arquivo 101 Address = backup 102 SDPort = 9103 103 Password = “0KaQ38vP8E8R2jKERde1BIZH5p27jimk62MXl1kZ” 104 Device = FileStorage 105 Media Type = File 106 } 107 108 Catalog { 109 Name = MeuCatalogo 110 dbname = bacula; user = bacula; password = “” 111 } 112 113 Pool { 114 Name = Default 115 Pool Type = Backup 116 Recycle = yes # O Bacula consegue reciclar volumes automaticamente 117 AutoPrune = yes # Remover volumes expirados 118 Volume Retention = 365 days # Um ano 119 } 120 121 Console { 122 #... 123 }

de confirmar se é desejável sobrescrever os arquivos que já estiverem presentes no destino. Esta tarefa também gera um relatório. O exemplo utilizado neste artigo explora somente uma pequena parcela das inúmeras possibilidades oferecidas pelo Bacula. Embora ele demonstre o backup de apenas um diretório, o procedimento é praticamente o mesmo para gravar os backups em fitas, por exemplo. As tarefas importantes, como o rótulo da fita, são resolvidas de forma automática pelo Bacula por meio dos parâmetros já fornecidos, ou então informadas pelo administrador de forma manual.

Conclusões

Este exemplo mostra que o Bacula é uma solução completa de backup que não deixa a desejar em comparação com as soluções proprietárias. Além de gratuito, oferece o poder do Software Livre. Não é preciso temer o uso do Bacula. Com a documentação exemplarmente bem detalhada – mesmo em comparação com outros projetos livres –, praticamente não restam dúvidas para o administrador. É fácil perceber que o líder do projeto Kern Sibbald lhe dedicou muito tempo.  n

Mais informações [1] Bacula: http://www.bacula.org [2] Compatibilidade com o MTX: http://mtx.opensource-sw. net/compatibility.php

Gostou do artigo? Queremos ouvir sua opinião. Fale conosco em cartas@linuxmagazine.com.br Este artigo no nosso site: http://lnm.com.br/article/3101

50

http://www.linuxmagazine.com.br

© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).


Criação, verificação e disponibilização de sistemas de arquivos

TUTORIAL

OpenSolaris, parte 7 Agora que já sabemos como criar partições de disco no OpenSolaris, vamos criar sistemas de arquivos nelas e disponibilizá-las via iSCSI. por Alexandre Borges

A

té o momento realizamos operações de particionamento com discos rígidos, entretanto, essas ações também ser feitas com discos removíveis, como CDs, pen drives, disquetes, DVDs e cartões SD (pode ser necessário instalar o pacote SUNWsdcard) ou ainda qualquer outro dispositivo de armazenamento removível. Assim como o Linux, o OpenSolaris também dispõe do recurso de montar automaticamente alguns dispositivos de armazenamento de forma a facilitar a vida do usuário. Isso é feito pelo serviço chamado rmvolmgr (mais sobre serviços em artigos futuros) que disponibiliza – ou seja, monta – esses dispositivos removíveis nos seguintes locais: CD-ROM e DVD: /cdrom/ ou /media/; disquete: /floppy/; pen drive e cartão SD: /rmdisk/. No caso de disquetes, além de inserir o disquete no drive, é necessário executar o comando volcheck para que o sistema reconheça a presen-

ça do disquete no leitor. Todos esses dispositivos devem ser desmontados usando o comando eject (obviamente, é necessário que o dispositivo esteja livre para ser desmontado; caso contrário, o OpenSolaris reclamará com a mensagem “busy”). De qualquer modo, para verificar quais dispositivos de armazenamento removíveis estão presentes, execute o comando rmformat. Só é possível escolher dispositivos cuja permissão de acesso esteja definida como “Medium is not write-protected”. Essa não é a única maneira (e nem a melhor) de fazer isso; também pode-se usar o comando format -e para alcançar os mesmos objetivos, o que simplifica tudo. A listagem 1 exemplifica como o rmformat lista os discos removíveis: Com o comando rmformat é possível, inclusive, proteger um disquete com senhas contra gravação (embora este recurso dificilmente ainda seja útil hoje em dia). O único inconveniente é que a sintaxe é complexa e o comando não é tão ágil para realizar o que se deseja. O

comando man rmformat e referências online [1] contêm mais informações sobre o comando.

Formatação

O OpenSolaris tem a capacidade de trabalhar com diversos tipos de sistemas de arquivos, sejam eles locais, remotos ou ainda pseudossistemas de arquivos. Os tipos mais importantes são: UFS (Unix File System): sempre foi o principal sistema de arquivos usado no OpenSolaris para discos rígidos, principalmente para o disco de boot. Entretanto, atualmente o disco de boot do OpenSolaris utiliza o ZFS por padrão; PCFS (Personal Computer File System): uma implementação do FAT32 para Unix utilizada em disquetes e pen drives; UDFS (Universal Disk Format File System): sistema de arquivos utilizado em CDs e DVDs; HSFS (High Sierra File System): sistema de arquivos utilizado em CDs; 51

Linux Magazine #60 | Novembro de 2009

© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).


TUTORIAL  | OpenSolaris

ZFS (Zeta Byte File System): considerado um dos mais poderosos sistemas de arquivos atuais, é atualmente uma das opções para discos de aplicativos e boot; TMPFS: este sistema de arquivos persiste seu armazenamento em memória RAM e, por isso, tem característica temporária. Um exemplo é o sistema /tmp, muito semelhante ao do Linux, porém persistido em memória; ou seja, ao reiniciar o sistema, todo o seu conteúdo é apagado; SWAPFS: usado em partições swap;

PROCFS: usado no diretório /proc para representar os processos ativos do sistema; NFS (Network File System): utilizado para compartilhar arquivos via rede.

Existem outros tipos de sistemas de arquivos, entretanto não são compatíveis com o nível de detalhamento que será abordado neste artigo. Agora que já conhecemos os sistemas de arquivos, como podemos criá-los? Nas versões mais recentes do OpenSolaris, já se utiliza o ZFS como sistema de arquivos padrão, mas também é possível criar siste-

Listagem 1: Comando rmformat root@opensolaris64:/# rmformat Looking for devices... 1. Logical Node: /dev/rdsk/c0t0d0p0 Physical Node: /pci@0,0/pci-ide@6/ide@0/sd@0,0 Connected Device: HL-DT-ST DVD-RAM GSA-H58N 1.02 Device Type: DVD Reader/Writer Bus: IDE Size: <Unknown> Label: <Unknown> Access permissions: <Unknown> 2. Logical Node: /dev/rdsk/c6t0d0p0 Physical Node: /pci@0,0/pci1043,815a@2,1/storage@5 /disk@0,0 Connected Device: Kingston DataTraveler 2.0 PMAP Device Type: Removable Bus: USB Size: 2.0 GB Label: <Unknown> Access permissions: Medium is not write protected.

Listagem 2: Criação de sistemas de arquivos com o newfs root@opensolaris:/# newfs /dev/rdsk/c9t0d0s0 newfs: construct a new file system /dev/rdsk/c9t0d0s0: (y/n)? y Warning: 2048 sector(s) in last cylinder unallocated /dev/rdsk/c9t0d0s0: 40960 sectors in 7 cylinders of 48 tracks, 128 sectors 20.0MB in 1 cyl groups (14 c/g, 42.00MB/g, 20160 i/g) super-block backups (for fsck -F ufs -o b=#) at: 32,

Listagem 3: Descobrir o sistema de arquivos numa partição # fstyp /dev/rdsk/c9t0d0s0 ufs # fstyp /dev/rdsk/c7d0s0 zfs

mas de arquivos UFS. Deixaremos o ZFS para um artigo futuro dedicado somente a esse assunto. A listagem 2 demonstra o procedimento para criar sistemas de arquivos UFS com o comando newfs. Sistemas de arquivos UFS possuem uma limitação: não suportam tamanhos acima de 1 TB. Mais precisamente, se for descontado o overhead, o tamanho máximo cai para 866 GB. Para suprir esta necessidade, a Sun incluiu no Solaris 10 (e no OpenSolaris) um outro tipo de UFS, chamado UFS MTB (UFS Multi Terabyte), com limite de 16 TB. Para criar um sistema de arquivos desse tipo, basta usar a opção -T no comando newfs: # newfs -T /dev/rdsk/c9t0d0s0

Montagem

O comando para montar esses sistemas de arquivos é o mesmo do Linux, o mount: mount /dev/rdsk/c9t0d0s0 /mnt

Da mesma forma, para desmontá-lo usa-se o umount: umount /mnt

Às vezes é necessário saber qual sistema de arquivos está presente em uma determinada partição. Isso é feito com o comando fstyp (listagem 3). Com relação às opções de montagem, o OpenSolaris deduz algumas opções para o sistema de arquivos quando não é informado de nada. O comando mount sem qualquer argumento (listagem 4) pode mostrar isso. O comando mount identifica o sistema de arquivos montado, seu ponto de montagem, suas opções e quando ele foi montado. Alguns dos dados mostrados na listagem 4 merecem uma breve explicação:

52

http://www.linuxmagazine.com.br

© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).


OpenSolaris | TUTORIAL

Listagem 4: Comando mount root@opensolaris:/# mount / on rpool/ROOT/opensolaris read/write/setuid/devices/dev=2d90002 on Wed Dec 31 21:00:00 1969 /var/run on swap read/write/setuid/devices/xattr/dev=4b80003 on Fri Aug 21 11:55:53 2009 /export on rpool/export read/write/setuid/devices/nonbmand/exec/xattr/atime/dev=2d90006 on Fri Aug 21 11:56:03 2009 /export/home on rpool/export/home read/write/setuid/devices/nonbmand/exec/xattr/atime/dev=2d90007 on Fri Aug 21 11:56:03 2009 root@opensolaris:/#

setuid: o sistema de arquivos suporta a execução de programas com o indicador de setuid. Apenas para relembrar, em linhas muito gerais, programas com este indicador permitem que qualquer usuário os execute como se fosse o dono do arquivo, ou seja, como usuário root. Se o conteúdo dos programas que possuem esse indicador ativado não for bem conhecido e controlado, é possível ocorrer falhas graves de segurança passíveis de exploração usando, por exemplo, condições de corrida. O indicador oposto a setuid é nosuid; atime: registra a hora em que o arquivo foi acessado pela última vez, isto é, mesmo em operações de leitura do conteúdo do arquivo, ele é alterado. Alguns administradores desabilitam esse registro com a opção noatime para aumentar o desempenho; quota: habilita o uso de cotas no sistema de arquivos; forcedirectio: aumenta o desempenho de I/O do OpenSolaris no uso com certos aplicativos. O forcedirectio é muito usado com banco de dados Oracle, pois este armazena seu próprio buffer na memória, o que elimina o double buffering, provocando uma queda de desempenho desnecessária; xattr: esta opção permite o uso de atributos estendidos no sistema de arquivos. Isso permite, por exemplo, embutir um ícone

em um programa executável em um ambiente gráfico. O problema é que tudo que pode ser usado com bom propósito também pode ser utilizado para o mal. Crackers podem invadir uma máquina com OpenSolaris e esconder, por meio de comandos próprios para isso, rootkits no espaço de atributos estendidos de um arquivo (quadro 1).

Existem outras opções que dispensam maiores explicações, como rw (leitura e escrita) e ro (somente leitura). Todavia, segue uma demonstração simples do uso, lembrando mais uma vez que, quando nada é explicitado na montagem, o OpenSolaris adota algumas opções padrão: Além das opções de montagem de sistema de arquivos, também há outras para montar sistema de ar-

Quadro 1: Uma porta para rootkits A listagem 5 ilustra um procedimento para embutir um rootkit nos atributos estendidos de um arquivo. Vamos analisar individualmente os passos executados. Primeiramente, cria-se um arquivo vazio e usa-se o comando runat para entrar no espaço de atributos estendidos desse arquivo (linhas 1 e 2). Lá dentro, é natural a falha (linha 3) do shell em identificar a localização atual do usuário na árvore de diretórios, pois não estamos em nenhum diretório, mas dentro do espaço de atributos estendidos do arquivo teste. Em seguida, criamos o arquivo linuxmagazine.txt contendo algum texto (linhas 5 a 17). Ao final, executamos o comando exit para voltar ao sistema de arquivos do OpenSolaris (linhas 19 e 20). Ao verificar o tamanho do arquivo teste (originalmente vazio), surge uma surpresa: ele continua com tamanho zero (linhas 22 e 23)! O espaço ocupado pelo arquivo linuxmagazine.txt não é mostrado em lugar algum. Mesmo sem entrar no espaço de atributos estendidos do arquivo teste é possível listar seu conteúdo e ainda executar qualquer aplicativo (como o shell Bash, no nosso caso) sem qualquer impedimento (linhas 25 a 45). Note que qualquer comando de localização do diretório corrente falha (linhas 31 e 32). Por fim, executamos o comando exit e voltamos ao sistema de arquivos normal (linhas 47 a 52). É desta forma que se consegue carregar um rootkit nos atributos estendidos de um arquivo qualquer e executá-lo sem dificuldade.

53

Linux Magazine #60 | Novembro de 2009

© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).


TUTORIAL  | OpenSolaris

quivos diferentes usando um complemento da sintaxe usada para as opções: mount –F hsfs –o ro \\ /dev/dsk/c2t6d0s0 /cdrom

De forma semelhante ao Linux, o OpenSolaris também pode montar automaticamente os sistemas de arquivos na inicialização do sistema por meio do arquivo /etc/vfstab. A sintaxe está bem descrita no próprio

arquivo (caso isso não seja suficiente, man /etc/vfstab). O ZFS não usa, via de regra, o arquivo /etc/vfstab; a montagem dos sistemas de arquivos é incumbência de alguns serviços próprios para esta tarefa.

Listagem 5: Embutir um rootkit 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52

root@opensolaris:/# touch teste root@opensolaris:/# runat teste shell-init: error retrieving current directory: getcwd: cannot access parent directories: Not a directory root@opensolaris:/# cat > linuxmagazine.txt Isto é um teste com atributos estendidos !!! root@opensolaris:/# more linuxmagazine.txt Isto é um teste com atributos estendidos !!! root@opensolaris:/# ls total 4 drwxrwxrwt 4 root root -rw-r--r-- 1 root root -rw-r--r-- 1 root root -r--r--r-- 1 root root -rw-r--r-- 1 root root

-al 5 0 46 84 400

2009-08-22 2009-08-22 2009-08-22 2009-08-22 2009-08-22

16:30 16:28 16:30 16:30 16:30

. .. linuxmagazine.txt SUNWattr_ro SUNWattr_rw

root@opensolaris:/# exit exit root@opensolaris:/# ls -al teste -rw-r--r-- 1 root root 0 2009-08-22 16:28 teste root@opensolaris:/# runat teste ls linuxmagazine.txt SUNWattr_ro

SUNWattr_rw

root@opensolaris:/# runat teste /bin/bash shell-init: error retrieving current directory: getcwd: cannot access parent directories: Not a directory root@opensolaris:/# pwd pwd: error retrieving current directory: getcwd: cannot access parent directories: Not a directory root@opensolaris:/# > do > date > sleep 2 > done Sat Aug 22 16:44:49 Sat Aug 22 16:44:51 Sat Aug 22 16:44:53 ^C

while true

BRT 2009 BRT 2009 BRT 2009

root@opensolaris:/# ls linuxmagazine.txt SUNWattr_ro

SUNWattr_rw

root@opensolaris:/# exit exit root@opensolaris:/# ls bin cdrom devices export kernel lost+found mnt opt proc rpool system tmp var boot dev etc home lib media net platform root sbin teste usr

54

http://www.linuxmagazine.com.br

© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).


OpenSolaris | TUTORIAL

Comando fsck

Assim como em qualquer sistema operacional, os sistemas de arquivos do OpenSolaris podem apresentar falha de integridade referente aos seus arquivos. O utilitário fsck é o responsável por analisar as condições de sistemas de arquivos UFS e corrigir seus possíveis erros. Para executar o comando fsck, algumas premissas básicas devem ser sempre levadas em conta: o sistema de arquivos a ser verificado deve estar desmontado; se o sistema de arquivos a ser verificado for crítico (/ , /usr, /var), o sistema operacional deve estar em runlevel S (mono-usuário); o comando fsck somente se aplica a sistemas de arquivos UFS. O uso do fsck é simples:

qualquer questionamento de reparo, responde automaticamente com “yes”. Existem casos em que isto pode não funcionar, pois às vezes surgem perguntas como “Cancelar verificação do sistema de arquivos?”, para a qual uma resposta “yes” cancelaria a execução. Nesses casos, é recomendado usar o fsck em um sistema de arquivos de cada vez e sem qualquer opção. Ainda existe a hipótese de que a corrupção tenha ocorrido no superbloco primário (área do sistema de arquivos UFS que contém o número de blocos de dados, o número de grupos de cilindro, o tamanho de cada bloco de dados etc.). Neste caso, torna-se obrigatório restaurála a partir de um dos superblocos de backup. Para descobrir onde se localizam essas cópias do superbloco primário, basta usar o comando newfs com a opção -N:

mas elas fogem do escopo deste artigo) e, com qualquer um dos valores em mãos, recorre-se novamente ao comando fsck:

newfs –N /dev/rdsk/c2t2d0s0

Note que esse comando nem sequer citou o driver lofi. Sem que ninguém perceba, o que ocorreu na verdade foram outros passos, mas o OpenSolaris ocultou e facilitou a vida de quem precisa dessa tarefa feita com agilidade. Eis os passos manuais, unicamente para fins didáticos:

fsck -o b=32 /dev/rdsk/c2t2d0s0

Montar arquivos ISO

Não é incomum o administrador precisar “abrir” uma imagem ISO, seja para verificar o conteúdo de um arquivo dentro dela, seja até mesmo para copiá-lo. No OpenSolaris, a melhor maneira de fazer essa leitura é utilizando o driver de loopback (lofi), que habilita o uso do arquivo regular (.iso) como um dispositivo de bloco. Seguem os passos: mount -F hsfs \ /export/home/ale/opensolaris.iso /mnt

fsck /dev/rdsk/c1t0d0s0

Se o sistema de arquivos que tiver apresentado inconsistências for crítico (/, /usr, /var), estes são os comandos para levar o sistema ao runlevel S: init s fsck –y init 6

O segundo comando (fsck –y) executa a verificação em todos os sistemas de arquivos (inclusive o que apresentou problemas) e, para

Se o sistema de arquivos for o UFS MTB, será preciso incluir também a opção -T, assim como na criação do sistema de arquivos. Um dos valores listados sempre será 32 (existem explicações para isto,

Listagem 8: Targets iSCSI 01 02 03 04

mkdir /export/home/linuxmagazine iscsitadm modify admin –d /export/home/linuxmagazine iscsitadm create target –z 200m lmtarget iscsitadm list target

Listagem 7: Criação, formatação e montagem de Ramdisk root@opensolaris:~# ramdiskadm -a diskram 50m /dev/ramdisk/diskram root@opensolaris:~# newfs /dev/ramdisk/diskram newfs: construct a new file system /dev/rramdisk/diskram: (y/n)? y /dev/rramdisk/diskram: 102340 sectors in 170 cylinders of 1 tracks, 602 sectors 50.0MB in 11 cyl groups (16 c/g, 4.70MB/g, 2240 i/g) super-block backups (for fsck -F ufs -o b=#) at: 32, 9664, 19296, 28928, 38560, 48192, 57824, 67456, 77088, 86720, 96352 root@opensolaris:~# mount /dev/ramdisk/diskram /mnt

55

Linux Magazine #60 | Novembro de 2009

© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).


TUTORIAL  | OpenSolaris

# lofiadm –a \ /export/home/ale/opensolaris.iso

Esse comando retorna: /dev/lofi/1

que por sua vez é usado para montar o arquivo ISO # mount –F hsfs /dev/lofi/1 /mnt

Em algumas versões mais antigas do OpenSolaris, assim como no próprio Solaris 10, ainda são necessárias essas duas etapas para montar arquivos ISO.

Discos na RAM

No OpenSolaris também é possível trabalhar com RAM disks, ou seja, utilizar a memória como meio de armazenamento temporário. A ideia

Listagem 9: iSCSI no initiator 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29

root@lab1# iscsiadm add discovery-address 192.168.1.101 root@lab1# iscsiadm modify discovery -t enable root@lab1# iscsiadm list discovery Discovery: Static: disabled Send Targets: enabled iSNS: disabled root@lab1# iscsiadm list target Target: iqn.1986-03.com.sun:02:f13d11(...)963.lmtarget Alias: lmtarget TPGT: 1 ISID: 4000002a0000 Connections: 1 root@lab1# root@lab1# format Searching for disks...done AVAILABLE DISK SELECTIONS: 0. c0t6001(...)C000d0 <DEFAULT cyl 198 alt 2 hd 64 sec 32> /scsi_vhci/disk@g600144f04a916aef00000c291a1dc000 1. c7d0 <DEFAULT cyl 4092 alt 2 hd 128 sec 32> /pci@0,0/pci-ide@7,1/ide@0/cmdk@0,0 2. c9t0d0 <VMware,-VMware Virtual S-1.0-512.00MB> /pci@0,0/pci1000,30@10/sd@0,0 Specify disk (enter its number):

root@lab1# newfs c0t600144F04A916AEF00000C291A1DC000d0s2 newfs: construct a new file system /dev/rdsk/c0t60(...)C000d0s2: (y/n)? y 30 /dev/rdsk/c0t60(...)C000d0s2: 405504 sectors in 198 cylinders of 64 tracks, 32 sectors 31 198.0MB in 13 cyl groups (16 c/g, 16.00MB/g, 7680 i/g) 32 super-block backups (for fsck -F ufs -o b=#) at: 33 32, 32832, 65632, (...) , 262432, 295232, 34 328032, 360832, 393632 35 36 root@lab1# mount /dev/dsk/c0t60(...)C000d0s2 /mnt 37 38 root@lab1# scsitadm show stats 39 operations bandwidth 40 device read write read write 41 ––––––-- –-- –-- –-- –-42 lmtarget 512 51 9.0M 12M

é ganhar desempenho para atividades rápidas. Como mostra a listagem 7, o comando para administração de discos em RAM é o ramdiskadm. Com a opção -a, cria-se um disco com o tamanho especificado no diretório /dev/ramdisk/, bastando em seguida criar nele um sistema de arquivos com o comando newfs para em seguida montá-lo normalmente com o comando mount.

Cotas de disco

Ao usar sistemas de arquivos UFS no OpenSolaris, é possível controlar o espaço usado pelos usuários por meio do recurso de cotas. Para habilitálo, o sistema de arquivos deve ser montado com a opção quota, que alternativamente pode ser inserida no arquivo /etc/vfstab. Como o controle é feito para cada sistema de arquivos separadamente, é preciso criar um arquivo chamado quotas na raiz de cada sistema de arquivos: cd /export/home touch quotas chmod 600 quotas

Deste ponto em diante, como a intenção é controlar o espaço utilizado por um determinado usuário neste sistema de arquivos, é necessário configurar a cota desse usuário: edquota borges

Após a edição das cotas para o usuário borges, o arquivo /export/ home/quotas fica da seguinte maneira (o tamanho padrão do bloco neste arquivo é de 1 KB): fs /export/home blocks (soft=50000, hard=70000) inodes (soft=0, hard=0)

Como esse comportamento é semelhante ao do Linux, vale lem-

56

http://www.linuxmagazine.com.br

© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).


OpenSolaris | TUTORIAL

brar que os termos entre parênteses significam: blocks: total de espaço ocupado pelo usuário; inodes: número máximo de inodes criados pelo usuário; soft: limite após o qual o usuário é avisado de que excedeu sua cota; hard: limite após o qual o usuário fica impedido de criar qualquer arquivo.

Para monitorar o uso da cota por um único usuário, basta usar o comando quota -v, informando o nome do usuário:

O protocolo iSCSI vem ganhando muito destaque nos últimos dois anos e já é suportado pelos principais fabricantes de sistemas operacionais e dispositivos de armazenamento do mercado. No OpenSolaris, volumes iSCSI só não podem ser utilizados como disco de boot do sistema ou como dispositivo de dump em caso de falhas de sistema. Quando o protocolo iSCSI é empregado para acessar discos, surgem dois termos: target (relacionado ao disco oferecido via iSCSI) e initiator (o lado cliente que acessa o disco via iSCSI). O OpenSolaris não instala por padrão os pacotes relacionados ao protocolo iSCSI. Portanto, é preciso instalá-los com o Package Manager (menu System | Administration | Package Manager, figura 1). Os pacotes devem ser instalados tanto nas duas máquinas que participam da comunicação, isto é, tanto na máquina que contém o target quanto no initiator. E mais: após os pacotes serem instalados, a máquina deve ser reiniciada.

quota –v borges

Target e initiator

Caso se deseje habilitar cotas para diversos usuários, é possível empregar o comando edquota da seguinte forma: edquota –p borges joao maria

Depois de todas as cotas devidamente configuradas, ainda é preciso ativar o controle de cotas com o comando quotaon: quotaon -a

Já no caso de um sistema de arquivos inteiro, como /export/home, o comando é o repquota:

Com os pacotes instalados, é preciso usar o comando iscsitadm no servidor para informar cada target do iSCSI (listagem 8). Com a opção modify admin -d (linhas 1 e 2), é pos-

sível especificar um diretório para funcionar como target. Para criar um novo target (linha 3), usa-se a opção create target, informando o tamanho do target com a opção -z e seu nome por último. Ao final, é sempre bom conferir os targets com a opção list target. No initiator, o utilitário de conexão a targets iSCSI é o iscsiadm, como mostra a listagem 9. A opção add discovery-address permite informar o IP do servidor que abriga o target (linha 1). Outra possibilidade é ativar a descoberta automática de targets na rede por meio da opção modify discovery -t enable (linha 2). A qualquer momento, a opção list discovery permite listar todos os targets encontrados (linhas 3 em diante).

Conclusão

Este artigo mostra claramente que o OpenSolaris é um sistema operacional sólido, com diversos recursos e feito para atingir um alto padrão de exigência. Nos próximos artigos, os assuntos se tornarão densos e ainda mais interessantes. Alguns dos campos abordados serão swap, backup e restauração, snapshots, ZFS, FMA (Fault Management Architecture), SMF (serviços), redes, segurança (RBAC, privilégio mínimo, firewall, criptografia), zonas etc.  n

repquota /export/home

iSCSI

Mais informações

O OpenSolaris também oferece suporte ao protocolo de armazenamento iSCSI. Esse protocolo permite que um disco SCSI seja acessado por meio da rede e oferece benefícios bem semelhantes aos que se obtém com o uso de SAN (storage area network). Para alcançar este efeito, o iSCSI basicamente encapsula o protocolo SCSI dentro de pacotes TCP/IP.

[1] Comando rmformat: http://www.linuxtopia.org/online_ books/opensolaris_2008/SAGDFS/html/medformat-80.html

Gostou do artigo? Queremos ouvir sua opinião. Fale conosco em cartas@linuxmagazine.com.br Este artigo no nosso site: http://lnm.com.br/article/3112

57

Linux Magazine #60 | Novembro de 2009

© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).


REDES

Configure um cluster Samba com o CTDB

Samba mais disponível A versão 3.3 do Samba, associada ao gerenciador de locks CTDB, oferece suporte completo à criação de clusters. por Michael Adam

O

sistema de código aberto Samba [1] vem oferecendo serviço de arquivos e impressão para sistemas Windows e Unix desde 1992. Os desenvolvedores do Samba [2] sempre tiveram dificuldades em emular características dos servidores Windows por não ter acesso às especificações, mas graças à liberação, por parte da Microsoft, dessas especificações no final de 2007 [3], a tarefa ficou muito mais fácil. Um add-on recente chamado CTDB [4] agora oferece ao Samba um recurso que nem o Windows suporta: sistemas de arquivos em cluster. O Samba, com isso, passa a oferecer a opção de um sistema de arquivos distribuído com múltiplos nós que se apresentam como um único servidor de arquivos de alta performance. E esse sistema servidor de arquivos baseado em cluster é (mais ou menos) infinitamente

escalável com relação ao número de nós. O Windows 2003 oferece certo suporte a clusters, mas foi projetado tendo em mente servidores web e de bancos de dados, portanto é restrito a oito nós. Este artigo descreve alguns dos problemas que o Samba soluciona por meio do uso de clusters. Além disso, forneceremos um histórico e analisaremos a arquitetura do CTDB, assim como forneceremos dicas de como configurar o CTDB e instalar o seu próprio cluster Samba.

O problema

Os desenvolvedores do Samba precisaram resolver alguns problemas intrínsecos para servir o mesmo arquivo ao mesmo tempo para múltiplos nós clientes ligados ao cluster do sistema de arquivos. Primeiramente, o protocolo Common Internet Filesystem – ou CIFS, como é mais

conhecido – usado pelo Samba e pela Microsoft requer sofisticados mecanismos de locking, incluindo modos de compartilhamento que bloqueiam exclusivamente arquivos inteiros, e locks de faixas de bytes para bloquear partes de arquivos. Esses locks obrigatórios no Windows simplesmente não são conversíveis para os advisory locks (locks de aviso) usados na paisagem Posix [5]. Para contornar esse problema, o Samba precisa armazenar informações de locking do CIFS num banco de dados interno e verificar o banco de dados no momento do acesso ao arquivo. Além disso, os vários processos do Samba precisam trocar mensagens. Por exemplo, um cliente pode enviar uma requisição de lock com prazo de validade para uma área de arquivo atualmente bloqueada por outro cliente. Se um cliente retirar seu lock ainda dentro do prazo de

58

http://www.linuxmagazine.com.br

© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).


Samba | REDES

validade daquela requisição, o Samba concede um lock ao novo processo e envia um sinal para informar a esse novo processo à espera que há uma mensagem disponível. O sistema também precisa sincronizar as tabelas de mapeamento de ID, que mapeiam usuários e grupos Windows aos do Unix. O problema dos clusters também acrescenta outras complicações. Por exemplo, como servidor membro do domínio, o Samba precisa ter as mesmas informações em todos os nós; isto é, ele precisa da senha da conta e do SID do domínio. Além disso, as sessões e conexões clientes SMB nos nós precisam ser informadas a todos os nós. O banco de dados interno do Samba, chamado de Trivial Database (TDB) [6] é um banco de dados rápido semelhante ao Berkeley DB e ao GNU DBM. O TDB suporta locks e, portanto, escrita simultânea. O Samba usa o TDB internamente

Tabela 1: Resultados do Smbtorture NBENCH Número de nós

Taxa de dados

1

109 MB/s

2

210 MB/s

3

278 MB/s

4

308 MB/s

em vários locais, incluindo caches e outras tarefas de manipulação de dados. Ele até usa o mecanismo de mapeamento de memória mmap() para mapear áreas do TDB diretamente na memória principal, o que significa que TDBs podem ser tão velozes quanto a memória compartilhada. Um primeiro passo dos desenvolvedores do Samba para superar o desafio de um serviço de arquivos em cluster foi estender o banco de dados TDB para aprimorar o suporte a cenários de clusters. O Cluster TDB (CTDB) estreou no outono de 2007 no hemisfério sul e a conexão do Samba

ao CTDB originalmente só estava disponível na forma de uma versão personalizada da versão 3.0.25-ctdb. O código do cluster foi incluído no Samba padrão em sua versão 3.2.0, em julho de 2008, mas o esforço inicial ainda não estava completo. Com o Samba 3.3.0, lançado em janeiro de 2009, o Samba finalmente ganhou suporte completo a clusters. O mantenedor do projeto CTDB no momento é Ronnie Sahlberg. Seu ramo git do CTDB [7] é o ponto de cristalização do código oficial do CTDB. Versões mais recentes do código suportam TDBs persisten-

Rede pública

Rede de gerenciamento

Nó de serviço

Samba

SSH

Nó de serviço

Nó de gerenciamento

Rede privada ctdb

/shared

Rede privada ctdb

(CTDB)

(CTDB)

ctdb

/shared

/shared

Sistema de arquivos distribuído

Figura 1 Uma configuração básica de CTDB com dois nós de serviço e um nó de gerenciamento separado. A figura mostra uma visão esquemática do armazenamento e do sistema de arquivos de cluster compartilhado sob a raiz.

59

Linux Magazine #60 | Novembro de 2009

© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).


REDES  | Samba

tes e transações de bancos de dados no nível da API, tornando assim o CTDB utilizável por qualquer tarefa relacionada ao TDB. Além disso, os desenvolvedores estenderam o CTDB por meio de inúmeros recursos de monitoramento e alta disponibilidade. O histórico completo do CTDB se encontra no wiki do Samba [8].

Como funciona

O Samba está presente em todos os nós, e todas as suas instâncias se apresentam como um único servidor Samba, do ponto de vista do cliente. As instâncias do Samba são configuradas de forma idêntica e servem as

mesmas áreas dos arquivos dos compartilhamentos. Portanto, o modelo do CTDB é basicamente um cluster de balanceamento de carga com recursos de alta disponibilidade. Por trás dos panos, o daemon do CTDB, ctdbd, está em execução em todos os nós. Os daemons negociam os metadados do banco de dados CTDB, sendo que cada daemon possui uma cópia local do banco TDB (chamada de LTDB) mantido para o CTDB. Essa cópia não reside no sistema de arquivos do cluster, mas na rápida memória local. O acesso aos dados é gerenciado pelos TDBs locais.

Quadro 1: Compilação do CTDB O projeto Samba usa o sistema de gerenciamento de código-fonte Git [10] desde o fim de 2007. Os desenvolvedores mantêm o Samba e o CTDB no servidor git://git.samba.org e em sua respectiva interface web [11]. Os “ramos” da versão oficial do Samba e o master estão disponíveis no repositório git://git.samba.org/samba.git. O mirror [12] oferece até arquivos tar dos snapshots de cada revisão. Os fontes oficiais do CTDB estão disponíveis no repositório de Ronnie Sahberg [7]. O repositório em git:git.samba.org/obnox/samba-ctdb.git contém versões do Samba com extensões de cluster baseadas nos ramos oficiais – particularmente uma variante de cluster do Samba 3.2 (v3-2-ctdb//) pronta para produção. No momento da escrita deste artigo, o software CTDB era compatível com Linux e AIX. O sequência normal de comandos compila e instala o software: cd ctdb/ ./autogen.sh ./configure [opções] make make install Não são necessárias opções especiais no ./configure. O já comum --prefix permite personalizar os diretórios de instalação. Em sistemas RPM, é possível gerar um pacote diretamente a partir de um checkout do git: cd ctdb/ ./packaging/RPM/makerpms.sh Há RPMs pré-compilados do CTDB e do Samba v3-2-ctdb para Red Hat [13] e outras distribuições [14].

Listagem 1: Arquivo /etc/ctdb/nodes 01 192.168.46.70 02 192.168.46.71 03 192.168.46.72

O Samba usa bancos de dados TDB para várias tarefas. Os bancos de dados de locks, mensagens, conexões e sessões contêm somente dados voláteis, mas são dados que o Samba lê e grava com frequência. Outros bancos contêm informações não voláteis. O Samba não precisa de permissão de escrita nessas dados persistentes com frequência, mas a permissão de leitura é altamente crítica. Os requisitos de integridade de dados, portanto, são mais estritos para os bancos de dados persistentes do que para os voláteis. Entretanto, o desempenho é mais crítico para bancos voláteis. O Samba utiliza duas técnicas completamente diferentes para gerenciar bancos de dados voláteis e persistentes: no caso dos persistentes, cada nó sempre possui uma cópia completa e atualizada. O acesso de leitura é local. Se um nó quiser escrever nesse banco, ele precisa bloqueá-lo inteiro no escopo de uma transação para então completar suas operações de leitura e escrita dentro dessa transação. A efetuação da transação distribui todas as alterações para os outros nós do CTDB. No caso dos dados voláteis, cada nó mantém localmente apenas os registros que já acessou. Isso significa que somente um nó, o mestre de dados, possui os dados atualizados dos registros. Se um nó quiser escrever ou ler um registro, primeiramente ele verifica se é o mestre dos dados desse registro e, em caso positivo, acessa o LTDB diretamente. Caso contrário, ele primeiramente obtém os dados atualizados a partir do ctdbd, assume o papel de mestre dos dados e depois escreve localmente. Como o mestre dos dados sempre escreve diretamente nos TDBs locais, um nó CTDB único não é mais lento que o Samba sem cluster. O segredo por trás da excelente escalabilidade do CTDB é que os dados dos registros nos bancos voláteis são

60

http://www.linuxmagazine.com.br

© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).


Samba | REDES

enviados para somente um nó, em vez de para todos os nós. Afinal, é perfeitamente aceitável perder as alterações feitas por um nó a um banco volátil caso esse nó saia do cluster. As informações só dizem respeito às conexões desse mesmo nó. Os outros nós seriam incapazes de aproveitar tais informações de qualquer maneira. Testes de desempenho num cluster [9] confirmam que essa arquitetura é sólida. Um teste Smbtorture do NBENCH em 32 clientes é mostrado na tabela 1. Uma única conexão com um compartilhamento num nó do cluster alcança taxa de transferência de 1,7 GBps.

Auto-reparos

Se um nó falhar, o banco volátil provavelmente perderá seu mestre de dados referente a alguns registros. O processo de recuperação restaura um estado consistente para o banco de dados: um nó é o mestre de recuperação que coleta os registros de todos os outros nós. Se ele encontrar um registro em um mestre de dados, procura o nó com a cópia mais recente. Para permitir que isso aconteça, o CTDB mantém um número de sequência para os registros num campo do cabeçalho, comparado com o TDB padrão; o número é incrementado a cada vez que o registro é transferido para outro nó. Ao final do processo de recuperação, o mestre de recuperação é o mestre de dados para todos os registros de todos os TDBs. O mestre de recuperação é escolhido por um processo de eleição que utiliza o que se conhece como lock de recuperação. Esse recurso exige que o CTDB suporte locks Posix fcntl(). Outros processos eletivos mais complexos poderiam eliminar essa exigência, mas, por outro lado, um sistema de arquivos de cluster intacto resolve o problema de separação sujeito a erros do CTDB.

Mão na massa

Para instalar o CTDB, os desenvolvedores do Samba recomendam (pelo menos) duas redes, de preferência fisicamente separadas: uma rede pública a partir da qual os clientes acessarão os serviços disponíveis (Samba, NFS, FTP...) e uma rede privada, que o CTDB utiliza para lidar com a comunicação interna ao cluster. A rede do sistema do cluster pode estar numa rede separada ou na mesma utilizada internamente pelo CTDB. Uma rede de gerenciamento separada pode se mostrar boa para, digamos, login nos nós via SSH. A figura 1 mostra a configuração básica de um cluster CTDB. O quadro 1 dá mais informações sobre como adicionar o CTDB a implementações de Samba que já estejam em uso. O arquivo central de configuração do CTDB é o /etc/ sysconfig/ctdb. O mais importante a especificar é o arquivo de lock de recuperação, por meio da variável CTDB_RECOVERY_LOCK. Além disso, o usuário administrador precisa popular o arquivo /etc/ctdb/nodes com os IPs de todos os nós do CTDB na rede privada (listagem 1). Esse arquivo também precisa ser idêntico em todos os nós.

Figura 2 O popular ctdb status mostra o status do cluster.

Configuração do Samba Se você já tem suporte a cluster no Samba (confira o quadro 2), será preciso configurá-lo com os seus próprios parâmetros no smb.conf. O parâmetro clustering = yes ativa o recurso de clusters em tempo de execução. Sem ele, a versão do Samba com esse recurso funcionará como qualquer outra versão mais antiga, ou seja, sem suporte a clusters. Apesar do que dizem as várias páginas do wiki do Samba, não é necessário colocar private dir no sistema de arquivos do cluster (talvez apenas para um smbpasswd local). Esta informação só se aplica a versões mais antigas do CTDB, que eram incapazes de lidar com bancos de da-

Listagem 2: Arquivo smb.conf para um cluster 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17

[global] clustering = yes netbios name = cifscluster workgroup = mydomain security = ads passdb backend = tdbsam idmap backend = tdb2 idmap uid = 1000000-2000000 idmap gid = 1000000-2000000 groupdb:backend = tdb fileid:algorithm = fsname [share] path = /storage/share vfs objects = fileid

61

Linux Magazine #60 | Novembro de 2009

© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).


REDES  | Samba

módulo fileid, seja globalmente ou apenas para um compartilhamento. O valor da opção fileid:algorithm na seção [global] configura o método, como em: Figura 3 O comando ctdb ip informa ao administrador como os IPs são distribuídos ao longo dos servidores.

dos TDB persistentes como secrets. tdb e passwd.tdb em private dir. As versões atuais do CTDB distribuem automaticamente os TDBs persistentes ao longo do cluster. Se for necessário mapear grupos, será preciso alterar o back-end, do padrão ldb para o tdb, com a opção groupdb:backend = tdb. O Samba utiliza um código identificador para armazenar informações de locking: o smbd normalmente cria

esse código aplicando a função stat() ao dispositivo do arquivo e ao número do inode. Porém, o cluster precisa de um ID que seja válido para múltiplos nós, pois o número do dispositivo é variável para um mesmo arquivo no cluster. O módulo do VFS fileid oferece uma técnica alternativa para formar um ID de arquivo que seja válido em todo o cluster. O parâmetro vfs objects = fileid numa seção do arquivo de configuração ativa o

Quadro 2: Como compilar seu próprio Samba Se você não puder usar pacotes pré-compilados (ou simplesmente preferir não usá-los), pode compilar e instalar o Samba 3.3 com recursos de cluster a partir do código-fonte. Basta usar a sequência padrão de comandos: cd samba/source ./autogen.sh ./configure \ --with-cluster-support \ --with-ctdb=/usr/include \ --with-shared-modules=idmap_tdb2 [opções] make everything make install O comando autogen.sh só é necessário quando se usa um snapshot do repositório git em vez do arquivo tar. O parâmetro --with-ctdb=configure define onde se localizam os cabeçalhos do CTDB no sistema. O Samba precisa deles para compilar o código a fim de se comunicar com o CTDB. Se você já instalou o CTDB a partir de um pacote, o diretório mais indicado é o /usr/include/. Compilar a variante de cluster do módulo padrão de mapeamento de IDs, idmap_tdb, adiciona o idmap_tdb2 à lista de módulos em --with-sharedmodules=. A equipe do Samba atualmente está tentando unir o idmap_tdb e o idmap_tdb2 para suportar o idmap_tdb no cluster. Uma das próximas versões do Samba provavelmente resolverá essa questão. Os comandos a seguir geram RPMs para sistemas Red Hat e SUSE diretamente a partir de um checkout do git: cd samba/source ./packaging/RHEL-CTDB/makerpms.sh

vfs objects = fileid fileid:algorithm = fsid

Endereços IP

Para distribuir endereços IP públicos ao longo dos nós do cluster, existem três opções: uma das possibilidades é atribuir endereços estaticamente sem envolver o CTDB. Nesse caso, o CTDB não pode usar seu recurso de alta disponibilidade. Outra possibilidade é usar um único IP como endereço público do cluster no que se chama de modo LVS e permitir que o nó mestre LVS distribua o endereço para os nós participantes. Definir as variáveis CTDB_LVS_PUBLIC_IP e CTDB_PUBLIC_INTERFACE no arquivo /etc/sysconfig/ctdb ativa esse modo. O terceiro método é permitir que o CTDB atribua dinamicamente múltiplos endereços IP públicos aos nós. Em combinação com um método round-robin, essa opção acrescenta o balanceamento de carga e a alta disponibilidade ao cluster CTDB. Para permitir isso, é preciso especificar um arquivo – normalmente /etc/ctdb/public_addresses – com a variável CTDB_PUBLIC_ADDRESSES no arquivo /etc/sysconfig/ctdb em cada nó; o arquivo contém o conjunto de endereços com as máscaras de rede e interfaces de rede que o CTDB vai atribuir aos nós. A lista de endereços não precisa estar em todos os nós, nem precisa ser idêntica em todos os nós. Em vez disso, é possível usar a topologia da sua rede pública e criar partições. Se um nó falhar, o CTDB transfere seus IPs públicos para outros nós do cluster, que possuem esses endereços em suas listas public_addresses.

62

http://www.linuxmagazine.com.br

© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).


Samba | REDES

É importante entender que o balanceamento de carga e a distribução de clientes ao longo dos nós clientes são orientados à conexão. Se um IP mudar de um nó para outro, todas as conexões que estiverem usando ativamente esse IP serão descartadas e os clientes precisarão reconectar-se. Para evitar atrasos, o CTDB usa um truque: quando um IP se muda, o novo CTDB “faz cócegas” no cliente com um pacote TCP ACK ilegal (tickle ACK, como é chamado) que contém um número de sequência inválido (zero) e um número ACK zero. O cliente responde com um pacote ACK válido, o que permite que o novo proprietário do IP feche a conexão com um pacote RST, forçando assim o cliente a reestabelecer a conexão com o novo nó.

Ferramentas

O pacote do CTDB oferece dois programas úteis, ctdb e onnode, juntamente com o daemon ctdbd. A ferramenta ctdb é a interface cliente para gerenciar o cluster CTDB. O comando usado com mais frequência é o ctdb status, que exibe o status geral do cluster (figura 2). O comando ctdb ip mostra a distribuição de IPs públicos nos nós (figura 3). O ctdb permite que o admin realize ações no cluster, tais como ativar ou desativar nós individuais, adicionar ou remover IPs públicos, forçar uma recuperação ou aplicar vários ajustes. Confira a página de manual do CTDB [4] para mais informações. O script onnode é uma ferramenta muito útil que permite executar comandos em um ou múltiplos nós:

Figura 4 O comando smbstatus mostra as conexões de todos os nós do cluster.

onnode nó[,nó...] comando

O onnode obtém os detalhes do nó a partir do arquivo /etc/ctdb/ nodes. O alvo pode ser um ou múltiplos números de nó, ou uma faixa de números, ainda todos os nós (all), os nós conectados (con), os nós saudáveis (ok) ou o mestre de recuperação (rm). O onnode usa o SSH para se conectar aos nós; por-

OSPRE

R

Linux Magazine #60 | Novembro de 2009

Linux Professional Institute

www.lpi-brasil.org

© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).

63


REDES  | Samba

tanto, logins por SSH sem senha são uma boa ideia na rede interna do CTDB. Usando o onnode, o administrador pode facilmente colocar arquvios de configuração nos nós ou instalar o mesmo pacote de software após armazenar os dados no sistema de arquivos do cluster: onnode all cp /shared/smb.conf /etc/samba/smb.conf

Como o onnode só precisa fazer referência aos arquivos dos nós, é possível usá-lo para iniciar o ctdbd em todos os nós (ou apenas alguns): onnode 0,2-5 service ctdb start

Para mais informações, confira a página de manual do onnode [4].

Ouvintes

Para garantir operações de monitoramento e failover sem problemas, é importante não usar os parâmetros de configuração interfaces ou bind interfaces only para restringir os IPs ou interfaces de rede nos quais o Samba deve escutar. O monitoramento de serviço do Samba exige que o Samba escute no endereço curinga 0.0.0.0, ou :: no caso do IPv6. A listagem 2 mostra um exemplo de arquivo de configuração do Samba que o administrador distribuiria para todos os nós do cluster. O comando smbstatus exibe as conexões de todos os nós do cluster. Para isso, ele não apenas lista os IDs dos processos do smbd como também mostra seus prefixos de número do nó (figura 4). De forma semelhante, os administradores podem influenciar os daemons do Samba ao longo do cluster por meio do smbcontrol. Ao usar um cluster Samba, não faz algum sentido utilizar o nome NetBIOS do serviço, nmbd, em múl-

tiplos nós – o broadcast sofreria de personalidade múltipla. Além disso, o serviço WINS não é capaz de lidar com clusters porque o Samba não trata bancos de dados wins.dat com o CTDB.

Conclusão

Pela primeira vez, e sob a única condição de ter um sistema de arquivos de cluster que passe no teste do ping-pong, o Samba 3.3, em com-

binação com o CTDB, oferece um cluster CIFS altamente escalável e fácil de instalar para uso em produção sem necessidade de patches e “gambiarras”. Após a configuração básica, a configuração baseada em registros e o script onnode tornam a administração do cluster uma tarefa aprazível. Consulte os links deste artigo para mais informações sobre o novo sistema de configuração baseado em registros do Samba.  n

Mais informações [1] Samba: http://www.samba.org [2] Equipe do Samba: http://www.samba.org/samba/team/ [3] Microsoft entrega documentação do protocolo: http://www.samba.org/samba/PFIF/ [4] Projeto CTDB: http://ctdb.samba.org/ [5] Princípios de locking de arquivos (Wikipédia em inglês): http://en.wikipedia.org/wiki/File_locking [6] TDB: http://tdb.samba.org [7] Repositório do CTDB de Ronnie Sahlberg: git://git.samba.org/sahlberg/ctdb.git [8] Samba e clusters: http://wiki.samba.org/index.php/Samba_&_Clustering [9] Andrew Tridgell e Ronnie Sahlberg, “Samba em cluster”, na linux.conf.au 2008: http://mirror.linux.org.au/pub/ linux.conf.au/2008/slides/178-tridge-ctdb.pdf [10] Samba via Git: http://wiki.samba.org/index. php/Using_Git_for_Samba_Development [11] Interface web do repositório Git do Samba: http://git.samba.org [12] Mirror do repositório git: http://repo.or.cz/w/Samba.git [13] RPMs do CTDB para RHEL: http://ctdb.samba.org/packages/ [14] RPMs do CTDB para outras distribuições: http://download.opensuse.org/repositories/home:/iamobnox/

Gostou do artigo? Queremos ouvir sua opinião. Fale conosco em cartas@linuxmagazine.com.br Este artigo no nosso site: http://lnm.com.br/article/3110

64

http://www.linuxmagazine.com.br

© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).


Quer falar com os 20.000 profissionais de TI com maior nível de conhecimento técnico do mercado nacional? Então anuncie na Linux Magazine!

Segundo dados do Instituto Verificador de Circulação*, a Linux Magazine está posicionada entre as três revistas mais vendidas no segmento de TI do mercado editorial brasileiro. Além disso, é a revista que tem o público mais qualificado no quesito técnico. Nossa combinação exclusiva de conteúdo avançado com uma abordagem prática faz da Linux Magazine a publicação preferida de quem toma decisões e faz recomendações para compra de produtos e contratação. Anuncie conosco e fale com esse público. Para anunciar, entre em contato: anuncios@linuxmagazine.com.br 11 4082.1300 *Comparação de circulação para os últimos três meses de publicações nacionais voltadas ao segmento de TI.

© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).


Sua aplicação web é segura?

SEGURANÇA

Aplicação web protegida Aplicações web oferecem grandes riscos à segurança. Aprenda a proteger todos os elementos dessa complexa equação. por Celio de Jesus Santos e Cloves Ferreira Junior

A

construção de sites dinâmicos se tornou muito comum com o decorrer dos tempos, trazendo inúmeras vantagens para as empresas e sendo utilizada como uma poderosa ferramenta de marketing. Porém, isso pode se converter em um problema caso o site ou a aplicação não seja desenvolvido com as devidas preocupações relacionadas à segurança da informação. Ao se tratar de algo voltado para a Internet, esse site estará exposto para quem quiser acessá-lo, ou seja, se torna público e sua segurança é colocada à prova por qualquer pessoa que queira testar o nível de proteção, independentemente de sua índole. Todas as linguagens de programação têm suas particularidades, mas no decorrer deste artigo trabalharemos com a linguagem PHP, pois é a base da maioria dos sites existentes atualmente.

Ataques de sessão

A definição para este tipo de problema está relacionada à má implementação das conexões realizadas pelos usuários a uma determinada aplicação que necessita rastrear as requisições destes ou tomar decisões com base nas credenciais de autenticação [1].

Os danos causados por esse tipo de ataque vão desde a elevação de privilégios até o roubo de informações de usuários e o comprometimento dos dados da aplicação uma vez que o atacante consiga elevar os privilégios de um usuário vítima e obtenha acesso por meio de um usuário com privilégios administrativos. Como exemplo, poderíamos utilizar um cookie, um campo oculto etc., mas vamos partir de uma página que recebe pela URL as credenciais de um usuário já autenticado: http://site.com.br/pagina. php?usuario=bob&nivel=1

A listagem 1 ilustra como seria o código-fonte de pagina.php que foi codificado sem a preocupação com a alteração indesejável dos dados por um usuário que detém algum conhecimento sobre aplicações web. Note que este código recebe os dados vindos do usuário e implementa uma consulta em uma base de dados para uma possível decisão futura de acordo com o retorno da consulta. Isso significa que se aplicarmos os truques que caracterizam esse tipo de ataque – isto é, alterar as credenciais de um usuário válido

por meio da URL –, conseguiríamos sucesso: http://site.com.br/pagina. php?usuario=alice&nivel=1

Com isso, o usuário da aplicação conseguiria visualizar uma página montada dinamicamente, mas que pertence a outro usuário da aplicação (no caso, alice). A partir desse ponto, ele poderia fazer tudo o que a aplicação permite ao usuário alice. Para evitar esse tipo de problema, o ideal é não armazenar essas credenciais de usuário no lado do cliente, mas em um objeto session no lado servidor. Para implementar essa solução nesse ambiente de exemplo, bastaria armazenarmos um hash das credenciais do usuário em um objeto session no lado servidor no momento da autenticação e em todas as páginas que necessitassem dessas credenciais. Antes de executar qualquer ação com as credenciais fornecidas ao programa atual, o servidor faria uma comparação entre o hash informado e aquele armazenado no lado servidor. Vejamos na listagem 2 como podemos implementar esta solução. Trata-se de um trecho do código do

66

http://www.linuxmagazine.com.br

© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).


Aplicações web | SEGURANÇA

programa autentica.php, que cria o hash das credenciais com a função md5() do PHP no momento da autenticação e a armazena em uma variável de sessão (objeto SESSION). Na linha 1 da listagem 2, iniciamos o objeto de sessão. Na sequência, verificamos se houve sucesso na autenticação do usuário e, em caso positivo, o hash é armazenado em uma variável da sessão. Agora vamos verificar como ficaria a codificação da validação das credenciais informadas ao programa pagina.php na listagem 3. Esse código implementa uma validação com os dados recebidos por meio da comparação dos hashes. Com o sucesso da validação, é executado o restante do script; caso contrário, pode-se informar o erro ao usuário ou redirecioná-lo para uma nova tentativa de autenticação. É importante implementar outras alternativas, como a proteção dos parâmetros passados via URL, a criptografia das informações de tokens etc.

Cross-site scripting (XSS)

dados da aplicação como no caso da injeção de SQL, mas explorar vulnerabilidades do próprio navegador do usuário com a execução de scripts maliciosos em JavaScript, VBScript, ActiveX etc. Outro problema potencial é o sequestro de sessão, dependendo de como forem armazenadas as credenciais de um usuário autenticado. O teste mais simples para esta vulnerabilidade é a inserção da string a seguir em uma página parametrizada por meio de uma variável, que no nosso exemplo é a variável id: http://site.com.br/pagina. php?id=<script>alert(‘XSS’); </script>

O código vulnerável que poderia receber uma string como esta é: <?php //pagina.php print $_REQUEST[“id”]; ?>

Qualquer página com um código semelhante a este está vulnerável, pois os dados são obtidos e impressos na tela sem qualquer verificação, ou seja, acreditamos ingenuamente que o usuário sempre passará dados confiáveis. Vamos imaginar um mural de recados que armazene os dados em uma tabela de banco de dados ou até mesmo em um arquivo texto. Suponhamos que o código desse mural aceite a seguinte string a seguir no lugar do texto que seria o recado: <script>for(i=0%3bi<10%3bi%2b%2b) {alert(i)%3b}</script>

O problema causado por essa string seria simples, mas emitiria dez mensagens de alerta toda vez que a página fosse carregada, como mostra a figura 1. Contudo a gravidade do problema estaria ligada à criatividade da pessoa que a fizer. Para corrigir esse problema, seria preciso alterar o arquivo pagina.php

Listagem 1: Página insegura

Ataques do tipo XSS, ou Cross-site scripting (scripts entre sites), acontecem quando a aplicação recebe dados do usuário e os envia de volta ao cliente sem as devidas validações para sua correta exibição no navegador. A técnica do XSS se caracteriza pela inserção de tags HTML, em particular a tag <script> [1]. Quando a aplicação executa a tag no navegador cliente em vez de apenas imprimir este conteúdo, os dados da sessão – incluindo informações potencialmente sensíveis do usuário – podem ser enviados para qualquer destino sem que o servidor ou o cliente percebam. Esta vulnerabilidade em uma aplicação pode causar sérios danos para seu usuário, uma vez que o foco não é acessar ou manipular

01 02 03 04 05 06 07 08 09 10 11 12

<?php /*Dados do formulário*/ $usuario = $_REQUEST[“usuario”]; $nivel = (int)$_REQUEST[“nivel”]; /*montando a Query*/ $sql =”SELECT * FROM tabela WHERE usuario = ‘”.$usuario.”’ AND nivel = “.$nivel; $rs = mysql_query($sql);

Listagem 2: Segurança na autenticação 01 <?php 02 /*autentica.php*/ 03 session_start(); ... 16 /*Sucesso na autenticação*/ 17 if ($autenticado){ 18 $_SESSION[“hash”]=md5($usuario.””.$nivel); 19 } 20 21 ?>

67

Linux Magazine #60 | Novembro de 2009

© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).


SEGURANÇA  | Aplicações web

:<?php //pagina.php print htmlentities($_ REQUEST[“id”], ENT_QUOTES); ?>

e também o mural.php, responsável por exibir o mural de recados: <?php //mural.php . . . print htmlentities($dados[“recado”], ENT_QUOTES); ?>

Esta solução foi utilizada com a função do PHP que faz uma conversão dos dados para entidades HTML, htmlentities(), mas também podemos utilizar outra função chamada strip_tags(), ou até mesmo expressões regulares.

No caso do XSS, a aplicação deve garantir que somente o seu próprio código seja executado, impedindo que os usuários insiram códigos arbitrários. Isso evita que a aplicação tenha seu comportamento alterado, o que pode prejudicar o acesso do usuário à aplicação.

Falhas de autenticação

A autenticação de usuários é uma das primeiras partes de uma aplicação web a ser testada por alguém que deseja verificar seu nível de segurança. Portanto, é fundamental usar códigos seguros – preocupe-se até com os mínimos detalhes envolvidos no ato do desenvolvimento. Este problema envolve falhas no mecanismo de autenticação da aplicação, que por um motivo ou outro não foi bem codificado ou não recebeu a devida atenção com relação à gerência da pós-autenticação, talvez até mesmo por imaturidade do desenvolvedor. Os danos causados por esse tipo de pro-

Listagem 3: Validação das credenciais 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25

<?php /*Iniciando a sessão*/ session_start(); /*Dados do formulário*/ $usuario = $_REQUEST[“usuario”]; $nivel= (int)$_REQUEST[“nivel”]; /*Obetendo os hashes atuais*/ $hash = md5($usuario.””.$nivel); /*verifica se os hashes são iguais*/ if(strcmp($_SESSION[“hash”], $hash) == 0){ /*montando a Query*/ $sql = “SELECT * FROM tabela WHERE usuario = ‘”.$usuario.”’ AND nivel = “.$nivel; $rs = mysql_query($sql); } else { /*requer autenticação novamente*/ header(“Locarion: login.php”); } ?>

blema incluem o roubo de contas de usuários, o que caracteriza a violação de privacidade. O primeiro cuidado que o desenvolvedor deve tomar para evitar ataques de falha de autenticação é garantir que a tela de login seja acessada por meio de uma comunicação segura para que as credenciais informadas pelo usuário não sejam facilmente capturadas durante o transporte até o servidor web. A proteção mais prática, nesse caso, é utilizar o protocolo HTTPS para servir a página de autenticação. Outro cuidado importante é o uso de uma boa lógica para a programação do sistema de autenticação, realizando as validações necessárias para que somente sejam aceitos dados relevantes para a aplicação, como exemplifica a listagem 4. Além disso, toda aplicação fornece um link para permitir ao usuário encerrar sua sessão autenticada. Porém, também é obrigatório garantir que, se ele clicar somente no botão para fechar a janela do navegador, em vez de usar o link de encerramento da sessão, a sessão seja completamente destruída [2]. Caso isso não ocorra, é possível que o próximo usuário que utilizar a aplicação no mesmo computador encontre a sessão já autenticada. Por isso, a aplicação deve expirar a sessão após um prazo determinado sem utilização para garantir que a sessão do usuário não fique exposta. O código abaixo (arquivo logoff. php) realiza todas essas operações de uma só vez: <?php //logof.php unset($_SESSION); ?>

Um ponto importante que também está relacionado à autenticação é o bloqueio da conta do usuário em casos de múltiplas falhas de autenticação num intervalo pré-deter-

68

http://www.linuxmagazine.com.br

© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).


Aplicações web | SEGURANÇA

minado. Isso evita ataques de força bruta, frequentemente ignorados pelos desenvolvedores web, porém extremamente perigosos. Com relação à comunicação da aplicação web com o usuário, é fundamental que este seja notificado sobre qualquer incidente que ocorra com relação à sua conta de usuário. Os cuidados citados não dependem da linguagem utilizada do lado servidor, mas do uso de alguns truques para evitar esses problemas que estão diretamente ligados à boa gerência da sessão autenticada.

Servidor assegurado

Por se tratar da parte que fica exposta à Internet, o servidor web também precisa estar protegido; suas configurações devem fornecer apenas o necessário para que a aplicação funcione. Esse trabalho não cabe ao desenvolvedor, mas é necessário algum conhecimento sobre o assunto, pois a segurança da aplicação pode ser comprometida caso seja explorada alguma falha de segurança por parte do servidor web e vice-versa. Isso significa que a segurança não deve estar localizada somente no servidor web ou somente na aplicação, mas em ambos.

Figura 1 Um “ataque” de exemplo seria a inclusão de código para exibir dez avisos no navegador do cliente.

Os principais cuidados que devem ser tomados no ato da configuração de um servidor web são descritos a seguir.

Menor privilégio

O princípio do menor privilégio dita que o serviço HTTP deve ser executado com uma conta do sistema operacional que não tenha privilégios de administrador, mas apenas os privilégios necessários para a execução deste serviço. Para isso, o correto é criarmos um grupo de usuários com o nome do serviço e um usuário com o mesmo nome – e evidentemente pertencente a esse grupo – no sistema operacional com os privilégios mínimos. No caso do Apache, todas as distribuições responsáveis já criam um usuário apache e um grupo apache, responsáveis por executar o servidor web. O usuário apache não precisa sequer acessar um shell, então é seguro

definir seu shell padrão como /bin/ false, por exemplo. O usuário e o grupo, depois de criados, devem ser informados no arquivo de configuração do apache, httpd.conf: User apache Group apache

Com esse procedimento, garantimos que o serviço HTTP seja executado com o menor privilégio possível [1].

Serviços necessários

Também é muito importante executar no servidor somente os serviços necessários ao bom funcionamento da aplicação web. Com isso, eliminam-se várias fontes potenciais de insegurança,

Log robusto

O log do serviço HTTP deve ser o mais detalhado possível, pois é por meio dele que conseguiremos idenCAVA

VIA GR S CAVALO DE TR ÓIA PHIS HING VÍR US CAVALO DE TRÓVÍR VIAGRA IA

LO D E

TRÓ

SPAMs?

IA

FRAUDE

Saiba como importantes empresas estão solucionando este problema

(11) 3522-3011 www.unodata.com.br

Linux Magazine #60 | Novembro de 2009

Baseado em software livre Filtro de Entrada e Saída Eficiente sem descartar mensagens importantes Flexível e customizável Clientes 100% satisfeitos

Acesse www.unodata.com.br e veja nossos casos de sucesso. © Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).

PHIS

HING

ES FRAUD

30 D GRÁ IAS TIS! 69


SEGURANÇA  | Aplicações web

Listagem 4: Lógica de validação robusta 01 <?php 02 //autentica.php 03 session_start(); 04 include (“includes/conexao.php”); 05 //Recebendo as credenciais e escapando aspas e removendo 06 //qualquer tag de script e tentativas de injeção de sql 07 $login = addslashes(strip_tags(filtroSql($_POST[“login”]))); 08 $senha = $_POST[“senha”]; 09 //Verificando se existe caracteres inválidos para o login 10 if (!ctype_alnum($login)){ 11 die(“Caracteres Inválidos!”); 12 } 13 //Query com um hash da senha e comparada com o hash armazenado. 14 $sql = “SELECT id, 15 login 16 FROM usuarios 17 WHERE login = ‘”.$login.”’ AND 18 senha = ‘”.md5($senha).”’ “; 19 //Executando a query e suprimindo qualquer possível erro 20 $rs = @mysql_query($sql); 21 //Sucesso na execução da query 22 if($rs){ 23 //Evitando que uma possível alteração de query 24 //traga mais registros que o esperado. 25 if(mysql_num_rows($rs) == 1){ 26 $dados = mysql_fetch_array($rs); 27 $_SESSION[“autenticado”] = true; 28 $_SESSION[“login”] = $dados[“login”] ; 29 //Aqui pode redirecionar para a página que se deve 30 //acessar com autenticação 31 header(“Location: home.php”); 32 } 33 else{ 34 die(“Login e/ou senha inválidos!”); 35 } 36 } 37 else{ 38 die(“Falha na execução da query!”); 39 } 40 //Filtro para remoção de caracteres que possivelmente 41 //são usados para tentativas de sql injection 42 function filtroSql($tempString){ 43 $badChars = array(“select”, “drop”, “table”, “;”, “--”, “insert”, “delete”, “update”, “xp_”, “#”, “%”, “&”, “’”, “(“, “)”, “/”, “:”, “;”, “<”, “>”, “=”, “[“, “]”, “?”, “`”, “|”); 44 foreach ($badChars as $char) { 46 $tempString = str_replace($char, “”, $tempString); 47 } 48 return $tempString; 49 } 50 51 ?>

tificar se a aplicação está sofrendo tentativas de ataque ou se houve algum ataque bem sucedido [1]. Além da grande importância dos logs HTTP, as mensagens de log dos demais servidores da sua rede devem ser centralizadas em uma única máquina, um servidor de log. Isso

facilita o gerenciamento, a análise e a solução de problemas ocorridos em toda a rede de uma forma geral. Mais importante ainda é que qualquer invasão ao servidor será incapaz de apagar seus próprios rastros, pois estes serão enviados imediatamente para o servidor de log [3].

Cuidado com o PHP

Em relação ao servidor de aplicação – PHP + Apache, nos exemplos deste artigo –, também há alguns cuidados que devemos tomar ao configurar o PHP. Em primeiro lugar, por questões de segurança e desempenho, o ideal

70

http://www.linuxmagazine.com.br

© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).


Aplicações web | SEGURANÇA

é que o PHP seja executado como um módulo do servidor web, e não no modo CGI [4]. Além disso, deve-se desativar as variáveis superglobais: register_globals = Off

Executar o PHP no modo seguro (safe_mode) também é uma medida importante de segurança: safe_mode = Off

Deve-se ainda limitar o acesso do PHP aos arquivos com a opção open_basedir: open_basedir = /home/www/

Recomenda-se definir nessa diretiva o mesmo diretório usado como document root pelo servidor web (/ home/www/, no nosso exemplo). Assim, a aplicação só terá acesso à leitura dos arquivos que estiverem dentro do diretório raiz do servidor web; isso impede, por exemplo, que a aplicação leia o arquivo /etc/passwd do servidor.

Sem erro

Evitar que o servidor imprima mensagens de erro para os usuários também é uma medida importante, pois, uma vez que o PHP imprima mensagens de erros para um usuário, ele fornece informações importantes para um agressor dar os primeiros passos na preparação do ataque. Uma maneira de perceber esse problema antes que o pior aconteça é usar a função error_reporting() para ajudar a aumentar a segurança do código PHP e encontrar o uso de variáveis potencialmente perigosas. Ao testar seu código, antes de colocá-lo em produção, com E_ALL é possível encontrar rapidamente áreas onde as variáveis podem sofrer alterações nocivas ou outras modificações. Uma vez

que o código esteja pronto para produção, deve-se ou desabilitar mensagens de erro completamente passando-se o valor 0 para a função error_reporting(). Outra possibilidade é desligar o envio de erros com a opção display_errors no arquivo php.ini, evitando assim a sondagem do código. Nesse caso, também se recomenda definir o caminho para o arquivo de registro usando a diretiva error_log e ligar a diretiva log_errors [5].

Considerações finais

Com relação à programação de aplicações web, a solução para cada problema demonstrado neste artigo recai sobre algum tipo de tratamento dos dados recebidos pela aplicação. É necessário sem-

pre fazer uma forte validação dos dados fornecidos. Outro ponto importante é que não devemos atribuir certos problemas a uma determinada linguagem de programação caso não tenham sido levadas em consideração as boas práticas de codificação para o desenvolvimento de uma aplicação. Portanto, podemos concluir que a preocupação com a segurança da informação deve existir desde a fase de planejamento do sistema, assim como em projeto de software. Em conclusão, é importante ressaltar que o uso destas técnicas para reforçar a segurança da aplicação web e seu respectivo servidor não substitui os outros mecanismos tradicionais de proteção de redes, como firewall, IDS e IPS.  n

Mais informações [1] Mike Shema, “Hack Notes – Segurança na Web”. Editora Campus, 2003. [2] Comunidade OWASP-BR: http://www.owasp.org/images/4/42/OWASP_TOP_10_2007_PT-BR.pdf [3] Guia Foca Linux: http://focalinux.cipsga. org.br/guia/avancado/ch-log.html [4] Carlos Sica, Peter Villa Real, “Programação Segura Utilizando PHP”. Editora Ciência Moderna, 2007. [5] PHP: http://www.php.net [6] Comunidade OWASP: http://www.owasp.org/index.php/Main_Pag

Sobre o autor Célio de Jesus Santos é graduado em Sistemas da Informação e especialista em Segurança da Informação. É professor na Universidade Estadual de Goiás e coordenador de desenvolvimento em uma empresa privada. Cloves Ferreira Junior é mestre em Ciências da Computação pela Universidade Federal de Pernambuco. É professor titular da Universidade Salgado de Oliveira e professor titular do Centro Federal de Educação Tecnológica de Goiás.

Gostou do artigo? Queremos ouvir sua opinião. Fale conosco em cartas@linuxmagazine.com.br Este artigo no nosso site: http://lnm.com.br/article/3115

71

Linux Magazine #60 | Novembro de 2009

© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).


PROGRAMAÇÃO

O que há de novo no Python 3

A próxima serpente O que os programadores de Python 2.x precisam saber sobre o Python 3. por Rainer Grimm

C

om a última versão principal do Python, seu criador, Guido van Rossum, viu a oportunidade de fazer uma faxina em sua famosa linguagem de programação. Quais as novidades do Python 3? Este artigo destaca alguns pontos para os programadores que pensam em migrar para o Python 3.x. O primeiro ponto importante é que a versão 3.0, também conhecida como Python 3000 ou Py3k, rompeu com uma velha tradição de compatibilidade. De acordo com Guido, “Não é necessário que um código escrito em Python 2.6 rode sem modificações no Python 3.0”.

O principal objetivo do Python 2.6 é eliminar os problemas da mudança de versões. Vários recursos do Python 3.0 foram portados para o Python 2.6 (da mesma forma, o Python 2.7 acompanha o Python 3.1 recém-lançado). Além das versões de transição 2.x, o aplicativo 2to3 suporta a migração de código do 2.x para o 3.x.

Problemas

O Python tinha alguns problemas que incomodavam van Rossum desde o começo do milênio. No Python 3, ele decidiu sacrificar a compatibilidade para remover esses obstáculos. A diferença mais flagrante é a

mudança da sintaxe de print, que passa a ser uma função; desse modo, os parâmetros – agora chamados de keywords, ou palavras-chave – vêm entre parênteses. Isso segue a linha do “Zen do Python” (The Zen of Python, de Tim Peters): “Explícito é melhor que implícito” [1]. A nova sintaxe de print é: print(*args, sep=’ ‘, end=’\n’, file=sys.stdout)

em que args são os parâmetros, sep o separador de parâmetros, end o caractere de quebra de linha e file o arquivo de saída.

72

http://www.linuxmagazine.com.br

© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).


Python 3 | PROGRAMAÇÃO

A tabela 1 lista as mudanças sintáticas da função print, incluindo seus valores padrão. A vantagem da nova versão não é óbvia até que a examinemos de perto; a nova função print agora suporta a sobrecarga. A Listagem 1 mostra uma função print que escreve na saída padrão e num arquivo de log simultaneamente. Para permitir isso, a função utiliza a função embutida __builtins__.print. Fazer somente o absolutamente necessário é uma virtude de muitas linguagens de programação. O Python 3 enfatiza bem mais a “avaliação preguiçosa”, do inglês lazy evaluation. Listas, dicionários e blocos funcionais do Python não geram mais listas completas, mas apenas permitem a avaliação da saída. A avaliação preguiçosa, portanto, poupa tempo e memória. O interpretador Python consegue isso retornando apenas um contexto iterável que gera valores sob demanda (é essa a distinção entre range e xrange no Python 2). No Python 3, range age como xrange, tornando a função xrange redundante. O mesmo se aplica às funções map, filter e zip, as quais foram substituídas por equivalentes da biblioteca itertools. Nos dicionários, os contextos iteráveis resultantes são conhecidos como views. No entanto, se o programador precisar da lista expandida, o simples encapsulamento do contexto iterável por meio do construtor list pode resolver: list(range(11)) produz [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10].

Divisão

A igualdade 1/2 == 0 choca qualquer novato em Python. Essa característica incomum se deve às raízes C do Python, porém a versão 3 acabou com essa peculiaridade, diferenciando a verdadeira divisão da divisão floor. Enquanto na verdadeira divisão 1/2 == 0.5, a divisão floor funciona como no Python 2. A notação da divisão floor usa duas barras: 1//2 == 0.

Tabela 1: Sintaxe da função print() Exemplos

Python 2

Python 3

Forma genérica

print “x =”, 5

print(“x =”, 5)

Criar nova linha

print

print()

Suprimir nova linha

print x,

print(x, end=””)

Suprimir nova linha sem espaços Redirecionar saída

print(1,2,3,4,5, sep=””) print >> sys.stderr, “fatal error”

print(“fatal error”, file=sys.stderr)

Tabela 2: Strings em Python 2 e 3 Tipo de string

Python 2.x

Python 3.0

String de 8 bits

“string”

b”string”

String Unicode

u”string”

“string”

No Python 2, o programador tinha que declarar strings explicitamente como strings Unicode, enquanto que no Python 3 as strings são implicitamente Unicode. Só há diferenciação entre texto e dados. Texto (str) está relacionado a strings e é o mesmo que as strings Unicode do Python 2.

Já os dados (bytes) são strings de 8 bits, iguais às strings do Python 2. Os desenvolvedores do Python 3 precisam declarar os dados: b”string_ascii_de_8_bits”. A tabela 2 mostra as diferenças entre Python 2 e 3. As funções str.encode() e bytes. decode() possibilitam a conversão

Listagem 1: Sobrecarga da função print 01 02 03 04

import sys def print(*args,sep=’’,end=”\n”,file=sys.stdout): __builtins__.print(*args) __builtins__.print(*args,file=open(“log.file”,”a”))

Listagem 2: Bloco with com arquivo 01 02 03 04

with open(‘/etc/passwd’, ‘r’) as file: for line in file: print line, # o arquivo é fechado

Listagem 3: Proteção de um bloco de código 01 02 03 04 05 06 07 08 09 10

with locked(myLock): # Este código é executado com myLock ativado. O # lock certamente será liberado ao fim do bloco. class locked: def __init__(self, lock): self.lock = lock def __enter__(self): self.lock.acquire() def __exit__( self, type, value, tb): self.lock.release()

73

Linux Magazine #60 | Novembro de 2009

© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).


PROGRAMAÇÃO  | Python 3

Listagem 4: Modo de importação 01 02 03 04

try: import cPickle as pickle except ImportError: import pickle

Listagem 5: Código a ser portado 01 print “soma dos inteiros: “, apply(lambda a,b,c: a+b+c , (2,3,4)) 02 print “fatorial de 10 :”, reduce(lambda x,y: x*y, range(1,11) ) 03 print “titulos em texto: “, filter( lambda palavra: palavra .istitle(),”Que teste mais Comprido”.split()) 04 print “titulos em texto: “, [ palavra for palavra in “Que teste mais Comprido”.split() if palavra.istitle()]

entre tipos de dados, conversão essa necessária no Python 3 quando se trabalha com dois tipos de dados. Como a conversão implícita não ocorre mais, a decisão cabe aos programadores.

Mudanças sintáticas

Agora, a anotação de funções no Python 3 permite que os programadores liguem metadados às funções. Os decoradores podem ser usados

nas funções em uma segunda etapa e geram dados automaticamente a partir dos metadados ou verificam o tipo em tempo de execução. As funções equivalentes, sumOrig e sumMeta (figura 1), mostram declarações de funções com e sem metadados. A segunda função inclui metadados para o valor de retorno e assinatura. Esses metadados podem ser referenciados com o atributo __annotations__ da função.

Figura 1 As anotações de funções atribuem metadados a uma função.

Figura 2 Falha de instanciação.

Backports

O único propósito do Python 2.6 é facilitar a migração para a versão 3, então muitos recursos do Python 3 foram portados para o Python 2.6. O gerenciamento de recursos com uso do with é um aspecto importante do Python 2.6. Um recurso (arquivo, socket, mutex...) é automaticamente usado na entrada e liberado na saída do bloco with. Os programadores de C++ se lembrarão do princípio RAII (Resource Acquisition Is Initia­ lization, ou Aquisição de Recurso é Inicialização), que dita que um recurso está ligado a um objeto. Do ponto de vista do usuário, with funciona como try … finally, pois tanto o bloco try quanto o finally são sempre executados. Tudo ocorre sem manipulação de exceções. Como funciona isso? Em um bloco with, é permitido usar qualquer objeto fornecido pelo protocolo de gerenciamento de contexto – isto é, aqueles que possuem os métodos internos __enter()__ e __exit()__. Ao entrar em um bloco with, o método __enter()__ é automaticamente chamado, assim como __exit()__ na saída. Apesar de o objeto do tipo arquivo já trazer esses métodos (listagem 2), escrever o código de gerenciamento de recursos é fácil. Uma aplicação clássica seria a proteção de um bloco de código contra acessos simultâneos. A listagem 3 mostra isso com blocos de exemplo. A classe de objetos locked impede o acesso simultâneo ao bloco with, pois utiliza myLock para sincronizar o bloco. Se isso for trabalhoso demais, use o decorador contextmanager da nova biblioteca contextlib [2] e aproveite a funcionalidade de seu gerenciamento de recursos. Muitas outras aplicações estão listadas na Python Enhance­ ment Proposal (PEP – Proposta de Melhoria do Python) 0343 [3].

74

http://www.linuxmagazine.com.br

© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).


Python 3 | PROGRAMAÇÃO

Abstração

A maior novidade sintática é a introdução das classes básicas abstratas. Anteriormente, a possibilidade de usar um objeto num contexto dependia de suas propriedades e não das especificações formais de sua interface. O termo usado para isso é duck typing, originário de um poema de James Witcomb Riley (“Quando vejo uma ave que anda como um pato, nada como um pato e grasna como um pato, eu a chamo de pato”). Se uma classe contém um método abstrato, ela se torna uma classe básica abstrata e não pode ser instanciada. Classes derivadas só podem ser criadas se implementarem esses métodos abstratos. No Python, as classes básicas abstratas funcionam como em C++, em que os métodos abstratos podem conter uma implementação. Além dos métodos abstratos, o Python também usa propriedades abstratas. As classes básicas abstratas são usadas nos módulos num­ bers [4] e collections [5]. Isso leva a uma questão: quando é que uma classe se torna uma classe abstrata? A classe precisa da metaclasse ABC­ Meta. Depois, os métodos podem ser declarados como @abstractmethod e as propriedades como @abstactproperty usando os decoradores

Figura 3 Novo atributo traceback para exceções.

Figura 4 A avaliação direta da entrada por meio do comando input não é mais suportada pelo Python 3.

correspondentes. Além disso, o uso de classes básicas abstratas significa a entrada da tipagem estática em uma linguagem que usa a tipagem dinâmica. No exemplo da figura 2, a classe Cygnus não pode ser instanciada, pois não implementa o método abstrato quack().

Múltiplos processadores A resposta do Python a arquiteturas de multiprocessadores é a nova biblioteca multiprocessing [6]. Esse

módulo imita o conhecido módulo threading, mas, em vez de gerar uma thread, cria um processo e faz isso independentemente da plataforma. O módulo multiprocessing tornouse necessário porque o CPython, implementação padrão do Python, só era capaz de rodar uma única thread em seu interpretador. Esse comportamento é ditado pelo Global Interpreter Lock (GIL) [7]. Assim que os decoradores de classe [8] terminam a lista do Python, é possível decorar tanto classes quanto funções.

Listagem 6: Remoção do aviso de desuso 01 02 03 04 05

print “soma dos inteiros: “ , (lambda a,b,c: a+b+c)(*(2,3,4)) import functools print “fatorial de 10 :”, functools.reduce(lambda x,y: x*y, range(1,11) ) print “titulos em texto: “, filter( lambda palavra: palavra.istitle(),”Que teste mais Comprido”.split()) print “titulos em texto: “, [ palavra for palavra in “Que teste mais Comprido”.split() if palavra.istitle()]

Listagem 7: Código portado para Python 3.0 01 print(“soma dos inteiros: “, (lambda a,b,c: a+b+c)(*(2,3,4))) 02 print(“fatorial de 10 :”, reduce(lambda x,y: x*y, list(range(1,11)) )) 03 print(“titulos em texto: “, [palavra for palavra in “Que teste mais Comprido”.split() if palavra.istitle()]) 04 print(“titulos em texto: “, [ palavra for palavra in “Que teste mais Comprido”.split() if palavra. istitle()])

75

Linux Magazine #60 | Novembro de 2009

© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).


PROGRAMAÇÃO  | Python 3

Figura 7 O gerador de código 2to3 possui muitas opções.

Figura 5 Passos recomendados para migrar código do Python 2.6 para 3.0.

O Python 3.0 também possui uma nova biblioteca de I/O [9]. O tipo string ganhou o novo método format() [10] para formatação mais avançada. Ao mesmo tempo, o antigo operador de formatação , %, está em desuso no Python 3.1.

Faxina

Onde quer que ocorram mudanças, também é necessário livrar-se de alguns pesos. Isso diz respeito

a algumas bibliotecas que foram removidas, re-empacotadas ou que co-existem nas implementações em C e Python. O popular comportamento no Python de primeiro importar a implementação rápida de um módulo em C e depois recorrer à implementação em Python caso o primeiro falhe (listagem 4) não é mais necessário. O Python agora faz isso automaticamente. Mais detalhes sobre as mudanças da biblioteca padrão encontramse em [11]. Todas as exceções devem derivar de BaseException, o que significa, em particular, que exceções de strings não são mais suportadas. O objeto de exceção agora possui o novo atributo __traceback__, que contém o histórico (também conhecido como traceback) da exceção. A técnica para chamar e usar exceções com parâmetros mudou. Os programadores agora podem disparar exceções com parâmetros usando raise BaseException(args) e usá-las com except BaseException as variable (figura 3).

Figura 6 A opção do Python 3 na versão 2.6 indica problemas com o porte.

O Python 3 ainda inclui outras mudanças que facilitam a vida do programador. Por exemplo, nas chamadas super cooperativas, não é mais necessário dar nome à classe instanciada e à classe já nomeada. As classes que utilizavam o estilo antigo, em desuso há algum tempo, não existem mais no Python 3.0, o que acaba com a necessidade de derivar de object para usar os novos recursos do Python. A avaliação direta da entrada por meio do comando input() não é mais suportada, pois ela fica disponível como uma string de entrada, o que elimina uma brecha de segurança crítica (figura 4). Usou-se a lógica e renomeou-se a função raw_input() para input() ao se remover a segunda. Logicamente, nenhuma descrição dos novos recursos esgota o assunto. Para saber mais, confira o documento de referência de Guido, “What’s New In Python 3.0” [12].

Portando para Py3k

Há um claro caminho para portar código do Python 2 para o 3 (figura 5), mas é preciso testar o código e eliminar as falhas em cada etapa. As quatro linhas de código da listagem 5 servem como exemplo de migração do Python 2 para o 3. Todas elas definem componentes funcionais do Python. A primeira função calcula a soma de três números, 2, 3 e 4, aplicando esses argumentos à

76

http://www.linuxmagazine.com.br

© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).


Python 3 | PROGRAMAÇÃO

função Lambda. A função interna reduce reduz sucessivamente a lista de todos os números de 1 a 10 multiplicando os resultados da última multiplicação pelo próximo número da sequência. As duas últimas funções filtram palavras, começando pela filtragem de letras em caixa-alta de uma string. O código funciona no Python 2.6 e bastam os passos 3 e 4 para realizar o porte. O código-fonte desse exemplo se encontra em um arquivo chamado port.py. Chamar o interpretador do Python 2.6 com a opção -3 (figura 6) mostra as incompatibilidades com a versão 3: as funções apply e reduce não são mais funções internas do Python 3. O código é facilmente corrigido (listagem 6), acabando assim com os avisos de desuso. O gerador de código 2to3 é muito útil para corrigir códigos do Python 2, sendo que seu último passo é produzir o código para as versões 3.0 e 3.1 automaticamente. A ferramenta oferece várias opções para isso (figura 7). A técnica direta é sobrescrever o arquivo original: 2to3 port.py -w. O resultado é o código-fonte portado para Python 3.0 (listagem 7).

Quando Mudar

Originalmente, o Python 3.0 enfatiza os recursos, o que significa que ele é 10% mais lento que o Python 2. A otimização necessária ocorreu no Python 3.1 [13], a qual diz respeito à manipulação especial de números inteiros pequenos. Além disso, a biblioteca de I/O do Python 3.1 é implementada em C, o que a torna entre duas e vinte vezes mais veloz. A decodificação dos caracteres UTF8, UTF-16 e ISO-8859-1 é entre duas e quatro vezes mais rápida. Se você ainda está esperando o porte das bibliotecas externas do Python, não há motivo para migrar seu código para o Python 3; Guido van Rossum também recomenda [14] que você

não escreva seu código para rodar no Python 2.6 e no Python 3 sem modificações. É preferível manter o código-fonte como um código do Python 2.6 e então usar ferramentas

automáticas para portá-lo para Python 3.0 ou 3.1. Christopher Neugebauer deu a sugestão ideal sobre o Python 3000 em seu vídeo: “Aprenda o 2.6, mas tenha o 3000 em mente”.  n

Mais informações [1] Tim Peters, “The Zen of Python”: http://www.python.org/dev/peps/pep‑0020 [2] Biblioteca contextlib: http://docs.python.org/3.0/library/contextlib.html#modue‑contextlib [3] PEP 0343: http://www.python.org/dev/peps/pep‑0343 [4] Biblioteca numbers: http://docs.python.org//3.0/ library/numbers.html#module‑numbers [5] Biblioteca collections: http://docs.python.org/3.0/ library/collections.html#module‑collection [6] Módulo multiprocessing: http://docs.python.org/3.0/ library/multiprocessing.html#module‑multiprocessing [7] GIL: http://docs.python.org/c‑api/init. html#thread‑state‑and‑the‑global‑interpreter‑lock [8] Decoradores de Classes: http://www.python.org/dev/peps/pep‑3129 [9] Biblioteca I/O: http://docs.python.org/3.0/library/io.html#module‑io [10] Método de formatação de string: http://docs.python.org/3.0/whatsnew/2.6.html#pep‑3101 [11] Mudanças nas bibliotecas: http://docs.python.org/3.0/whatsnew/3.0.html#library‑changes [12] Novidades da versão 3.0: http://docs.python.org/3.0/whatsnew/3.0.html [13] Otimização da versão 3.1: http://docs.python.org/dev/py3k/whatsnew/3.1.html#optimizations [14] Porte para a versão 3.0: http://docs.python.org/3.0/ whatsnew/3.0.html#miscellaneous‑other‑changes

Sobre o autor Rainer Grimm é desenvolvedor de software desde 1999 na Science + Computing AG em Tübingen, Alemanha. Ele dá treinamento do produto SC Venus.

Gostou do artigo? Queremos ouvir sua opinião. Fale conosco em cartas@linuxmagazine.com.br Este artigo no nosso site: http://lnm.com.br/article/3105

77

Linux Magazine #60 | Novembro de 2009

© 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 4082-1300 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

71 4062-8688

www.imtech.com.br

4 4

4 4

85 3252-3836

www.f13.com.br

4 4

4 4

Bahia IMTECH

Salvador

Av. Antonio Carlos Magalhaes, 846 – Edifício MaxCenter – Sala 337 – CEP 41825-000

F13 Tecnologia

Fortaleza

Rua Padre Valdevino, 526 – Centro

Ceará 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

4

4 4

Spirit Linux

Vitória

Rua Marins Alvarino, 150 – CEP: 29047-660

27 3227-5543

www.spiritlinux.com.br

4

4 4

4 4

4 4

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

4

4

4 4

4 4

www.microhard.com.br

4 4 4

4 4

www.turbosite.com.br

4

4 4

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

Telway Tecnologia

Curitiba

Rua Francisco Rocha 1830/71

41 3203-0375

www.telway.com.br

81 3223-8348

www.fuctura.com.br

4 4

4

4 4 4 4 4 4

Pernambuco Fuctura Tecnologia

Recife

Rua Nicarágua, 159 – Espinheiro – CEP: 52020-190

4

4

4

4 4

Rio de Janeiro Múltipla Tecnologia da Informação

Rio de Janeiro

Av. Rio Branco, 37, 14° andar – CEP: 20090-003

21 2203-2622

www.multipla-ti.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

4

4

Open IT

Rio de Janeiro

Rua do Mercado, 34, Sl, 402 – Centro – CEP: 20010-120

21 2508-9103

www.openit.com.br

4

4

Unipi Tecnologias

Campos dos Goytacazes

Av. Alberto Torres, 303, 1ºandar – Centro – CEP: 28035-581

22 2725-1041

www.unipi.com.br

4up Soluções Corporativas

Novo Hamburgo

Pso. Calçadão Osvaldo Cruz, 54 sl. 301 CEP: 93510-015

51 3581-4383

www.4up.com.br

Definitiva Informática

Novo Hamburgo

Rua General Osório, 402 - Hamburgo Velho

51 3594 3140

www.definitiva.com.br

Solis

Lajeado

Av. 7 de Setembro, 184, sala 401 – Bairro Moinhos 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

4

4

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

4

4

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

4 4

Propus Informática

Porto Alegre

Rua Santa Rita, 282 – CEP: 90220-220

51 3024-3568

www.propus.com.br

4 4 4

4 4 4

4

4 4 4 4

Rio Grande do Sul 4 4

4 4

4

4 4

4

4 4 4 4 4 4 4

4

4 4

4

4

4 4

4

4

4

São Paulo Ws Host

Arthur Nogueira

Rua Jerere, 36 – Vista Alegre – CEP: 13280-000

19 3846-1137

www.wshost.com.br

4

DigiVoice

Barueri

Al. Juruá, 159, Térreo – Alphaville – CEP: 06455-010

11 4195-2557

www.digivoice.com.br

4 4 4

4 4

Dextra Sistemas

Campinas

Rua Antônio Paioli, 320 – Pq. das Universidades – CEP: 13086-045 19 3256-6722

www.dextra.com.br

4

4 4

Insigne Free Software do Brasil Campinas

Av. Andrades Neves, 1579 – Castelo – CEP: 13070-001

19 3213-2100

www.insignesoftware.com

4

Microcamp

Campinas

Av. Thomaz Alves, 20 – Centro – CEP: 13010-160

19 3236-1915

www.microcamp.com.br

PC2 Consultoria em Software Livre

Carapicuiba

Rua Edeia, 500 - CEP: 06350-080

11 3213-6388

www.pc2consultoria.com

4

4

Savant Tecnologia

Diadema

Av. Senador Vitorino Freire, 465 – CEP: 09910-550

11 5034-4199

www.savant.com.br

4 4 4

4

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

www.go-global.com.br

11 2173-4211

78

4

4 4 4

4

4 4 4

4 4

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) 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

4

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

4

2MI Tecnologia e Informação

São Paulo

Rua Franco Alfano, 262 – CEP: 5730-010

11 4203-3937

www.2mi.com.br

4Linux

São Paulo

Rua Teixeira da Silva, 660, 6º andar – CEP: 04002-031

11 2125-4747

www.4linux.com.br

4

4 4 4 4

4

4

4 4

4 4 4 4

A Casa do Linux

São Paulo

Al. Jaú, 490 – Jd. Paulista – CEP: 01420-000

11 3549-5151

www.acasadolinux.com.br

4

4 4

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

4

4 4

ACR Informática

São Paulo

Rua Lincoln de Albuquerque, 65 – Perdizes – CEP: 05004-010

11 3873-1515

www.acrinformatica.com.br

4

4

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

4 4

4

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

4

4

4 4

AS2M -WPC Consultoria

São Paulo

Rua Três Rios, 131, Cj. 61A – Bom Retiro – CEP: 01123-001

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

4

4 4

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

4 4 4

4 4

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

4 4 4

4 4

Computer Consulting Projeto e Consultoria Ltda.

São Paulo

Rua Caramuru, 417, Cj. 23 – Saúde – CEP: 04138-001

11 5071-7988

www.computerconsulting.com.br

4

4 4

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

4

4 4

4

4 4 4 4 4

4 4 4

4

4

4

4 4

4

4 4

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

4

4 4 4 4

IBM Brasil Ltda.

São Paulo

Rua Tutóia, 1157 – CEP: 04007-900

0800-7074 837

www.br.ibm.com

4

4

4 4

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

4

4 4

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

4 4 4 4

Itautec S.A.

São Paulo

Av. Paulista, 2028 – CEP: 01310-200

11 3543-5543

www.itautec.com.br

Kenos Consultoria

São Paulo

Av: Fagundes Filho, 134, Conj 53 – CEP: 04304-000

11 40821305

www.kenos.com.br

Konsultex Informatica

São Paulo

Av. Dr. Guilherme Dumont Villares, 1410 6 andar, CEP: 05640-003

11 3773-9009

www.konsultex.com.br

São Paulo

Av. Dr. Lino de Moraes Leme, 185 – CEP: 04360-001

11 5034-4191

www.komputer.com.br

4 4

Linux Mall

São Paulo

Rua Machado Bittencourt, 190, Cj. 2087 – CEP: 04044-001

11 5087-9441

www.linuxmall.com.br

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

Locaweb

São Paulo

Av. Pres. Juscelino Kubitschek, 1.830 – Torre 4 Vila Nova Conceição – CEP: 04543-900

11 3544-0500

www.locaweb.com.br

Novatec Editora Ltda.

São Paulo

Rua Luis Antonio dos Santos, 110 – Santana – CEP: 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

Oracle do Brasil Sistemas Ltda. São Paulo

Av. Alfredo Egídio de Souza Aranha, 100 – Bloco B – 5º andar – CEP: 04726-170

11 5189-3000

www.oracle.com.br

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

Red Hat Brasil

São Paulo

Av. Brigadeiro Faria Lima, 3900, Cj 81 8º andar Itaim Bibi – CEP: 04538-132

11 3529-6000

4 4 4 4

Linux Komputer Informática Livraria Tempo Real

4

4

4 4

4

4 4 4 4 4 4 4

4

4 4 4

4 4

4 4 4 4 4

4 4 4 4

4

4

4

www.e-provider.com.br

4

4 4

www.redhat.com.br

4

4 4

Samurai Projetos Especiais

São Paulo

Rua Barão do Triunfo, 550, 6º andar – CEP: 04602-002

11 5097-3014

www.samurai.com.br

4

4 4

SAP Brasil

São Paulo

Av. das Nações Unidas, 11.541, 16º andar – CEP: 04578-000

11 5503-2400

www.sap.com.br

4

4 4

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

4

4 4

4 4

4 4

Snap IT

São Paulo

Rua João Gomes Junior, 131 – Jd. Bonfiglioli – CEP: 05299-000

11 3731-8008

www.snapit.com.br

4

4 4

Stefanini IT Solutions

São Paulo

Av. Brig. Faria Lima, 1355, 19º – Pinheiros – CEP: 01452-919

11 3039-2000

www.stefanini.com.br

4

4 4

11 5187-2100

Sun Microsystems

São Paulo

Rua Alexandre Dumas, 2016 – CEP: 04717-004

Sybase Brasil

São Paulo

Av. Juscelino Kubitschek, 510, 9º andar Itaim Bibi – CEP: 04543-000 11 3046-7388

www.sybase.com.br

www.sun.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

R. Alexandre Dumas 1658 – 6º, 7º e 8º andares – Chácara Santo Antônio – CEP: 04717-004

11 3305-7000

www.unisys.com.br

4

4

4 4 4 4

4

4

4 4

4

4 4

Utah

São Paulo

Av. Paulista, 925, 13º andar – Cerqueira César – CEP: 01311-916

11 3145-5888

www.utah.com.br

4

4 4

Visuelles

São Paulo

Rua Eng. Domicio Diele Pacheco e Silva, 585 – Interlagos – CEP: 04455-310

11 5614-1010

www.visuelles.com.br

4

4 4

Webnow

São Paulo

Av. Nações Unidas, 12.995, 10º andar, Ed. Plaza Centenário – Chácara Itaim – CEP: 04578-000

11 5503-6510

www.webnow.com.br

4

4

4

4

WRL Informática Ltda.

São Paulo

Rua Santa Ifigênia, 211/213, Box 02– Centro – CEP: 01207-001

11 3362-1334

www.wrl.com.br

4

Systech

Taquaritinga

Rua São José, 1126 – Centro – Caixa Postal 71 – CEP: 15.900-000

16 3252-7308

www.systech-ltd.com.br

4 4

4 4

79

Linux Magazine #60 | Novembro de 2009

© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).


SERVIÇOS

Calendário de eventos

Índice de anunciantes

Evento

Data

Local

Informações

IV Linux Day

7 de novembro

Juiz de Fora, MG

www.viannajr.edu.br/linuxday

CESoL

10 a 13 de novembro

Fortaleza, CE

www.cesol.org

C & C++ para Sistemas Embarcados

14 de novembro

Maratona JBoss

21 de novembro

1a Conferência Web W3C Brasil

23 e 24 de novembro

Plone Symposium América do Sul

24 e 25 de novembro

4o SoLISC

26 e 27 de novembro

Sun Tech Days 2009

8 a 9 de dezembro

São Paulo, SP

São Paulo, SP São Paulo, SP

São Paulo, SP Florianópolis, SC São Paulo, SP

www.temporealeventos. com.br/?area=118 www.temporealeventos. com.br/?area=100 www.conferencia.w3c.br

www.plonesymposium.com.br www.solisc.org.br www.developers.sun. com/events/techdays

Empresa

Pág.

Senac

7

Caixa Econômica

9

Itautec

11

Virtual Link

13

Sun Tech Day

15

Watchguard

17

Rittal

19

Rede Host

21

Plus server

23

UOL Host

25

Khomp

29

Unodata

41

Vectory

81

Bull

83

Locaweb

84

Nerdson – Os quadrinhos mensais da Linux Magazine

80

http://www.linuxmagazine.com.br

© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).


Inclua em seu currículo a principal certificação Linux no mundo – LPI. Em tempos de crise, soluções de código aberto – como o Linux – se destacam na adoção por empresas de todos os tamanhos, como solução ideal para aumentar eficiência nos negócios e reduzir custos. Atualmente há no mercado uma carência por profissionais certificados para atender a essa demanda crescente. Aproveite essa oportunidade e inclua em seu currículo a principal certificação Linux no mundo.

As datas de realização das provas são: 03/11 – São Paulo, SP 14/11 – São Paulo, SP 14/11 – Curitiba, PR 28/11 – Recife, PE 05/12 – São Paulo, SP

Inscrições e mais informações: www.lpi-brasil.org treinamentos@vectory.com.br Tel (11) 4082-1305

R

© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).

Linux Professional Institute


PREVIEW

Na Linux Magazine #61 DESTAQUE

VIRTUALIZAÇÃO

Certificação

Ganeti

Com o estabelecimento do Software Livre no mercado, as certificações profissionais dessa área ganharam grande importância. Quando aumenta o número de profissionais com uma determinada especialização, é a certificação que faz a diferença na hora de atestar seu conhecimento. Na Linux Magazine 61, vamos apresentar as certificações à disposição para o mercado de TI – não apenas na área de Software Livre, como LPI, Red Hat e Novell, mas também em campos relacionados, como gestão (ITIL, COBIT) e segurança (ISC2). Mostraremos o que as certificações realmente abordam e quais as perspectivas dos profissionais certificados no novo mercado de TI pós-crise.  n

Com o favorecimento dos desenvolvedores do kernel Linux ao hypervisor KVM em detrimento do Xen, o cenário da virtualização de código aberto começa a ficar um pouco confuso. Há versões livres e proprietárias, pagas e gratuitas do Xen, da Citrix, e o KVM chega com forte impulso da Red Hat, além do benefício de já vir por padrão embutido no Linux. O projeto Ganeti é um aplicativo desenvolvido pelo Google para auxiliar o gerenciamento dessas duas plataformas de virtualização. Utilizado internamente pelo gigante das buscas, o Ganeti talvez seja justamente o que faltava para incluir de vez a virtualização nas atividades diárias dos administradores de sistemas.  n

Na EasyLinux #17 Novo Ubuntu

O Ubuntu 9.10 promete trazer importantes novidades no campo da computação em nuvem. A própria escolha do codinome desta versão, Karmic Koala, faz alusão às nuvens, segundo Mark Shuttleworth: “o coala vive com a cabeça nas nuvens”. Será que a próxima versão da distribuição GNU/Linux mais amigável do planeta vai conseguir levar os benefícios da computação em nuvem para todos os seus usuários? Mas as novidades certamente não param por aí. Desde o sistema de arquivos até o gerenciador de inicialização, passando pelo ambiente Gnome e até seu programa de mensagens instantâneas, o Ubuntu está trazendo importantes mudanças e novidades para tornar a experiência de seus usuários cada vez mais prática e agradável em frente a esse sistema livre. A próxima edição da Easy Linux vai trazer uma extensa análise do Ubuntu 9.10, mostrando em detalhes os novos recursos do sistema e como eles podem facilitar a sua vida.  n

Duelo dos navegadores As ofertas aos navegantes jamais foram tão numerosas e diversas. O GNU/ Linux atualmente dispõe de mais de uma dezena de navegadores web, todos com um bom número de usuários. A Easy Linux 17 vai fazer um comparativo entre os principais navegadores disponíveis no Ubuntu, de forma que você possa escolher o mais veloz, mais competente e, evidentemente, mais elegante para compor a sua área de trabalho.  n

82

http://www.linuxmagazine.com.br

© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).


A Linux Magazine faz aniversário, mas quem leva o presente é você! Todas as 3 edições da Linux Magazine Especial em formato digital (PDF).

9 771806 942009 venda proibida

������

e

R$ 14,90 € 6,50

de 0002

0 plar exem

proib ida

Assinant

6 bro 200

����� ������

�����

�����

������ ���

�����

�����

������

AL DE TI

FISSION

DO PRO

���

���

A REVISTA

������

# 25 #02

������

BACKUP

� ������ S T N E I L C INE TERMINAIS � TE H REDES D ��

cial

REDE

em # 25 Nov

����� ������ �����

LME

9 771980

10001 exemplar de

Assinante

�����

NT p.42 das em THIN CLIE lega PC VIRA me máquinas perdício Transfor ts e evite o des thin clien

������

100 PÁGINAS DE MATÉRIAS EXCLUS COM TÉCNICAS IVAS AVANÇADAS E SOLUÇÕES PARA O ADMIN ISTRADOR DE SISTEMA

azine Espe Linux Mag

HARDWARE

SYSADMIN

��

������ ������� ����� ������� ����� ����� ����� ���� ����� ��� ������ ��������� ���������� ������ ������ �

� ��

S p.14 SILEIRO cipais AIS BRA TERMIN tas com os prin ional Entrevisdo mercado nac players 07/07 ������� ��

p.38

O x M PLÁSTIC PINGÜI s leves com Linu Terminaistria de plástico na indú

DE TI 07/2007

SYSADMIN

���� ���� ���

������

ÇA LTSP F

THINSTAT

VPN

��������

cipais pro

�������� ������ �

BOOT REM

������

NE

������

NOMACHI

R

p.79

tocolos

L

DE PROJETOS

WWW.LINUXMA GAZINE.COM.B

QUEM?

É dos prin QUEM as vantagens a ores BACKUP p.40 Conheç a servid REDrem ESoto Veja como uma p.30 de acesso Redes exigem estratégia bem uma pensada manut enção de backup pode precisa ajudáde hora e data. lo a colocar aquele O s NTP (Network arquivos perdid Time os de Protocol) garant volta em seus e lugares, que isso será feito. num piscar de olhos. GO-GLOBA

PROJETO

DNS, DHC

������

ION

GERENCIAMENTO

LETO p.06co servidor úni O COMP SERVIÇP, PXE e TFTP em um

OTO RLD

TECNOWO

12/21/06 3:28:15 PM

: TA EDIÇÃO is BÉM NES figuráve VEJA TAM s autocon

���� ���������� ���������� ��� ��� �������� ���������� ������������������� ������ ����������� ���������� ��������� ��� ������ �������� ��� ������ ������������ ��� ������ ������ ������� ����� ��

����

���� ���� ����� ������ ������� ������� ����� ������ ������ ������ ����� ������ ����� ��� �� �� ����� ���� ����� ����� �������� ��������� �������� ������� ������ ������ ��������� ������ ������ �� ����� ��

������

�������

������

����

������

����� ������

��� ������ ������� ���������� ������ ��� ������ ������ ������������ � ��� ��� ������ ������� ������������ ��������� ������ ������ ��������������� ������ ������� � ������ ���� ���� ����� ���� ������ �����

���

���� �� ��������� � ������ ����

p.57

p.87 Crie rede » Avahi: p.56 devices k block x e LTSP » Networ com Linu Diskless ser p.95 deveria » Clientes que o VNC » NX: O

9 771 980 463 000 06.07.07

000

03

10:07:53

M.BR

9/16 18.0/08 9.085:53 10:0 :228:17 PM

AZINE.CO

NUXMAG

WWW.LI

������� ����� ����� ����� �� ����� ������� ���������� ����� ����� ������� ����� ����� � ��� ����� ����� ������������������ ����� ��

�������

������

����� ����

ZEROCON

VSERVER

AS E TÉCNIC ES ORIAIS AIS LEV AÇÃO, TUT DOS TERMIN INFORM TROLE NDO INAS COM ENTRAR NO MU INISTRAÇÃO, CON A 100 PÁG DAS PAR FÁCIL ADM ENTO. AVANÇA USTEZ, ENCIAM IA, ROB NÇA, GER ECONOM URA , SEG EFETIVO

������ ��

WI-FI

HARDWARE p.10

Ligue e desligue S p.86 Se o seu proble automaticamente ma é LMEgerenc LME iar projetos de 3_CAPA -3_C computadores apa.ind _VoiP_C que não manei d 1 S.in ra dd 1 profiss precisam funcio ional, o nar Taskjuggler – aliado continuamente a e uma boa metod diminua seus ologia gastos de gerenc iamento – é com energia elétric a. a alternativa corret a.

������ ���

DHCP

FIREWALL E SEGURAN

1

���

������

# 25 #01

# 01 25 Novem Janeir bro o 2006

R$ 14,90 € 6,50

PROFISSIONAL

����

Especial

LME_capa.indd

������

Linux Magazine

Pronto! Suas revistas estarão disponíveis para download.

WI-FI p.63 Conheça os roteado res Wi-Fi que rodam Linux LME 01/07

A REVISTA DO

Para receber seu presente, acesse o site www.linuxmagazine.com.br/lm5anos e digite o código abaixo, preenchendo o cadastro.

FIREWALL E SEGUR Como montar um ANÇA p.46 firewall de regras realmen te eficientes

00 venda 4630

01/2007

SERVIDORES p.22 Aprenda a montar um servidor de logs profissi onal

a.indd 1

LME02_cap

0000000000 0000000000 0000000000

Cada código dá acesso ao download das revistas Linux Magazine Especial 01 - Redes e Sistemas, Linux Magazine Especial 02 - Thin Clients e Linux Magazine Especial 03 - VoIP com Asterisk. As três revistas deverão ser baixadas ao mesmo tempo, pois o código só poderá ser usado uma única vez. O código será ligado ao nome da pessoa que utilizá-lo, não sendo transferível a terceiros. Cada Linux Magazine 60 possui um único código variável. Mais informações disponíveis no site www.linuxmagazine.com.br/lm5anos

gazine Lin ux Ma

Digite o código acima no site www.linuxmagazine.com.br/lm5anos © Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).


Linux Magazine

kwarup.com

11/2009

Cloud Computing Com autonomia total e flexibilidade na administração do servidor.

CONTRA LINUX NA

UNIMED

p.26

LINUX NA UNIMED p.26

CONTRA O DESPERDÍCIO P.28

A Unimed Londrina adotou Linux e só tem elogios

OPEN SOURCE MADURO p.30

Maddog mostra por que live CDs devem ser pagos

Novas oportunidades que vêm com o amadurecimento

MADURO

p.30

CE vêm des que oportunidamento Novas amadureci com o

OPEN SOUR

IO P.28

O DESPERDÍC

por que mostra Maddog pagos m ser CDs deve

u

rina adoto ed Lond A Unim elogios e só tem Linux

live

# 60 Novembro 2009

RAID SAMBA BACKUP E

WAR TO. O SOFT TO E BARA RESULTADO HOR BOM, BONI STORAGE ORCIONA O MEL . p.31 LIVRE PROP NADA POR ISSO AR p.32 SEM COBR ram o RAID que acele simples Bacula p.45 l com o » Truques BD p.40 profissiona ção para » Backup ed, a salva » Memcach

Sua aplic que garantem das de medi

UÍDO p.58 BA DISTRIB s máquinas por vária REDES: oSAM Samba nibilidade Distribua alta dispo ho. e obtenha desempen e melhor

e disco exclusivos para suas aplicações. A partir de r$ 59,00/mês.

Cloud server: ajuste as capacidades de seu servidor Linux ou Windows quando quiser, garantindo disponibilidade de hardware, desempenho de ponta e crescimento sob demanda. A partir de r$ 149,00/mês. private Cloud: conte com recursos em larga escala em uma nuvem inteiramente dedicada a sua empresa. Consulte nossa equipe comercial e conheça os planos para necessidades específicas. Cloud Computing loCaweb: a melhor infraestrutura para hospedar seu site e suas aplicações com alta performance e tecnologia de ponta.

a locaweb traz para você a nova fronteira da era digital. assista ao vídeo sobre o Cloud Computing em locaweb.com.br/cloud.

© Linux New Media do Brasil Editora Ltda. Este documento é para uso exclusivo de rodrigo (CPF/CNPJ: 01287440304).

A REVISTA DO PROFISSIONAL DE TI

M.BR

CEZAR TAURION p.34 O Código Aberto como incentivo à inovação

#44 07/08 R$ 13,90 € 7,50

A REVISTA DO PROFISSIONAL DE TI

GOVERNANÇA COM

SEJA UM BOM GESTOR E UTILIZE AS MELHORES PRÁTICAS ADOTADAS E RECOMENDADAS PELOS PROFISSIONAIS MAIS EXPERIENTES NESSA ÁREA p.36

» O que dizem os profissionais certificados p.24 » Cobit, CMMI, ITIL. Quais as melhores práticas? p.36 » ITIL na prática p.39

» Novidades do ITIL v3. p.44

SEGURANÇA: DNSSEC p.69

VEJA TAMBÉM NESTA EDIÇÃO:

Com o DNSSEC, a resolução de nomes fica protegida de ataques. Mas seu preço vale a pena?

» Relatórios do Squid com o SARG p.60

REDES: IPV6 p.64

» Becape de bancos de dados com a Libferris p.46

Conheça as vantagens da nova versão do Internet Protocol, e veja por que é difícil adotá-la

» Java, Ruby e Rails: conheça o JRuby on Rails p.74 » Benchmarks do GCC 4.3? p.58

» LPI nível 2: Servidores NIS e DHCP p.52

WWW.LINUXMAGAZINE.COM.BR

STORAGE BOM, BONITO E BARATO. O SOFTWARE LIVRE PROPORCIONA O MELHOR RESULTADO SEM COBRAR NADA POR ISSO. p.31 » Truques simples que aceleram o RAID p.32 » Memcached, a salvação para BD p.40 » Backup profissional com o Bacula p.45

SEGURANÇA: APLICAÇÕES WEB p.66 Sua aplicação web é segura? Confira uma lista de medidas que garantem seu sono tranquilo.

REDES: SAMBA DISTRIBUÍDO p.58 Distribua o Samba por várias máquinas e obtenha alta disponibilidade e melhor desempenho.

WWW.LINUXMAGAZINE.COM.BR

VEJA TAMBÉM NESTA EDIÇÃO:

» Conheça as certificações do mercado p.16 » Kurt Seifried: Wi-fi nunca é seguro p.18 » OpenSolaris: formatação de partições p.51 » Python 3.0: quais as mudanças? p.72

venda  proibida

LINUX PARK 2008 p.28 Iniciada em Porto Alegre a temporada de seminários Linux Park de 2008

Assinante

CASE ALFRESCO p.26 A Construcap agilizou seus projetos com o Alfresco

exemplar de

RAID SAMBA BACKUP 00044

RAID  SAMBA  BACKUP  BACULA   MEMCACHED   SAMBA DISTRIBUÍDO   APLICAÇÕES WEB  OPENSOLARIS  PYTHON 3   CERTIFICAÇÕES

Cloud mini: tenha autonomia total para administrar seu servidor Linux, com processamento, memória

» Conheça ied: Wi-fi nunca partições p.51 de » Kurt Seifr ris: formatação nças? p.72 » OpenSola quais as muda 3.0: » Python

AZINE.CO

NUXMAG

WWW.LI

TA EDIÇÃO: ado p.16 BÉM NES do merc ficações VEJA TAM p.18 as certi é seguro

9 771806 942009

# 60

WEB p.66 ICAÇÕES ra uma lista NÇA: APL ra? Confi uilo. SEGURAação web é segu seu sono tranq


Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.