Die Qual der Wahl
Expediente editorial Diretor Geral Rafael Peregrino da Silva rperegrino@linuxmagazine.com.br
Laura Loenert Lopes llopes@linuxmagazine.com.br Editora de Arte Larissa Lima Zanini llima@linuxmagazine.com.br Editor Online Felipe Brumatti Sentelhas fsentelhas@linuxmagazine.com.br Colaboradores Alexandre Borges, Alexandre Santos, Alfons Kemper, Augusto Campos, Brian Proffitt, Cezar Taurion, Charly Kühnast, Dave MacLean, David Lutterkort, Harald Jele, Jon ‘maddog’ Hall, Joseph Guarino, Kai-Thorsten Hambrech, Klaus Knopper, Konstantin Agouros, Kurt Seifried, Oliver Frommel, Thomas Neumann, Zack Brown. Tradução Kemel Zaidan, Laura Loenert Lopes, Rodrigo Garcia, Sebastião Luiz da Silva Guerra. Revisão Amauri Dantas de Oliveira. Editores internacionais Uli Bantle, Andreas Bohle, Jens-Christoph Brendel, Hans-Georg Eßer, Markus Feilner, Oliver Frommel, Marcel Hilzinger, Mathias Huber, Anika Kehrer, Kristian Kißling, Jan Kleinert, Daniel Kottmair, Thomas Leichtenstern, Jörg Luther, Nils Magnus. Anúncios: Rafael Peregrino da Silva (Brasil) anuncios@linuxmagazine.com.br Tel.: +55 (0)11 3675-2600 Penny Wilby (Reino Unido e Irlanda) pwilby@linux-magazine.com Amy Phalen (América do Norte) aphalen@linuxpromagazine.com Hubert Wiest (Outros países) hwiest@linuxnewmedia.de Diretor de operações 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.es – Espanha www.linux-magazine.pl – Polônia www.linux-magazine.co.uk – Reino Unido www.linuxpromagazine.com – América do Norte 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. 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. Rua São Bento, 500 Conj. 802 – Sé 01010-001 – São Paulo – SP – Brasil Tel.: +55 (0)11 3675-2600 Direitos Autorais e Marcas Registradas © 2004 - 2012: Linux New Media do Brasil Editora Ltda. Impressão e Acabamento: IBEP Gráfica. Atendimento Assinante www.linuxnewmedia.com.br/atendimento São Paulo: +55 (0)11 3675-2600 Rio de Janeiro: +55 (0)21 3512 0888 Belo Horizonte: +55 (0)31 3516 1280 ISSN 1806-9428
Linux Magazine #94 | Setembro de 2012
Impresso no Brasil
O ditado acima provém do alemão, e o seu sentido é mais ou menos, o seguinte: “Quanto mais numerosas as opções, mais difícil a decisão.” Isso reflete a situação atual do gestor de TI diante das ofertas de Cloud Computing disponíveis no mercado brasileiro, especialmente no caso de nuvens públicas. Diante da miríade de opções existentes no mercado de Cloud e a ausência de uma métrica padronizada para comparar essas ofertas, o gestor de TI terá bastante dificuldade em contratar esse tipo de serviço. Amazon WS, Locaweb, UOL Cloud, CentralServer, Under TeHospedo, para citar apenas alguns, têm ofertas diferenciadas e usam métricas próprias, que vão além do simples “número de processadores, quantidade de memória, disco e banda”, o que complica sobremodo a escolha do provedor e mesmo da oferta de nuvem a ser utilizada. Há um sem-número de variáveis a considerar em um cenário como esse e mesmo que em um determinado momento a escolha correta tenha sido efetuada, há chances reais de que o nível de desempenho escolhido agora não seja mantido posteriormente, mesmo que o nível de atendimento contratado (SLA) continue a ser respeitado. Isso pode acontecer porque, em muitos casos, há variação de carga nos sistemas do provedor, e o SLA contratado é nivelado por baixo. É o fenômeno conhecido como “festa cheia”: em uma festa com número fixo de garçons, quando a quantidade de convidados aumenta, a qualidade do atendimento cai. Em outros casos, a bilhetagem dos serviços é totalmente variável, dependendo da quantidade de I/O (leituras e escritas) dos aplicativos utilizados pelo cliente, e mesmo que haja um SLA para isso, a visibilidade no que tange ao valor final a ser pago pelo cliente é reduzida. Considerando tudo isso, é muito provável que, uma vez contratado o serviço, o cliente terá uma aversão natural a repetir o processo de contratação, de modo que o primeiro contrato é, de longe, o mais importante – fica a dica para os provedores de plantão. Como contratar, então? O passo mais importante é reduzir todas as ofertas a uma base comum do ponto de vista do desempenho. Com isso em mãos, será necessário testar quatro ou cinco provedores respeitáveis (e, de preferência, dotados de certificações como ISO 27001, SAS 70 etc.). Os testes deverão ser feitos em ambientes de produção, sem o conhecimento do provedor, para que um “efeito teste” possa ser evitado. Assim, deverão ser efetivamente contratados os serviços dos provedores para realizar os testes com as ofertas que sejam adequadas às necessidades do cliente. Aquele que se sair melhor nos testes de desempenho a um custo mais baixo, deverá ser contratado. Ferramentas de teste não faltam. Alguns exemplos: Geekbench, Linux Benchmark Suite e (o meu preferido) Phoronix Test Suite. Além desses, testes com um ambiente similar ao de produção deverão ser realizados, nos quais os aplicativos efetivamente usados pelo cliente estejam instalados e plenamente funcionais. Otimizações nesses aplicativos, se possível, deverão ser realizadas para o ambiente contratado. Esses testes deveriam ser extensivamente realizados por pelo menos um mês e esse tipo de prática deveria ser repetida com o provedor escolhido no mínimo uma vez a cada seis meses. Savvy? ■
EDITORIAL
Editores Flávia Jobstraibizer fjobs@linuxmagazine.com.br
Rafael Peregrino da Silva Diretor de Redação
3
ÍNDICE
CAPA A caminho das nuvens
31
Estamos em uma era onde tudo nos leva em direção às nuvens. Você está pronto para esta nova realidade? Nuvem segura
32
Se estamos saindo da era PC, como os dados serão acessados? Uma nova solução comercial baseada em um projeto de código aberto mostra um caminho para o futuro. Aninhamento na nuvem
34
Como usar o Linux iSCSI e versões gratuitas do VMware para criar um cenário de virtualização completo com centro de dados, armazenamento e alta disponibilidade em um computador portátil. Nuvem sobrecarregada
42
A maioria dos provedores de nuvem oferece suas próprias APIs, o que significa que os usuários assinam os serviços de um fornecedor em detrimento de poderem migrar facilmente para outros fornecedores mais tarde. Conheça o Apache Deltacloud e descubra como ele pode resolver esse problema. Jogos nas nuvens
48
Criar e gerenciar um servidor de jogos na nuvem é fácil e divertido, principalmente quando você não tem largura de banda sobrando e não pode gastar com hardware. Com o servidor de jogos deste artigo, você percebe como é fácil trabalhar com cloud.
4
www.linuxmagazine.com.br
Linux Magazine 94 | ÍNDICE
TUTORIAL
COLUNAS Klaus Knopper
08
Charly Kühnast
10
Augusto Campos
12
Alexandre Borges
14
Zack Brown
16
Kurt Seifried
18
Ordem com bônus extras
62
NOTÍCIAS Geral
22
➧ A suposta inundação de malwares para Android ➧ Debian celebra seu 19º aniversário
A popularização da virtualização não reduziu o número e a diversidade de sistemas operacionais que os administradores precisam instalar e gerenciar. O servidor Uranos oferece mais liberdade aos administradores de sistemas complexos.
CORPORATE Notícias
23 Vintage versátil
➧ Lenovo inicia seleção de funcionários para nova fábrica
68
➧ Motorola pretende cortar 4.000 postos de trabalho CloudConf LatAm 2012
24
Coluna: Cezar Taurion
26
Coluna: Jon “maddog” Hall
28
Coluna: Alexandre Santos
30
ANDROID Ferramentas de desenvolvimento Android
56
Graças ao Wine, cada vez mais aplicativos Windows são executados no Linux. Se investirmos um pouco de tempo em configuração e solução de problemas, não ficaremos presos ao Windows, mesmo com aplicativos que ninguém nunca sonhou executar no Linux.
REDES Nova camada
75
O Eclipse e o Android SDK são uma ótima maneira de começar a desenvolver para Android. Mas, quando algumas coisas não podem ser feitas com o kit básico, existem bibliotecas e ferramentas que facilitam a vida do desenvolvedor.
ANÁLISE Base de memória
60
Passados 20 anos de sua introdução, o HTTP mostra os sinais da idade. O novo protocolo do Google, SPDY, resolve alguns problemas do HTTP sem prejudicar os sites já existentes.
SERVIÇOS Graças ao hardware poderoso, bancos de dados em memória introduzem uma revolução no mercado, ao lidar com transações e avaliações em alta velocidade sem acessar dispositivos de memória em massa.
Linux Magazine #94 | Setembro de 2012
Editorial
03
Emails
06
Linux.local
78
Preview
82
5
Coluna do Augusto
COLUNA
Linux no futuro dos videogames? O Linux possui uma tímida presença no mundo dos consoles de videogames mas seu futuro nesta área é promissor.
C
om a geração atual dos consoles de videogames de maior sucesso comercial (XBox 360, PlayStation 3, Wii) se aproximando do fim da sua proeminência, as dúvidas sobre o que virá depois se aprofundam também em decorrência da quantidade de alternativas que podem surgir, em um futuro próximo. A complexidade começa pela mudança na expectativa dos recursos de um console de videogame: se na geração anterior ele estava próximo de se limitar a receber uma mídia de jogos que o usuário determinasse e permitir a interação local por meio de um controle direcional com botões, ao longo da geração corrente tudo isso mudou: os jogos passaram a ser levados ao usuário por meio do próprio console conectado à Internet e a serem jogados em rede; os controles passaram a considerar gestos e movimentos do corpo inteiro, e conteúdos como filmes, música, fotos e serviços online variados passaram a fazer parte do cardápio básico. O Linux teve alguma participação na geração corrente, por meio da possibilidade de instalação de distribuições (produzidas especialmente para esta finalidade) no PlayStation 3, recurso que era oferecido como um diferencial e uma vantagem pelo fabricante, mas que depois foi cortado em uma atualização, sem cerimônia, por alegadamente prejudicar modelo de segurança do console. Para a próxima geração, existe a possibilidade de o Linux estar mais presente. Isso se tivermos de fato uma “próxima geração de consoles”, pois o cenário dos jogos que são executados em dispositivos móveis (como os smartphones Android, que usam o kernel Linux) já estão se encarregando de diluir o conceito e tornar mais tênue o seu limite.
12
Uma das presenças do Linux no cenário dos consoles que já está a caminho de se concretizar é o Ouya, projeto cuja versão inicial foi custeada por investimentos individuais dos próprios usuários interessados, e que está prometido para chegar daqui a poucos meses, conectado à TV e à Internet e oferecendo um caminho aberto para desenvolvedores de jogos – e jogos grátis para os usuários. Há outras propostas ainda não confirmadas, incluindo o que a Valve está fazendo com sua loja online, a Steam, em parceria com a Canonical: compatibilizar e lançar jogos para o Ubuntu, trazendo junto ao menos um jogo de sucesso atual em outras plataformas (o Left 4 Dead 2). O que se comenta (e não me parece que tenha sido confirmado oficialmente) é que o plano seria chegar ao ponto em que um PC padronizado, que possui uma versão específica do Ubuntu otimizada para este fim e já trazendo a Steam – ou seja, essencialmente um console feito em hardware de PC com Linux, para o qual os desenvolvedores possam otimizar seus jogos. Em paralelo, iniciativas como o Humble Bundle demonstram que é possível ganhar dinheiro com jogos multiplataforma (e open source, em alguns casos), e o sucesso com a promessa de relançamento do console Neo Geo (com os jogos que o consagraram na década retrasada) servem para nos relembrar que o divertimento não ocorre somente devido à atualização tecnológica e sua fórmula é bem delicada, mas se o Linux estiver envolvido, o assunto passa a nos interessar mais. Vamos acompanhar! ■ Augusto César Campos é administrador de TI e, desde 1996, mantém o site BR-linux.org, que cobre a cena do Software Livre no Brasil e no mundo.
www.linuxmagazine.com.br
Agora você tem o controle sobre o desempenho do seu negócio sempre à sua mão. Compras
Finanças
Estoques
NF-e
Vendas Fornecedores Clientes
ERP – SISTEMA DE GESTÃO
Solução completa hospedada em nuvem (Cloud Computing)
A micro e pequena empresa ganha uma solução de classe mundial de sistemas de gestão ERP no modelo comercial com a melhor relação custo/benefício. O Kontroller dispensa aquisição de hardware, licenças de software, técnicos de suporte ou sistema de backup. Garante alta disponibilidade e oferece fácil acesso via browser.
Saiba mais em: www.vectory.com.br/kontroller +55 11 3104 6652
SOFTWARE
Coluna do Alexandre Borges
COLUNA
NMAP – segunda parte Avance em seus conhecimentos sobre a poderosa ferramenta NMAP.
N
a coluna anterior, o leitor pôde relembrar alguns conceitos e usos do NMAP. Nesta edição, vamos dar mais alguns passos no vasto universo desta excepcional ferramenta. Quando trabalhamos com escaneamento de portas, devemos lembrar que a possibilidade das que podem ser encontradas abertas são classificadas em: ➧ Portas bem conhecidas: compreende das portas 1 à 1023, já foram vinculadas pela IANA a algum serviço como telnet (23), smtp (25), dns (53) etc., e possuem serviços que são executados sobre um usuário privilegiado (por exemplo, o usuário root). ➧ Portas registradas: nesta classificação estão inclusas as portas de 1024 à 49151 e são vinculadas (em geral) à serviços conhecidos que são executados com permissões de usuários não privilegiados. ➧ Portas reservadas/dinâmicas: portas compreendidas de 49152 à 65535. Estas portas são livres para uso de softwares de terceiros. Ainda seguindo com os conceitos, quando um profissional está verificando quais portas estão abertas na rede ou máquina alvo, é essencial entender o status relatado pelo Nmap e estas portas e que pode ser: ➧ Open: o serviço está aceitando conexões TCP ou ainda pacotes UDP. Cuidado, pois às vezes a porta pode estar de fato aberta, contudo, não está aberta para todos os IPs pois o administrador da rede pode ter configurado o TCP Wrapper e, como o leitor sabe, isto pode limitar quais IPs podem se conectar aos serviços. ➧ Closed: o serviço não está aceitando conexões. Nem sempre isto é ruim pois, mesmo com este status, ao menos sabemos que ali existe uma máquina que está online e dentro de algumas circunstâncias é possível inferir qual é o sistema operacional em uso. ➧ Filtered: este status é indeterminado pois provavelmente um roteador ou firewall está filtrando os
14
pacotes do Nmap e impedindo-os de chegar à porta do serviço. Com isto, não é possível saber se a porta está aberta ou fechada. Este status é um resultado ruim para o cracker pois como muitos firewalls, além de impedir que os pacotes cheguem ao destino, ainda impedem que uma mensagem representando estes status (protocolo ICMP, type 3) retorne como resposta deste bloqueio. Assim, o Nmap fica na dúvida se o pacote foi “dropado” ou não, e acaba retransmitindo-o diversas vezes causando enorme lentidão no escaneamento de portas. ➧ Unfiltered: este é um estado estranho pois o Nmap não consegue determinar se a porta está fechada ou aberta mesmo não havendo nenhum tipo de bloqueio (firewall) no acesso à porta. ➧ Open | Filtered: novamente um estado que representa indecisão pois o Nmap não é capaz de precisar se a porta encontra-se no estado Open ou Filtered devido a ausência de resposta ao escaneamento da porta. ➧ Closed | Filtered: a mesma indecisão de estado do anterior. Agora que sabemos como interpretar o status de um escaneamento de portas, podemos, enfim, prrosseguir para alguns passos operacionais. Como não poderia deixar de ser, talvez o tipo de escaneamento mais comum seja o Stealth (invisível), ou seja, aquele onde, para cada porta de endereço IP especificado é realizado um roteiro de unificações (no three handshake): 1) Nmap envia um pacote com o flag SYN setado; 2) Recebe da máquina alvo um pacote com ambos os flags SYN e ACK setados; 3) Por fim, ao invés de o Nmap devolver um pacote com a flag ACK setada, ele devolve um pacote com a flag RST (reset) em 1, terminando a conexão.O motivo é que não há o interesse de estabelecer uma conexão e sim apenas verificar se a porta está aberta
www.linuxmagazine.com.br
ou não. Quando o Nmap recebe um pacote SYN + ACK isso já é um indicativo de que a porta provavelmente está aberta. Como a conexão nunca é estabelecida, fica mais difícil deixar rastros nos logs do sistema operacional alvo, já que, no último instante, a conexão é terminada e, com isso, não há nada para registrar nos logs. Se a porta estivesse fechada, já saberíamos disso logo na segunda etapa, pois o Nmap receberia um pacote com a flag RST definida. Em termos de comandos, temos: # nmap -sS 192.168.1.112 Starting Nmap 6.01 ( http://nmap.org ) at 2012-08-11 03:47 BRT Nmap scan report for 192.168.1.112 Host is up (0.00035s latency). Not shown: 987 closed ports PORT STATE SERVICE 135/tcp open msrpc 139/tcp open netbios-ssn 445/tcp open microsoft-ds 554/tcp open rtsp 1025/tcp filtered NFS-or-IIS 1026/tcp open LSA-or-nterm
Linux Magazine #90 | Maio de 2012
1027/tcp open IIS 1028/tcp open unknown 1044/tcp open dcutility 1046/tcp open wfremotertm 2869/tcp open icslap 5357/tcp open wsdapi 10243/tcp open unknown MAC Address: 24:77:03:48:66:70 (Intel Corporate) Nmap done: 1 IP address (1 host up) scanned in 1.38 seconds
É interessante notar que, neste exemplo hipotético, apenas uma porta aparece filtrada. Este status é proviniente de um pacote da ausência de resposta ou ainda de um pacote de erro (ICMP) do tipo 3. Sei que estamos no começo da explanação sobre a ferramenta e faltam ainda muitos detalhes, entretanto, a ideia aqui é fazer um progresso gradual sobre o assunto. Até o mês que vem. ■ Alexandre Borges (alex_sun@terra.com.br) é instrutor independente e ministra regularmente treinamentos de tecnologia Oracle (áreas de Solaris, LDAP, Cluster, Containers/OracleVM, MySQL, e Hardware), Symantec (Netbackup, Veritas Cluster,Backup Exec, Storage Foundation e SEP) e EC-Council (CEH e CHFI), além de estar sempre envolvido com assuntos relacionados ao kernel Linux.
15
Nuvens privadas
CAPA
A caminho das nuvens Estamos em uma era onde tudo nos leva em direção às nuvens. Você está pronto para esta nova realidade? por Flávia Jobstraibizer
O
s preços dos computadores domésticos ou portáteis estão cada vez mais competitivos. Embora tenhamos hardwares com cada vez mais potência e desempenho, os dados atualmente não estão mais fisicamente armazenados neles. São poucos os usuários de computadores que não possuem contas em redes sociais, ou em sistemas de armazenamento de arquivos, para guardar suas fotos ou videos online. Está cada vez mais difícil ouvir a palavra “backup”, quando o assunto é computador pessoal. Isso se deve ao fato de que os nossos arquivos hoje em dia estão na nuvem e são acessíveis de qualquer lugar. Uma simples conta em um sistema como o Dropbox já garante que seus arquivos de texto, fotos e músicas estarão a salvo caso seu notebook apresente problemas ou simplesmente pife. No caso das empresas, a metodologia BYOD (Bring your own device – Traga seu próprio dispositivo) está sendo cada vez mais adotada, facilitando o acesso dos funcionários a determinados recursos da empresa através de seus próprios aparelhos (notebooks, smartphones etc.). Recursos estes que estão em sua maioria na nuvem privada da empresa, como, por exemplo: webmails, discos virtuais onde são armazenados documentos de textos, planilhas, relatórios etc. A nuvem privada traz inúmeros benefícios para as empresas, como a segurança e a confidencialidade das informações, uma vez que a implementação “privada” significa que o acesso ao ambiente de nuvem será controlado (e não público como um sistema onde qualquer um cria uma conta). É necessário que a empresa invista em infraestrutura para que o serviço seja oferecido com excelência, mas isso não é tudo: profissionais capacitados, em um assunto ainda tão novo (embora antigo), são difíceis de encontrar. Pensando nisso, esta edição da Linux Magazine aborda o tema da criação de nuvens privadas com um pouco do que o profissional que deseja especializar-se nesta área precisa saber. Conheça o NestedVM, ambiente que proporciona infraestrutura lógica completa para ambientes de nuvem privada e aprenda a utilizar a API Apache DeltaCloud, solução completa para ambientes de nuvem padronizadas, solução que evita problemas no momento
Linux Magazine #93 | Agosto de 2012
de migrar de um ambiente de nuvem para outro e pode ser tudo o que a sua empresa procura para começar de forma organizada uma infraestrutura de nuvem privada. Outra ferramenta importante e que usuários domésticos podem utilizar até mesmo em suas residências é o ownCloud, solução para a criação de infraestruturas de nuvens privadas em pequena escala, onde é possível armazenar músicas, fotos e arquivos em geral e que também pode ser utilizada por pequenas empresas. E pra não deixar o divertimento de fora, que tal montar sua infraestrutura privada de jogos na nuvem? Não perca o artigo “Jogos nas nuvens” que irá ensinar tudo o que você precisa saber para iniciar um servidor de jogos na nuvem e convidar seus amigos! ■
Matérias de capa Nuvem segura Aninhamento na nuvem Nuvem sobrecarregada Jogos nas nuvens
32 34 42 46
31
ANÁLISE | Memória principal em sistemas de bancos de dados
Memória principal em sistemas de bancos de dados
ANÁLISE
Base de memória Graças ao hardware poderoso, bancos de dados em memória introduzem uma revolução no mercado, ao lidar com transações e avaliações em alta velocidade sem acessar dispositivos de memória em massa. por Alfons Kemper e Thomas Neumann
S
istemas de gerenciamento de banco de dados em memória, tais como o TimesTen da Oracle [1] e o solidDB da IBM [2], já existem há algum tempo. Estes sistemas mantêm todo o conjunto de dados na RAM, e desta forma removem a necessidade de fazer paginação entre o buffer de memória principal e o disco rígido, como é o caso dos antigos SGBDs. Contudo, os sistemas de banco de dados em memória – até agora – tendem a ser produtos-nicho para aplicativos especiais.
Massas de memória O progresso do hardware mudou tudo isso. Os servidores atuais têm acima de 1TB de RAM e múltiplos núcleos, e novos algoritmos e estruturas de dados para o eficiente processamento de dados na RAM já estão em uso juntamente com cache eficiente de estruturas de dados de registro, como PAX ou armazenamento de colunas, compressão e cache eficiente de estruturas de índice. Os SGBDs em memória provavelmente irão tornar-se ainda mais importantes se considerarmos o seguinte: as empresas de hoje podem comprar servidores relativamente baratos, com uma capacidade RAM de mais de 1TB por menos de 50 mil dólares. Estes servidores contam com processadores de múltiplos núcleos capazes de executar várias tarefas em paralelo. A capacidade é suficiente para armazenar os dados transacionais da empresa, mesmo os
60
maiores – não estamos considerando dados de multimidia aqui, mas dados para operações de missão crítica. Por exemplo, observe os dados de encomendas de uma loja como a Amazon. Em 2011, a Amazon gerou um volume de negócios em torno de 48 bilhões de dólares [3]. A um preço médio do produto de 25 dólares, a empresa armazena assim cerca de 2 bilhões de itens de pedidos, cada um dos quais geralmente representado por menos de 100 bytes de dados. Isso gera um volume de armazenamento de aproximadamente 200GB – que facilmente se encaixa em 1TB de RAM. Este cálculo não leva outras operações (clientes, produtos etc.) em consideração, mas também não considera as opções de compressão. Alternativamente, uma grande empresa pode criar um banco de dados distribuído e particionado em um cluster.
Empresas iniciantes neste ramo Os avanços tecnológicos em hardware de servidor levaram à criação de muitas empresas iniciantes na área de SGBD em memória: VoltDB [4], Clustrix, Akiban, db-Shards, NimbusDB, ScaleDB, Lightwolf e ElectronDB, para citar apenas alguns dos melhores exemplos conhecidos. Também as grandes corporações, tais como a SAP (NewDB/Hana [5]) e a IBM (ISAO/Blink [6]) estão investindo pesadamente neste ramo de negócio.
Em muitos casos, estes novos desenvolvimentos dependem de sistemas de banco de dados de código aberto, como MySQL ou PostgreSQL como base para suas otimizações de memória principal. Além das edições comerciais para empresas, os fornecedores geralmente oferecem também uma versão gratuita que tem menos recursos. O VoltDB, por exemplo, está disponível sob a licença GPLv3. Os sistemas de banco de dados em memória anteriores foram concebidos para casos de uso específico: ou para processamento de transações online (OLTP), processamento eficiente de transações, ou ainda processamento analítico online (da sigla OLAP, de Online Analytical Processing). Argumentos convincentes, no entanto, como aqueles apresentados pelo fundador da SAP, Hasso Plattner [7], assumem a posição de que esta distribuição não suporta suficientemente as necessidades do usuário em termos de inteligência de negócios (da sigla BI, de business intelligence) em tempo real.
Velhos conceitos caem por terra Hoje, a arquitetura de um banco de dados típico prevê principalmente o gerenciamento de dados transacionais em um sistema de banco de dados OLTP, que sempre mantém o status mais recente. A partir daí, um processo de extração, transformação e carga (da sigla ETL, de Extract Transform Load) transfere
www.linuxmagazine.com.br
Memória principal em sistemas de bancos de dados | ANÁLISE
o HyPer que combina os benefícios de bancos de dados OLTP e OLAP. O rendimento transacional do HyPer é comparável a ou até melhor que sistemas OLTP dedicados (por exemplo, o VoltDB) e, em termos de processamento de consultas OLAP, o HyPer é comparável àqueles dedicados ao armazenamento em coluna como o MonetDB ou o Vectorwise [11]. ■
Mais informações Figura 1 Visão geral de um SGBD em memória, otimizado para OLAP (esquerda) ou OLTP (direita). Pouquíssimos oferecem o melhor de dois mundos (centro).
os dados para um sistema OLAP (de depósito de dados, também chamado de data warehouse). Esta operação pode ocorrer apenas periodicamente – por exemplo, à noite – por razões de carga. Os sistemas anteriores não puderam, por motivos de desempenho, executar consultas OLAP diretamente nos dados de sistemas OLTP. Este processo está mudando por conta da ascensão dos SGBDs em memória, conhecidos pela junção entre bancos de dados OLTP e OLAP. Ambos combinam as melhores propriedades de ambos os mundos, como podemos ver na figura 1. O seu processamento de transação é tão rápido quanto o de um banco de dados OLTP dedicado (por exemplo, o VoltDB), e em termos de processamento de consulta, eles são capazes de manter o controle com engines de OLAPs dedicadas, tais como o armazenamento em coluna do MonetDB [8], Vertica, Vectorwise, ou sistema IBM ISAO/Blink. O HANA, desenvolvido pela SAP, e o HyPer, da Universidade Técnica de Munique [9], são provavelmente os melhores representantes conhecidos de sistemas híbridos destinados à inteligência de negócios operacional. O Hyper é um SGBD em memória de última geração que utiliza gerenciamento de memória virtual suportado pelo hardware do sistema operacional para gerenciamento de dados e sin-
Linux Magazine #94 | Setembro de 2012
cronização entre transações OLTP e consultas OLAP. O gerenciamento de dados “no núcleo” mapeia dados relacionais diretamente no espaço de endereço virtual do processo OLTP, em qualquer direção, através de um buffer controlado pelo SGBD e sistema de gerenciamento de paginação. Ele pode criar snapshots (imagens do sistema) de transações consistentes do banco de dados através da ramificação de um novo processo OLAP. O mecanismo de cópia e escrita do sistema operacional e o processador mantêm o snapshot consistente, replicando as páginas com a mudança de objetos de dados. Este método de snapshot é equivalente ao conceito de página-sombra desenvolvido por Lorie em 1977 para a IBM [10] – com a diferença de que os snapshots de memória virtual não sofrem de nenhum dos inconvenientes do período: a fragmentação de memória não é um problema na RAM, e o que costumava ser um caro aplicativo de controle de gestão das cópias de sombra é agora altamente eficiente na abordagem de HyPer por ter o suporte interno do processador. Além disso, o gerenciamento de memória virtual permite que seja mantido um número arbitrário de cópias de sombra (tempo escalonado). Isto torna possível a implementação de um sistema de banco de dados com
[1] TimesTen: http://www. oracle.com/timesten/ [2] solidDB: http://www-01.ibm. com/software/data/soliddb/ [3] Relatório Anual de 2011 da Amazon.com: http://phx. corporate-ir.net/phoenix. zhtml?c=97664&p=irolreportsannual [4] VoltDB: http://voltdb.com/ [5] SAP HANA: http://www.sap. com/solutions/technology/ in-memory-computingplatform/index.epx [6] Blink: http://www.almaden. ibm.com/cs/projects/blink/ [7] Plattner, Hasso e Alexander Zeier. Gerenciamento de Dados em Memória: um ponto de inflexão para aplicativos empresariais. Springer-Verlag, 2011 [8] MonetDB: http:// www.monetdb.org/ [9] HyPer: http://www3.in.tum. de/research/projects/HyPer/ [10] Lorie, R.A. Integridade física em um grande banco de dados segmentado. TODS 1977;2(1):91-104 [11] Kemper, Alfons e Thomas Neumann. HyPer - Sistema Híbrido de Banco de Dados OLTP e OLAP de Alto Desempenho. Universidade Técnica de Munique, relatório técnico TUM-I1010, 2010, http://www3.in.tum.de/ research/projects/HyPer/ HyperTechReport.pdf
Gostou do artigo? o? Queremos ouvir sua opinião. ião. Fale conosco em cartas@linuxmagazine.com.br ne.com.b Este artigo no nosso so site: sit http://lnm.com.br/article/7459 article 459
61
TUTORIAL | Servidor de instalação centralizado
Servidor de instalação centralizado
TUTORIAL
Ordem com bônus extras A popularização da virtualização não reduziu o número e a diversidade de sistemas operacionais que os administradores precisam instalar e gerenciar. O servidor Uranos oferece mais liberdade aos administradores de sistemas complexos. por Konstantin Agouros
M
ario Gzuk certa vez encarou a tarefa de instalar um conjunto de diferentes sistemas operacionais, todos sem intervenção manual e o mais remotamente possível. Ele realmente quis fazer isso com o Unattended [1], uma ferramenta Linux que instala vários sistemas Windows em um parque computacional. Entretanto, a falta de uma interface gráfica e alguns outros aspectos o desagradaram. Então, como é comum no mundo do software livre, Gzuk decidiu desenvolver seu próprio framework, o Uranos [2], a partir do Unatended (caso você esteja se perguntando sobre o nome da ferramenta, veja o quadro 1). Você poderia dizer que as distribuições Linux oferecem suas próprias ferramentas de deployment, tal como o Kickstart ou Preseeding e que o próprio servidor de instalação da Microsoft poderia colocar o Windows nos sistemas alvo. Mas no mundo real, diversos servidores de
62
instalação costumam gerar conflitos e um sistema central de administração de um verdadeiro “zoológico” de computadores multifacetados é algo difícil de se encontrar. O sistema oferece aos administradores uma interface gráfica de administração, além de ferramentas de inventário e distribuição de software.
A arquitetura O Uranos é escrito em PHP. Em uma instalação minimalista, ele necessita do PHP, um servidor web e um banco de dados – para ser mais preciso: MySQL, PostgreSQL ou Mircrosoft SQL Server. A interface com o MySQL é a mais madura e atualmente é a recomendada. O Uranos consiste de módulos (tabela 1), que o administrador pode instalar retroativamente e habilitar caso seja preciso. Como um servidor de instalação, os módulo PXE (para a estrutura TFTP), Computer (para administrar os sistemas a serem instalados), e Installation (para gerenciar
Quadro 1: Tragédia grega O personagem da mitologia grega, Urano, simbolizava o paraíso na forma de um deus e é um dos Protogonos, um dos deuses primordiais da mitologia grega. Ele é o primeiro filho da deusa da Terra, Gaia, a quem ela deu a luz sem se encontrar com Eros. Ao contrário dos padrões morais atuais, Urano foi pai de muitos descendentes com a sua mãe: os Titãs, três Ciclopes e três Hecatônquiros. Ele odiava todos os seus filhos, escondendo-os nas profundezas da Terra, no Tártaro. Gaia, enfurecida, encontra Adamas, o metal invencível, que era inacessível aos humanos e com ele, fez uma foice gigante. Usando a foice, o Titã Cronos castrou seu pai. Afrodite nasceu a partir do sêmen do órgão cortado que caiu no mar. Talvez esteja fora dos objetivos deste artigo, determinar quais os aspectos da história impressionante de Urano inspiraram o programador a escolher seu nome para o software, mas de qualquer forma, o nome certamente aumenta o nível das expectativas.
www.linuxmagazine.com.br
Servidor de instalação centralizado | TUTORIAL
módulo de administração de switch, irá precisar instalar também o pacote php5-SNMP (este é o nome do pacote para instalações do Ubuntu), que é responsável pelas requisições SNMP.
Instalação do Uranos
Figura 1 Depois de criar um sistema operacional cliente, você pode customizá-lo extensivamente. Aqui é possível ver algumas das opções para o Windows.
os sistemas operacionais e as partições de disco) devem ser suficientes. Um servidor de instalação também precisa de um servidor DHCP e um servidor TFTP para que o boot na rede possa automatizar o processo de instalação. O Uranos administra um diretório TFTP do root, que conta com o pacote Syslinux para fornecer a estrutura de menu ou as entradas específicas para instalar hosts específicos. Na configuração do servidor DHCP, você só precisa que a configuração do TFTP (parâmetros filename e next-server, caso o servidor DHCP não estiver sendo executado no próprio Uranos) aponte para o servidor Uranos e para o arquivo de boot pxelinux.0. O servidor web configurará os outros serviços. Para evitar o acesso aos arquivos de configuração dos
servidores DHCP e DNS, será necessário um backend LDAP, que o Uranos possa acessar depois de definir uma conta LDAP com as permissões apropriadas. O servidor LDAP pode residir em um host diferente, desde que ele esteja ao alcance da rede. O Uranos administra os usuários com o banco de dados da sua preferência. Para fins de autenticação, você também necessita de servidores LDAP, RADIUS ou IMAP em funcionamento. Para o provisionamento de software você precisa de um servidor Samba para sistemas Windows e, opcionalmente, um servidor NFS para sistemas Linux. Se você preferir não pegar os arquivos de instalação para os clientes da Internet, um servidor web local será o suficiente para a maioria das distribuições Linux. Caso você pretenda utilizar o
Um guia de instalação detalhado passo-a-passo [2] descreve o que você já deve ter como pré-requisitos: PHP, o Pear e alguns módulos PHP adicionais. Nosso laboratório de testes possuía pequenas variações nos módulos PHP (quadro 2). Administradores de distribuições baseadas em Debian podem simplesmente copiar e colar os comandos para realizar a instalação em modo linha de comando. Se você optar pelo banco de dados MySQL, irá provavelmente apreciar os comandos para criar a base de dados e o usuário. Administradores que preferem PostgreSQL precisarão traduzir os comandos, mas isso não é muito difícil. O próximo passo é configurar um host Apache virtual com a raiz da documentação apontando para a árvore onde o Uranos irá ficar. Em seguida, descompacte o Uranos em um diretório e vá até http://Uranos-Server/www/install.php. Dez passos simples o conduzirão até o fim da instalação. É claro que você não irá precisar instalar drivers para bases de dados que você não irá utilizar. As rotinas de instalação irão te perguntar qual base de dados você estará usando, qual o grupo de usuários e o administrador. Quando terminado, será exibido o link para uma página de login.
Resolução de erros de módulos
Figura 2 Utilização do menu interativo de boot PXE na máquina alvo para decidir o tipo de instalação.
Linux Magazine #94 | Setembro de 2012
Com as contas que você acabou de criar, é possível começar a instalar módulos na página de configurações. Enquanto escrevo este artigo, o time de testes instalou e habilitou os módulos de cima para baixo. Em cada
63
TUTORIAL | Servidor de instalação centralizado
Figura 3 Criação de um repositório com programas gratuitos para o Windows.
caso, isso resultou no Uranos criando tabelas de dados para os módulos e preenchendo-as parcialmente com valores. Depois que isso aconteceu, não fomos capazes de criar discos rígidos. Uma pesquisa mostrou que este é um bug conhecido – administradores podem contorná-lo tanto ao instalar previamente o módulo unattended e depois o módulo Computer quanto usando o comando SQL: ALTER TABLE `part_computerconfig` ADD `replace_partitions` TINYINT( 3 ) UNSIGNED NULL DEFAULT NULL;
para acresentar uma coluna a tabela. A configuração do Uranos para os servidores DHCP e DNS devem ser modificadas de acordo com a configuração local e você deve acrescentar os esquemas apropriados ao LDAP. Para o DHCP, é uma boa ideia configurar um framework básico com as classes dos objetos dhcpService e dhcpServer, os parâmetros mais importantes e as sub-redes. Se não tiver um editor LDAP, como o LDAP Studio, a melhor escolha é o módulo LDAP do Uranos. Depois de habilitar o módulo, o menu te oferece a opção Configuration localizada em Settings/Modules. Para cada módulo que acessar a base de dados LDAP, será necessário digitar as credenciais de acesso: conta, servidor e base DN. Uma entrada aparece na barra de menu na esquerda que permite que você utilize o módulo. Além dos módulos, o Uranos suporta o uso de conectores para ligá-lo a sistemas externos como, por exemplo o Bugzilla ou RT.
64
Figura 4 Os parâmetros necessários para criar o pacote do Guest Additon do VirtualBox.
Quando o Uranos instala sistemas Windows, como descrito na próxima seção, ele primeiro inicia uma versão reduzida do Linux. Este sistema operacional descompacta os arquivos necessários no local e particiona o disco rígido. O kernel e o disco de RAM do Linux infelizmente não são parte do pacote, mas você pode conseguí-los [3] e instalá-los na raiz TFTP gerenciada pelo Uranos ($URANOSROOT/www/ modules/PXE/pxeroot). É claro que o servidor TFTP também precisa deste caminho como diretório raiz. Como último passo da instalação, é aconselhável que você importe templates de instalação para sistemas operacionais e particionamento de dados. Na interface web, a URL para o projeto Uranos é apresentada em Instalation/Import, mas isso supõem que o servicor Uranos tem acesso à Internet.
Instalação do cliente Para se preparar para uma instalação do Uranos, você precisa primeiro criar um novo sistema operacional em Instalation/Operating System. Você pode, por exemplo, selecionar uma instalação do Windows XP e do Ubuntu Server 12.04 LTS a partir do menu pop-up. Para personalizar as instalações, clique em Content na lista. A figura 1 exibe algumas das opções para o Windows, incluindo os padrões para a senha do administrador, componentes de instalação, propriedades de rede e valores de registro. Para o Ubuntu é possível definir a senha do usuá-
rio root, um usuário padrão, um servidor NTP, parâmetros de rede e a resolução do X11. Discos rígidos são utilizados como templates para o particionamento dos sistemas. Você pode definir o particionamento de modo absoluto ou como porcentagem (como, por exemplo, 10GB para o sistema operacional e o restante para dados). Sistemas de arquivos, pontos de montagem, ou letras de drives também são atribuídos às partições. Caso você falhe em encontrar uma opção apropriada entre os templates, clique em new harddisk para criar um template. O próximo passo é configurar o sistema a ser instalado em Computer/ New System (nome do computador, endereço IP e endereço MAC visível ao servidor Uranos). O menu Computer te oferece a opção de importar sistemas. Para que isso aconteça, ele pode avaliar as entradas ARP, fazer um ping em uma determinada faixa de IPs, importar bases de dados LDAP, buscar como o Nmap e importar arquivos de texto. Entretanto, as importações apenas fornecem dados brutos, os quais adicionei manualmente neste exemplo. Depois de instalar os conectores para o DHCP e o LDAP, você verá um botão DHCP no menu de contexto do computador. Utilize-o para acrescentar um host diretamente, através da configuração DHCP estática, que é armazenada no LDAP. Para processar a instalação, você pode agora atribuir um ou mais sistemas operacionais em Operating System. No caso de muitos templates,
www.linuxmagazine.com.br
Servidor de instalação centralizado | TUTORIAL
Figura 5 O ícone em destaque cria uma nova versão.
a prioridade é decisiva. O próximo passo é atribuir o novo template de particionamento em Patitioning/ new harddisk. Novamente, é possível customizá-lo em Content.
Bem organizado Antes de dar início a instalação, é necessário criar as entradas para o menu de boot PXE e armazenar os arquivos de instalação para o Windows no compartilhamento Samba. A instalação do Windows é feita pelo kernel do Uranos e pelo disco de RAM. Para o Ubuntu, você precisa de uma cópia do Linux e arquivos initrd.gz do diretório $CDROM/install/ netboot/Ubuntu-installer/i386 de um CD de instalação na pasta pxeroot do Uranos. Se você for trabalhar com vários kernels de múltiplas distribuições, provavelmente irá querer criar uma estrutura de pastas para armazená-los. No menu PXE, crie duas novas entradas de menu para o Windows e para o Ubuntu. Na estrutura do menu padrão, use o submenu Instalattion para os clientes organizarem as duas entradas. O kernel Uranos é a opção certa para o Windows. O Ubuntu necessita do kernel copiado do CD. Os initrds são atribuídos de acordo com os kernels. O mecanismo Preseed é usado para instalações do Ubuntu. O parâmetro de instalação se parece com:
(contudo, em nossos testes com o Fedora 16, uma opção desconhecida nos causou problemas. Reportamos o fato para o desenvolvedor do Uranos). Para o Ubuntu, perceba que -- no perfil -- os parâmetros Auto Partitioning, Auto Partitioning Device, Auto Partitioning recipes e Auto Partitioning own recipes precisam ser desabilitados no submenu Partitioning. O seguinte comando é apropriado ao Windows:
para usuários convidados pelo Samba no servidor Uranos. No subdiretório z/OS (não possui relação alguma com o sistema operacional para mainframes com o mesmo nome), é preciso criar um subdiretório para cada instalação (por exemplo, Windows 7 ou XP para x86 ou x86_64). Cada pasta precisa de um arquivo info.txt. Como exemplo, o arquivo para a instalação do Windows parece com este:
z_fs=SMB z_user=guest z_pass=guest z_path=//172.17.1.1/install profile=unattended
PRODUCT: XP SERVICEPACK: 1 PRODUCTLANG: en-US ARCH: x86 FILELOC: 0 DRIVERDIR: /z/drivers/winxp
Como estes parâmetros sugerem, o kernel do Uranos procura por um compartilhamento SMB, a instalação do XP e mais alguns arquivos. Uma lista completa com os parâmetros suportados está disponível em [4].
Armazenamento centralizado Quando você descompactou o diretório Uranos anteriormente, o processo criou um diretório chamado z contendo a raíz do compartilhamento e também o diretório www. Isto pode ser compartilhado como somente leitura
No arquivo z/etc/init.conf, a entrada para o servidor de interface gráfica deve apontar para a instalação do Uranos. Como segundo passo na instalação Windows, você agora precisa alterar o arquivo z/etc/win/ postinst.js. Todas as entradas devem começar com UAX_; isto é, eles precisam apontar para a instalação local. Finalmente, copie a pasta i386 da mídia do Windows XP para a pasta do sistema operacional. Este caminho também precisa estar presente no template do Windows XP (Insta-
auto=true priority= critical console-setup/layoutcode=en critical console-setup/ layoutcode=en locale=en_US URL=http://URANOSSERVER/www/ external.php?action=install_os --
O script external.php gera configurações do tipo Kickstart da mesma forma como faz a família Red Hat; você precisa modificar apenas os parâmetros ks para a linha de comando
Linux Magazine #94 | Setembro de 2012
Figura 6 Defina os parâmetros da versão.
65
TUTORIAL | Servidor de instalação centralizado
lation/Operating System) utilizando a notação do Windows de forma que fique claro qual a origem dos arquivos durante a operação de cópia. Quando o cliente se inicializar a partir da rede, o menu de boot do Uranos será exibido no sistema (figura 2), permitindo que você decida interativamente o que acontecerá em seguida. Para uma instalação automática, será novamente necessário alterar o sistema que você criou em Computer e depois em PXE (não no menu principal) no host, escolher o sistema a ser instalado (Windows ou Ubuntu, neste exemplo). Quando o computador reiniciar – novamente através da rede – o sistema operacional desejado estará instalado. Na atual configuração simples, a instalação do Ubuntu baixa os pacotes através da Internet (ou de um repositório local configurado em Mirror). Para o Windows, o kernel Uranos inicia primeiro e então copia os arquivos necessários para o sistema alvo. No segundo boot, desta vez realizado a partir do disco local, ele inicializa o Windows e completa
a instalação automaticamente. O Uranos então apaga automaticamente a entrada do netboot para que o computador seja inicializado a partir da entrada padrão no menu de boot local. Depois de completar a instalação com sucesso, o Uranos ajusta o status do sistema operacional para 1. Se alguém tentar reinstalar, o arquivo de resposta (external.php) gerado estará vazio. Para resetar isso é preciso pressionar o botão Reset Status próximo a entrada de sistema operacional para um computador. Até este ponto, uma enorme quantidade de trabalho detalhado foi necessário para instalar os dois sistemas automaticamente – duas instalações manuais teriam sido mais rápidas. Todavia, a pesquisa de grupos do Uranos permite que administradores definam um grupo de computadores por parâmetros, tais como endereço MAC, a sala na qual os computadores encontram-se fisicamente de acordo com a base de dados ou o nome do host. O servidor Uranos realiza instalação destes computadores da mesma
Módulo
Função
Calendar
Gerenciamento de Calendário
Computer
Gerencia os sistemas e inventários suportados pelo Uranos
Cron
Configura o daemon cron
DHCP
Gerencia o servidor DHCP e o back end LDAP
DNS
Gerencia o servidor DNS e o back end LDAP
FreeRadius LDAP Gerencia um servidor FreeRadius com back end LDAP Fusioninventory
Inventário avançado de hardware e software
LDAP
Uma interface web para o LDAP
Licenses
Gerenciamento de licenças
Locations
Gerenciamento de locais
PXE
Gerencia o menu de boot TFTP e suas entradas
quwiki
Um wiki para documentar a instalação
Search
Busca textual na base de dados completa do Uranos
SSH-Client
Um cliente SSH baseado na web para acesso ao sistema de arquivo via SCP e SFTP
Switch
Gerencia switches via SNMP
Syslog-NG
Gerencia configurações do Syslog
Installation
Define as partições de disco rígido e o sistema operacional
Tabela 1 Módulos do Uranos.
66
forma que o sistema de exemplo instalado. Isso significa que os resultados compensam o trabalho inicial. Grupos de pesquisa também incluem configuração de distribuição de pacotes de software. Para uma instalação automatizada do Windows 7, o site do Uranos [2] descreve como você pode utilizar a ferramenta Sysprep da Microsoft para preparar uma imagem e armazená-la no compartilhamento.
Software adicional Além de sistemas operacionais, o Uranos pode também adicionar pacotes de software. Desta forma você pode criar sistemas completamente configurados, os quais os usuários podem simplesmente ligar e usar. A lógica do Uranos distingue-se daquela de um repositório (uma coleção de programas instaláveis), de software (um programa a ser instalado, como por exemplo, o Firefox) e de versões de um mesmo software (para número de versões e idiomas). Além disso,
Quadro 2: Suporte Quando os recursos de um programa crescem, sua complexidade frequentemente acompanha o movimento. Minha expectativa, depois de ler (o não tão atualizado) guia de instalação e de completar a (não totalmente intuitiva) instalação, era de ter um sistema razoavelmente autoexplicativo, mas fiquei desapontado a primeira vista. Depois de trocar e-mails com o desenvolvedor, que me ajudou a entender o que estava acontecendo, comecei lentamente a ganhar mais confiança na solução. A documentação na página do projeto [2] talvez cubra cada um dos menus, mas não explica de forma coerente e não há um tutorial indicando aos administradores de sistema por onde começar depois de terminada a instalação. Gzuk respondeu rápida e compreensivamente ao meu e-mail durante o período de teste – este suporte foi de grande ajuda e me deu uma imagem muito mais clara do sistema em muito aspectos.
www.linuxmagazine.com.br
Servidor de instalação centralizado | TUTORIAL
outros pacotes agrupam programas para determinados idiomas. Exatamente como acontece com sistemas operacionais e discos rígidos, você pode baixar um repositório para programas livres para Windows a partir do site em Repositories e criando um novo repositório com as configurações mostradas na figura 3. Contudo, antes da instalação, é necessário personalizar a linha de comando para cada sistema operacional. Na seção arquivo dos dados de instalação está o wemerge.cmd e wemerge.sh para o Linux. Ambos existem apenas como um arquivo .example após a instalação e você precisará renomeá-los ou copiá-los. Além disso, você precisa digitar a URL para o sistema Uranos no parâmetro GUISERVER em ambos os casos (novamente, o arquivo external.php é acrescentado como o parâmetro de comando apropriado). Então, digite os parâmetros que o cliente utilizará para montar a árvore do sistema de arquivos – no Windows utilizando SMB e no Linux com NFS ou SSH-FS. Agora você pode escolher os pacotes que quer instalar no menu Software do cliente a receber a instalação. Caso eles não estejam na área de arquivos, o Uranos irá baixá-los, uma vez que a seção de arquivos esteja acessível à escrita por parte do cliente. Uma coisa que nossos testes descobriram é que o servidor Uranos recorda-se tanto dos sistemas operacionais quanto dos programas
instalados. Portanto, na instalação automática, os clientes perguntam ao servidor Uranos o que fazer e o servidor responde “nada”, a partir da segunda tentativa em diante. Para apagar tudo, use o item Computer/ Reset do menu (próximo a Software), ou use este recurso par definir quais partes o Uranos deve resetar.
Acrescente seus próprios softwares Utilizarei o guests additions do VirtualBox para o Windows como exemplo e passarei rapidamente pelo método para instalar seus próprios pacotes de software – a documentação neste caso não está completamente consistente, com é o caso das outras áreas. O primeiro passo é criar um novo repositório do tipo Internal e nomeá-lo como local. Na localização, digite o caminho para o servidor de arquivos, apesar disso não ser relevante, já que o servidor Uranos não sincroniza como ele. Agora acrescente seus novos softwares. A figura 4 mostra os parâmetros necessários. A URL aqui não tem relação alguma com o download. Ela apenas documenta de onde o software vem. Para o terceiro passo, use o ícone marcado em vermelho na figura 5 para criar uma nova versão. A caixa de diálogo seguinte contêm os detalhes mais importantes. A figura 6 exibe as configurações usadas com sucesso em nosso laboratório. Digite o caminho (Path) em um formato que o cliente entenda. Para sistemas Li-
Mais informações [1] Projeto Unattended: http://unattended.sourceforge.net
nux, o caminho deve ser relacionado ao diretório NFS montado. Em Repository filename, especifique a origem da instalação (como, por exemplo, uma URL de onde você pode baixar a versão exata do pacote que irá precisar). No atual exemplo, isso não é necessário porque o guest additions vem com a imagem ISO para o VirtualBox.
Conclusão O Uranos é uma ferramenta com uma interface web que pode ajudar administradores a manter uma mistura colorida de sistemas operacionais para tarefas de instalação. Um servidor de instalação que oferece instalações Windows sem a necessidade de um servidor Windows é uma opção atraente para administradores Linux. Outro benefício é que o Uranos gerencia DNS, LDAP, DHCP no LDAP e o próprio LDAP. O recurso de inventário integrado e gerenciamento de licenças auxilia administradores a manter o controle dos detalhes. Apesar dos recursos do Uranos não serem nada novos em termos de componentes individuais, a soma total faz do Uranos uma ferramenta interessante. Caso você tenha que manter vários modelos de Windows e padrões de Linux para automatizar o processo de instalação, o Uranos é o elemento que faltava. Configurar um servidor Uranos exige uma quantidade razoável de tempo e esforço para sentir-se à vontade com a lógica “por baixo” do sistema. Este esforço não é justificável para um cenário com 5 clientes, todavia, você pode levá-lo em conta caso sejam 50 clientes e se for o caso de 500 clientes, o Uranos será então uma escolha sensata. ■
[2] Projeto Uranos: http://uranos.sourceforge.net [3] Versão do Linux que inicializa antes da instalação do Windows: http://sourceforge.net/projects/uranos/files/uranos-boot/ [4] Parâmetros do kernel para o Uranos: http://uranos. sourceforge.net/www/index.php?secid=1n9asj1uvhac248l3qk 50e7n81&loadsub=quwiki&func=wiki&type=index&show=42
Linux Magazine #94 | Setembro de 2012
Gostou do artigo? igo? Queremos ouvir sua opinião. Fale conosco em cartas@linuxmagazine.com.br azine.com r Este artigo no nosso sso site: s e: http://lnm.com.br/article/7496 r/artic 7496
67
TUTORIAL
TUTORIAL | Ambiente Wine para aplicativos Windows
Como construir um ambiente Wine para aplicativos Windows
Vintage versátil Graças ao Wine, cada vez mais aplicativos Windows são executados no Linux. Se investirmos um pouco de tempo em configuração e solução de problemas, não ficaremos presos ao Windows, mesmo com aplicativos que ninguém nunca sonhou executar no Linux. por Harald Jele
A
lém da fácil substituição de grandes pacotes de escritório e pacotes gráficos, o mercado agita-se com os incontáveis (e normalmente menores) programas que atendem às necessidades de nichos de pequenas e médias empresas. Geralmente, empresas ou órgãos públicos criam sua própria personalização para aplicativos de missão crítica. As bibliotecas do famoso sistema Wine [1] fornecem um meio de executar aplicativos Windows dentro do Linux. Atualmente, a versão 1.4 é a mais estável, mas a versão em desenvolvimento 1.5.6 também está disponível. O modo de configuração do Wine mudou completamente no decurso dos anos. Embora já tenha sido considerado complicado, tornou-se significativamente mais fácil e simples, e lida com muitos detalhes irritantes que anteriormente eram deixados para o administrador. Esses detalhes incluem a integração de
68
dispositivos removíveis, como DVDs, ou ainda o sistema de impressão CUPS. Uma mudança igualmente significativa na arquitetura do Wine foi a introdução de prefixos (desde 2003, também conhecidos como “frascos”). Configurar um prefixo significa que é possível instalar e operar o aplicativo Windows dentro de um contexto predefinido sem entrar em conflito com outro aplicativo. Um projeto recente do Instituto Robert Musil da Universidade de Klagenfurt fornece um interessante estudo de caso do Wine no mundo real. O Instituto produziu recentemente uma nova edição das obras do autor austríaco Robert Musil (figura 1). A versão eletrônica desta nova edição é baseada no aplicativo Folio Views, que só pode ser executado em Windows. Usamos o Wine para criar uma versão que pode facilmente iniciar a partir do Linux (quadro 1).
Decantar e instalar O Wine é rapidamente instalado em qualquer distribuição popular, e o repositório do Ubuntu mostra ser particularmente amigável. Configurar o metapacote wine com o gerenciador de pacotes apt leva em conta as bibliotecas necessárias e aplicativos essenciais e também fornece as ferramentas de configuração necessárias, integrando o Gecko para renderizar visualizações HTML e fontes usadas com frequência no ambiente Windows. Para obter uma lista de versões disponíveis, pesquise usando apt-cache search wine ou aptitude search wine (listagem 1).
Como criar um prefixo Um prefixo cria um ambiente virtual com configurações personalizadas para a execução de um aplicativo do Windows no Wine. O Wine sempre
www.linuxmagazine.com.br
Ambiente Wine para aplicativos Windows | TUTORIAL
Figura 2 A versão digital de todas as obras de Klagenfurt do escritor Robert Musil, publicada pela Universidade de Klagenfurt, com o Folio Views, Wine, Linux e VirtualBox.
Figura 1 Um retrato-grafite de Robert Musil à “Musilhaus” em Klagenfurt.
cria um prefixo se este for necessário mas não estiver disponível. No entanto, o administrador pode – e deve – criar explicitamente um prefixo com antecedência. O Wineboot usa o comando: env WINEPREFIX=~/nome_do_prefixo wineboot –u
para definir o prefixo do Wine chamado nome_do_prefixo como a estrutura de diretórios no diretório pessoal do usuário. Criar um prefixo torna as experiências relativamente mais seguras, sem que o usuário corra o risco de estragar a instalação do aplicativo inteiro com uma ação simples. O uso cuidadoso de um prefixo realmente torna as temidas “batalhas de instalação da morte” do sistema Windows em coisas do passado. Além disso, a utilização paralela de
aplicativos que iriam, nativamente, entrar em conflito com o Windows no mesmo computador, agora possibilita que cada programa tenha seu local exclusivo no sistema. Uma vez que um prefixo é devidamente criado e configurado, pode-se facilmente copiá-lo para um novo diretório pessoal quando for transferido para um computador diferente – e isso também funciona nas operações multiusuários. O administrador só tem que manter a es-
Listagem 1: Pacotes do Wine no Ubuntu 11.10 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17
Playonlinux 01 - Frontend for wine 02 Wine1.2-gecko - Microsoft Windows compatibility layer (web browser) 03 Wine1.2-gecko - Microsoft Windows compatibility layer (web browser) : 05 q4wine - Qt4 GUI for wine (W.I.N.E) 06 Wine - Microsoft Windows Compatibility Layer (Meta Package) 07 Wine1.2 Microsoft Windows Compatibility Layer (Binary Emulator and Library) 08 Wine1.2-dbg - Microsoft Windows Compatibility Layer (debugging symbols) 09 wine1.2-dev - Microsoft Windows Compatibility Layer (Development files) : 11 winetricks - Microsoft Windows Compatibility Layer (winetricks) 12 gnome-exe-thumbnailer - Wine .exe and other executable thumbnailer for Gnome 13:separate wine settings 14 Wine1.3 - Microsoft Windows compatibility layer (Binary Emulator and Library) 15 wine1.3-dbg - Microsoft Windows Compatibility Layer (debugging symbols) 16 wine1.3-dev - Microsoft Windows Compatibility Layer (Development files) :
Linux Magazine #94 | Setembro de 2012
69
TUTORIAL | Ambiente Wine para aplicativos Windows
trutura dos arquivos e diretórios ou, mais corretamente, criar uma nova estrutura. A melhor abordagem é a de usar o comando: tar cfzv nome_do_prefixo.tgz nome_do_prefixo
para preparar o diretório com o prefixo a ser movido. Em seguida, execute tar xfzv para descompactá-lo no diretório pessoal do usuário desejado. Caso um usuário não crie seu próprio prefixo, ou se esqueça de apontar para um prefixo quando iniciar um programa, os resultados de todas as atividades serão colocados no subdiretório .wine do diretório pessoal do usuário (~/.wine), que terá de viver sem os benefícios do prefixo.
Reinício simulado O Wineboot basicamente executa as mesmas ações que um sistema Windows executaria. A gama completa de opções do Wineboot é descrita no site do projeto Wine [2]. A estrutura de diretório gerada pelo Wineboot oferece um ambiente de trabalho que o administrador pode examinar mais de perto com as ferramentas padrão do Wine. O comando:
70
Figura 3 O Wine Explorer é perfeito para testar uma nova instalação.
revela o que é uma estrutura de diretório essencialmente autoexplicativa: ~/nome_do_prefixo/drive_c/; mapeia o disco rígido “inicializado” de uma típica instalação do Windows; ~/nome_do_prefixo/dosdrives e lista as unidades criadas, juntamente com suas atribuições de letra de unidade.
Regedit Os usuários executam a ferramenta Wine Regedit (figura 4) com o seguinte comando:
env WINEPREFIX=~/nome_do_prefixo wine C:\\windows\\explorer.exe
env WINEPREFIX=~/nome_do_prefixo wine C:\\windows\\regedit.exe
executa o Explorer do Wine e apresenta a visão do servidor Wine nos sistemas de arquivos montados, juntamente com os arquivos que contém (figura 3). O Wine Explorer oferece ao administrador uma opção para verificar se os sistemas de arquivos estão montados da maneira desejada quando criar ou atualizar o prefixo Wine atual – ou seja, ao especificar a letra de unidade correta do mundo Windows. Sem a intervenção do administrador, o Wine mostra apenas as unidades de CD-ROM e DVD, se estas estiverem montadas no sistema Linux. A exploração paralela do diretório do prefixo com ferramentas Linux
que edita o registro do prefixo específico do sistema. A ferramenta armazena os valores que foram inspecionados ou valores que foram editados em três arquivos abaixo de ~/nome_do_prefixo/: system.reg, user.reg e userdef.reg. Mesmo que
a tentação seja grande, os especialistas em Shell devem ficar longe desses arquivos e usar o Regedit. A wiki do Wine fornece uma visão prática das opções de inicialização do Regedit [4]. A partir de agora, o centro nervoso de qualquer configuração adicional do prefixo é a ferramenta gráfica do Wine, chamada winecfg, que os usuários podem iniciar com: env WINEPREFIX= ~/nome_do_prefixo winecfg
Por um lado, esta ferramenta gráfica fornece uma abordagem conveniente para a configuração do comportamento do Wine; por outro, também executa ou instala aplicativos. Mas, se o usuário desejar obter controle total sobre o processo de instalação, não haverá alternativa aos programas de linha de comando.
Figura 4 O Wine vem com seu próprio editor de registro.
www.linuxmagazine.com.br
Ambiente Wine para aplicativos Windows | TUTORIAL
Figura 5 A lista de resultados do TrackWinstall mostra todas as alterações encontradas em uma instalação do Windows.
Uma questão de gosto: nativo ou embutido A instalação do Wine coloca um número considerável de bibliotecas (DLLs) na máquina de destino. A maioria destas bibliotecas foi feita através de reengenharia pelos desenvolvedores do Wine que, muitas vezes, eliminam a necessidade de se possuir uma licença do Windows. Como essas DLLs cobrem muitas chamadas de sistema, muitos aplicativos funcionarão sem muita assistência. Se algo falhar, é útil verificar o aplicativo winecfg na guia Bibliotecas, que permite que se altere a ordem em que o Wine carrega bibliotecas do Windows. Espere ter dor de cabeça depois de uma instalação do Wine caso as
bibliotecas fornecidas não realizem funções essenciais para um aplicativo específico. Neste caso, é necessário integrar e usar as DLLs nativas fornecidas pela instalação do Microsoft Windows em vez das DLLs que vêm com o Wine. A ferramenta winecfg na guia Bibliotecas permite que sejam especificadas as bibliotecas nativas da Microsoft. Aqui, é preciso usar a DLL da Microsoft chamada cfgmgr32, que o administrador terá que buscar a partir de uma instância do Windows e inserir no local correto na estrutura de diretórios do Wine. Isto significa que o arquivo que no Windows está em c:\windows\system32\cfgallmgr32.dll
será encontrado no seguinte prefixo do Wine: ~/nome_do_prefixo/drive_c/ windows/system32.
Coexistência aconchegante Esta mudança deixa a entrada abaixo no arquivo user.reg e uma entrada correspondente no registro: [Software\\Wine\\DllOverrides] 1320056438 "cfgmgr32"="native,builtin"
permitindo ao Wine emular o comportamento que a Microsoft introduziu no Windows XP, conhecido como side-by-side ou SxS [5]. O diretório c:\windows\WinSxS contém várias versões da mesma biblioteca de sistema side-by-side, discriminadas por subdiretórios. Aplicativos do Windows podem solicitar claramente versões especificadas do sistema.
Figura 6 O recurso Process Info lista as DLLs ligadas a um executável Windows.
Linux Magazine #94 | Setembro de 2012
71
TUTORIAL | Ambiente Wine para aplicativos Windows
Iniciando aplicativos Use o comando abaixo para iniciar o típico programa de instalação Windows de um aplicativo personalizado ou um jogo através de uma unidade de DVD mapeada na letra de unidade D na linha de comando: env WINEPREFIX=~/nome_do_prefixo wine D:\\Setup.exe
O Wine também oferece outros mecanismos para iniciar programas. A sintaxe oficial, de acordo com a wiki do Wine, é: Figura 7 Executar um aplicativo Wine com o conjunto variável de ambiente WINEDEBUG=+relay gera um enorme volume de saída.
Rotinas de instalação muitas vezes fazem uso dessa capacidade. Se uma instalação do aplicativo falhar e nenhuma informação especial estiver disponível com as razões da falha, substituir este diretório pelo diretório equivalente de uma instalação do Windows pode ser útil, pelo menos durante a instalação. No entanto, recomenda-se cautela especial: as bibliotecas do sistema são rapidamente substituídas, diretórios inteiros e ferramentas são rapidamente
modificados, e ferramentas como o Winetricks [6] despejam uma infinidade de arquivos gratuitos da Microsoft no ambiente Wine. Esse comportamento nem sempre é compreensível, portanto, os desenvolvedores do Wine muitas vezes avisam aos usuários: “se esperamos ajuda da comunidade, devemos nos abster de ‘reforçar’ a instalação com DLLs demais [7]”. Instalar um aplicativo do Windows é algo que os usuários devem resolver sem profunda manipulação do sistema.
env WINEPREFIX=~/nome_do_prefixo wine start 'D:\Setup.exe'
Ou podemos usar a convenção Unix para o nome do caminho: env WINEPREFIX=~/nome_do_prefixo start /Unix /media/Setup.exe
A segunda variante é recomendada, especialmente se a rotina de instalação ou o programa não implementar corretamente caminhos individuais [8]. Se o programa de instalação for concluído sem cancelamento, as chances de a instalação ter funcionado são boas. Neste caso, o Wine opera exatamente como o Windows: se a instalação chama por uma entrada na área de trabalho com um ícone (vínculo) – o Wine oferece isso – e uma entrada aparece no menu Área de Trabalho do Linux para o Wine, os programas instalados estão localizados abaixo deste menu.
Como obter informação
Figura 8 Comandos suportados pelo Wine Debugger.
72
Se a instalação falhar ou se o aplicativo do Windows não iniciar, as opções a seguir são técnicas de resolução de problemas – de preferência consultadas antes de se começar o teste inicial: ➧ Verifique se o aplicativo está inserido no banco de dados de compatibilidade criado pelos desenvolvedores comerciais do Wine, o CodeWeavers [9].
www.linuxmagazine.com.br
Ambiente Wine para aplicativos Windows | TUTORIAL
➧ Procure uma resposta na Internet. Muitas tentativas – sucessos e fracassos – estão documentadas online, porém não registradas no CodeWeavers. ➧ Instale o programa em uma instância nativa do Windows para fins de comparação. ➧ Use o Wine Debugger especial [10]. Trabalhar com uma instância paralela do Windows requer alguma preparação, pois o objetivo é capturar os detalhes do processo de instalação e a forma como o aplicativo é chamado. A ferramenta escolhida deve efetuar a instalação, informando quais diretórios, arquivos e entradas de registro são criados pela rotina de instalação, e quais bibliotecas são acrescentadas ao sistema. Mesmo que será possível conseguir isso com um mínimo de trabalho manual, aplicativos livres, como o TrackWinstall (figura 5) [11] oferecem o mesmo serviço e alguma conveniência. O ideal é ter uma ferramenta que, depois de monitorar um processo de instalação, crie os diretórios e arquivos, as novas entradas do registro e as bibliotecas relevantes do sistema; também deve permitir que sejam facilmente exportados para um ambiente convencional do Wine. Se, em seguida, evitarmos a reinstalação, poderemos iniciar o aplicativo através dos comandos ou ícones descritos anteriormente. Se esta abordagem falhar, uma inspeção mais aprofundada da atividade do aplicativo na instalação paralela do Windows será então necessária. O primeiro passo é iniciar o aplicativo e verificar as bibliotecas do sistema que ele carrega quando iniciado. Ferramentas simples são boas para essa tarefa, e muitas delas estão disponíveis gratuitamente ou como versões de demonstração para uso gratuito limitado. O DLL Show [12] já é um veterano, mas ainda oferece um bom serviço e de modo confiável revela aplica-
Linux Magazine #94 | Setembro de 2012
tivos e bibliotecas associadas carregadas no espaço de memória do sistema operacional. Um serviço semelhante é fornecido pelo Process Info [13], que é gratuito por 30 dias (figura 6). As limitações desta versão temporária em comparação com a versão completa são irrelevantes para a maioria dos usuários Linux, principalmente porque a ferramenta pode ser instalada e executada em um ambiente Wine. Com base na lista de bibliotecas monitoradas que são carregadas pelo aplicativo, os administradores podem obter uma impressão inicial na qual se deve prestar atenção. A saída no console de execução já pode revelar se uma biblioteca do Wine falha em oferecer a um aplicativo todas as funções relevantes e, portanto, tem de ser substituída por uma versão nativa. Em qualquer caso, carregar o Debugger Wine ao iniciar o aplicativo deve ajudar.
Cuvée Um cenário que os administradores do Windows chamam de Inferno de DLLs demonstra que substituir continuamente bibliotecas é uma abordagem com limitações – nem todas as versões das bibliotecas do sistema irão cooperar bem. Quando chegar a este ponto, qualquer ação que se tome requer pesquisa, habilidade, sorte e, por último, mas não menos importante, paciência.
Para acessar as informações de depuração facilmente, passe a variável de ambiente WINEDEBUG na hora da inicialização. O valor +relay no modo de depuração do Wine mostra no console todas as chamadas de função e descrições das bibliotecas associadas. Isto dá ao administrador algumas informações iniciais quanto à chamada de função que está causando a falha no Wine e qual DLL é responsável por ela. Se redirecionarmos a saída-padrão para um arquivo de log, poderemos então analisar o processo de inicialização em seu próprio tempo hábil: env WINEPREFIX=~/nome_do_prefixo WINEDEBUG=+relay wine aplicativo.ex&&Egt;debug.log
O parâmetro +all para a variável ambiente WINEDEBUG (figura 7) faz com que o depurador fique mais falante: env WINEPREFIX=~/nome_do_prefixo WINEDEBUG=+relay wine aplicativo.exe & > inicializacao_aplicativo.log
O Wine, em seguida, encaminha todas as informações acessíveis no modo de depuração para a saída-padrão. Isso retarda significativamente o início do aplicativo, mas uma vez que se ganha um pouco de prática, esta abordagem pode oferecer uma impressão muito mais profunda dos mecanismos implementados e as armadilhas que podemos tentar contornar.
Quadro 1: Robert Musil em Klagenfurt A edição de Klagenfurt das obras de Robert Musil foi lançada em 2009 como uma edição eletrônica em DVD – o projeto usa o Folio Views, um aplicativo do Windows (figura 2). Para ampliar o grupo de usuários potenciais, o instituto decidiu oferecer a segunda edição, que será publicada em 2013 com grandes acréscimos ao conteúdo e correções, no Linux, com o Wine, e uma instalação pré-construída no VirtualBox [16]. Em particular, os participantes do projeto têm como objetivo atingir os usuários que preferem o Linux e o Mac OS X. Além disso, a configuração oferece suporte à integração simples em uma rede local, sem a necessidade de investimento em programas adicionais.
73
TUTORIAL | Ambiente Wine para aplicativos Windows
Além de definir a variável de ambiente WINEDEBUG, também é possível lançar diretamente um aplicativo com o depurador embutido do Wine: env WINEPREFIX=~/nome_do_prefixo winedbg aplicativo.exe
O depurador do Wine oferece aos testadores experientes os recursos de depuração familiares que vêm com as bibliotecas de ambiente Wine do sistema. Administradores, portanto, têm uma vasta gama de métodos para inicializar aplicativos de uma maneira controlada. As semelhanças com outros depuradores não é coincidência; os comandos implementados pelo depurador do Wine (figura 8) são um subconjunto do Projeto GNU Debugger (GDB). O site do desenvolvedor sobre a depuração do
Wine [10] contém uma boa visão geral da abordagem sistemática de um problema desconhecido que ocorre ao tentar-se executar um aplicativo do Windows em um ambiente Wine.
CodeWeavers: os “mestres vinicultores” Se toda essa depuração e testes não ajudarem a executar um aplicativo no Linux e no Wine, ainda existem outras opções. Com o lema “carinhas tentando mudar o mundo da computação para outros carinhas”, a CodeWeavers [14] impulsiona a integração de aplicativos Windows no Wine. Embora os produtos CrossOver e CrossOver Games sejam comerciais e fechados, ajudam a guiar muitos usuários – principalmente
Mais informações [1] Quartel General do Wine: http://wiki.winehq.org/ [2] Descrição do Wineboot: http://wiki.winehq.org/wineboot/ [3] Wine DIB engine: http://wiki.winehq.org/DIBEngine/ [4] Descrição do Regedit: http://wiki.winehq.org/regedit/ [5] Descrição da Microsoft sobre os conjuntos lado a lado (SxS): http://msdn.microsoft.com/en-us/library/aa376307.aspx [6] Winetricks: http://www.winetricks.org [7] Detalhes sobre winetricks na wiki do Wine: http:// wiki.winehq.org/winetricks/ [8] Opções de linha de comando do Wine: http://wiki.winehq. org/FAQ#head-3b297df7a5411abe2b8d37fead01a2b8edc21619 [9] Centro de Compatibilidade do CodeWeavers Crossover (CCCC): http://www.codeweavers.com/compatibility/ [10] How-to do Wine debugger: http://www.winehq. org/docs/winedev-guide/wine-debugger/ [11] TrackWinstall: ftp://ftp.heise.de/pub/ct/ ctsi/trackwinstall_111.zip [12] DLL Show: http://www.gregorybraun.com/DLLShow.html
gamers – no processo de fazer com que aplicativos da Microsoft executem no Linux. Veja o artigo sobre CrossOver que aparece em outro local nesta edição. Também útil, com a vantagem de ser livre e de código aberto, é o projeto PlayOnLinux (POL) [15], que está incluído na maioria das distribuições e vem com sua própria interface gráfica para o Wine. A longa lista de softwares suportados inclui jogos e programas como o AutoCAD, CATIA, Microsoft Office, iTunes, Google SketchUp e Adobe Photoshop e Dreamweaver. Se o aplicativo no qual estamos interessados não estiver listado na interface do PlayOnLinux, procurar por um arquivo .POL no repositório online pode ser útil. Aliás, o PlayOnLinux também usa prefixos do Wine, o que pode evitar interação indesejada com outros jogos e programas.
Janelas para novos mundos Combinações como o Wine, o Linux e o VirtualBox permitem uma solução open source completa e independente de plataforma, solução esta que permite comportar aplicativos não-Linux em um recipiente para serem guardados permanentemente. Os modelos que contêm tudo que é necessário para as operações podem facilmente ser executados, movidos ou simplesmente instalados através de cópia. E se isso não for suficiente, podemos redirecionar a saída das instâncias virtuais usando protocolos como o VNC, RDP ou NX, oferecendo recursos multiusuários e de rede a antigos aplicativos do Windows. ■
[13] Process Info: http://www.jobe-software.de/en/index_en.htm [14] CodeWeavers: http://www.codeweavers.com/
Gostou do artigo? go?
[15] PlayOnLinux: http://www.playonlinux.com/
Queremos ouvir sua opinião. pinião. Fale conosco em cartas@linuxmagazine.com.br ne.com.
[16] Jele, H. Robert Musil und das Matroschka-Prinzip: http:// wwwu.uni-klu.ac.at/hjele/publikationen/container_ ka_2013/20111114_matroschka_rmi.pdf (em alemão)
74
Este artigo no nosso sso site: s http://lnm.com.br/article/7408 /artic 408
www.linuxmagazine.com.br
Protocolo SPDY do Google acelera o HTTP | REDES
Protocolo SPDY do Google acelera o HTTP
REDES
Nova camada Passados 20 anos de sua introdução, o HTTP mostra os sinais da idade. O novo protocolo do Google, SPDY, resolve alguns problemas do HTTP sem prejudicar os sites já existentes. por Oliver Frommel
Q
uando Tim Berners-Lee estabeleceu a primeira versão do protocolo HTTP em 1991, a Internet ainda era muito simples. Em apenas uma página [1] ele descreveu em poucas palavras como o servidor deveria responder a uma requisição GET e essa descrição marcou a fundação da Web. Um ano mais tarde, ele produziu um rascunho que eventualmente chegou a ser o HTTP padronizado, em sua versão 1.0, em maio de 1996. Três anos mais tarde, o HTTP 1.1 foi padronizado para refletir a crescente carga de informações na web. O protocolo revisado reduziu o número de tentativas de conexão necessárias para um website ao introduzir conexões keepalive
Linux Magazine #94 | Setembro de 2012
(sempre conectadas), de forma que o HTTP passou a permitir múltiplas requisições em sequência, sem a necessidade de se esperar por uma resposta. O HTTP não mudou muito desde então, mesmo com tantas alterações no cenário da web. Sites com interação em tempo real, como o Google+ e o Facebook, eram inimagináveis nos tempos do HTTP 1.1. Recursos como Ajax, atualizações em tempo real e o surgimento das redes de 10GB (ou mais rápidas) tornaram a Internet o que ela é hoje. O grupo de trabalho do IETF, chamado Hypertext Transfer Protocol Bis (httpbis) [2] avalia com cuidado o tópico em relação aos problemas do HTTP e tem o papel de revisar o RFC 2616 (Hypertext
Transfer Protocol – HTTP/1.1). Esse grupo pretende somente esclarecer os mal entendidos atuais. Na lista de discussões sobre o tema, Mark Notthingham, líder do grupo, recentemente se lançou em uma discussão em relação ao HTTP 2.0, cujo primeiro protótipo severá surgir em maio de 2013 [3]. No prazo de um ano após a divulgação do protótipo, as mudanças devem ser divulgadas em uma última chamada antes da submissão do novo modelo ao IESG. Até agora, poucos fatos tangíveis existem sobre o HTTP 2.0; no entanto, os requisitos para o futuro protocolo de web incluem a necessidade de bom desempenho para navegadores convencionais e móveis, além dos atributos relacio-
75
REDES | Protocolo SPDY do Google acelera o HTTP
nados à compatibilidade. Um novo protocolo que pavimentou seu caminho nessas especificações é o SPDY (pronuncia-se speedy) [4]. Promovido pelo Google, o protocolo já possui um código vigente e tem grande chance de obter aceitação. O Google adicionou a capacidade de ler SPDY em seu navegador, o Chrome, e o protocolo já está implementado na versão de desenvolvedor do Firefox [5]. Em apenas alguns meses, a versão 11 do Firefox poderá incluir o código SPDY por padrão se os usuários acessarem os servidores do Google via SSL. Para descobrir se sua versão do Chrome suporta ou não SPDY, digite a URL chrome:// net-internals/#spdy (figura 1). Em dezembro, os desenvolvedores – incluindo os desenvolvedores do Google Apache – atualizaram o Apache para oferecer um suporte em nível de excelência para SPDY
[6]. O módulo mod_spdy para Apache
2.2 procura adicionar o protocolo SPDY no servidor Apache. Os desenvolvedores do Node.js, sempre trabalhando duro e com inovação, também já produziram um módulo disponível no Git Hub [7]. Implementações adicionais do protocolo ainda experimental já existem para Python, Java, Ruby, Go, Erlang e C, o que significa grandes potenciais para que qualquer um possa fazer testes. O Google irá entregar o código fonte para os servidores em algum momento, em um futuro próximo. Com tamanha movimentação, você irá se deparar com esse novo protocolo antes do que imagina.
Conheça o SPDY De acordo com o Google, o SPDY adiciona uma camada de sessão sobre o SSL que permite que múlti-
Quadro 1: Problemas no HTTP No whitepaper do SPDY, o Google lista alguns dos recursos do HTTP que limitam desempenho, incluindo: ➧ Requisição única por conexão – De acordo com o Google, uma vez que o HTTP pode disparar apenas um recurso por vez, um atraso no servidor de 500ms já impede o reuso do canal TCP para múltiplas conexões. Desde 2008, a maioria dos navegadores migraram do suporte a duas conexões por domínio para seis. ➧ Requisições iniciadas exclusivamente pelos clientes – atualmente, os servidores HTTP devem esperar que o cliente solicite um recurso. O protocolo, sozinho, não suporta um mecanismo para que o servidor empurre dados para o cliente. ➧ Cabeçalho de requisição e resposta sem compressão – com o uso maior de recursos como agentes de usuário e cookies, os cabeçalhos ficam cada vez maiores, aumentando o tempo total necessário para transmitir sua informação, o que deixa a conexão mais lenta, com maior latência. ➧ Cabeçalhos redundantes – o provisionamento de um protocolo HTTP requer o reenvio de informações redundantes, o que aumenta sem necessidade o tamanho do cabeçalho, reduzindo as conexões. ➧ Compressão de dados opcional – o HTTP suporta a compressão de dados, mas a maioria das conexões ainda opera sem compressão. O Google projetou o SPDY para endereçar esses problemas de uma forma a minimizar a complexidade de implantação e oferecer uma redução do tempo de carregamento das páginas em 50%.
76
plas atividades concorrentes e que se entrelaçar ocorram em uma única conexão TCP. Por conta da complexa interação entre HTTP e seu alicerce, o TCP, os navegadores precisam abrir múltiplas conexões concorrentes (quadro 1). Gerenciar múltiplas sessões TCP para suportar essas conexões simultâneas aumentam a carga e a latência. O SPDY resolve esse problema ao permitir que uma única conexão TCP resolva a história. Em essência, o SPDY é um protocolo residente entre o SSL e o HTTP. O SPDY faz o papel de abrir novos canais nas conexões HTTP em uma única sessão TCP. Ao incluir um protocolo adicional entre HTTP e SSL, os desenvolvedores SPDY oferecem melhorias significativas na latência com pouca mudança estrutural. A camada de transporte e camadas mais baixas operam sem a necessidade de modificação. Mais importante, páginas existentes e aplicativos web não precisam se preocupar com esse novo protocolo sob HTTP. O objetivo do SPDY é reter a compatibilidade e manter a estrutura básica do HTTP, como a semântica de requisições e respostas. No white paper do SPDY, o autor reporta uma melhoria de até 64% no tempo de carregamento. O objetivo declarado é uma média de 50% de melhora. Além da abertura de novos canais em uma única sessão, o SPDY também oferece benefícios como priorização de requisições em ordem de importância e compressão do cabeçalho HTTP para reduzir tráfego. O SPDY também permite conexões iniciadas pelo servidor, o que tornará hacks famosos como o Comet [8] obsoletos. Além da melhoria de desempenho, o Google quer fazer o HTTP mais seguro e, para esse objetivo, o SPDY conta com conexões protegidas por SSL.
www.linuxmagazine.com.br
Protocolo SPDY do Google acelera o HTTP | REDES
Melhorias do TCP O Google não está satisfeito em contribuir somente com um novo protocolo e também trabalha para otimizar o TCP. Como as conexões estão em cada vez maior número como dizem especialistas do Google [9], um protocolo de TCP mais rápido removerá a necessidade de fechar a janela de conexão inicial no TCP após quatro pacotes, como é requerido pelo RFC 3390. Em alguns testes, aumentar esse número para 10 pacotes levou a uma redução substancial na latência e esse objetivo está refletido no protótipo do IETF. Um patch que implementa a correção já existe no kernel do Linux [10]. O que também está planejado é um esforço para reduzir o timeout inicial ao se abrir uma conexão TCP de três para um segundo. A ideia de enviar os dados na forma de requisições HTTP ao se abrir uma conexão com o pacote TCP SYN também é interessante; essa mudança reduz o tempo de carga em uma média de 10%. Confira na rede sobre como tornar a web mais rápida [11].
Conclusão De repente, o HTTP 2.0 está muito perto de virar realidade. O protótipo inicial saiu em maio e o protocolo SPDY do Google já é parte dele. A vantagem do novo protocolo é que ele já está implementado nos servidores do Google e nos navegadores Chrome e Firefox. Implantações do protótipo em várias linguagens de programação também estão em andamento. Você até já encontra um livro eletrônico sobre SPDY [12]. ■
Gostou do artigo? o? Queremos ouvir sua opinião. Fale conosco em cartas@linuxmagazine.com.br com.b Este artigo no nosso o site: site http://lnm.com.br/article/7495
Linux Magazine #94 | Setembro de 2012
Figura 1 Versões recentes do Chrome já usam o protocolo SPDY para conexões SSL em servidores Google.
Mais informações [1] Original HTTP: http://www.w3.org/Protocols/HTTP/AsImplemented.html [2] HTTPbis Working Group: http://datatracker. ietf.org/wg/httpbis/charter/ [3] Call for HTTP 2.0: http://lists.w3.org/Archives/ Public/ietf-http-wg/2012JanMar/0098.html [4] SPDY Whitepaper: http://dev.chromium.org/spdy/spdy-whitepaper [5] SPDY in Firefox: https://bugzilla.mozilla. org/show_bug. cgi?id=528288 [6] SPDY module for Apache: http://calendar.perfplanet.com/2011/ introducing-mod_spdy-a-spdy-module-for-the-apache-http-server/ [7] SPDY for Node.js: https://github.com/indutny/node-spdy [8] Comet: http://en.wikipedia.org/wiki/Comet_%28programming%29 [9] Google Code blog: http://googlecode.blogspot. com/2012/01/lets-make-tcp-fasterhtml [10] Increasing the TCP initial congestion window: https://lwn.net/Articles/427104/ [11] Google, Let’s make the web faster: http://code.google.com/speed/ [12] SPDY Book: http://spdybook.com/
77
Conheça a coleção Academy da Linux New Media Os livros da Coleção Academy são roteiros práticos e objetivos, com didática adequada tanto ao profissional quanto ao estudante da área de TI.
O conteúdo e o formato são desenvolvidos a partir da experiência prática e educacional, com foco no desenvolvimento de competências. Cada tópico tratado está costurado com os demais, mas são contextualizados individualmente para facilitar o aprendizado por etapas.
Infraestrutura de Redes O material aqui apresentado é indicado tanto para autodidatas quanto para utilização em escolas. O professor irá se sentir confortável para desenvolver as atividades a partir do livro, que procura atender tanto à expectativa do aprendiz quanto à demanda profissional do mercado de TI.
ISBN: 978-85-61024-23-9
9 788561 024239
Passo a passo da montagem de uma rede de computadores, desde o cabeamento e roteadores até a configuração das máquinas clientes.
AC-samba_capa.indd 1
Configuração e manutenção de serviços essenciais como DNS, compartilhamento de arquivos e acesso remoto.
15/04/10 14:44
Um roteiro claro e compartimentado em atividades coesas e práticas. Essa foi a premissa para a formulação da coleção Academy. Diferente dos manuais de referência ou de guias de primeiros passos, o leitor encontra nos livros dessa coleção objetividade e didática adequadas tanto ao profissional quanto ao estudante da área de TI.
Paulo Henrique Alkmin da Costa
Samba: com Windows e Linux
O conteúdo e o formato são desenvolvidos a partir da experiência prática e educacional, com foco no desenvolvimento de competências. Cada tópico tratado está costurado com os demais, mas são contextualizados individualmente para facilitar o aprendizado por etapas.
O material aqui apresentado é indicado tanto para autodidatas quanto para utilização em escolas. O professor irá se sentir confortável para desenvolver as atividades a partir do livro, que procura atender tanto à expectativa do aprendiz quanto à demanda profissional do mercado de TI.
ISBN: 978-85-61024-22-2
9 788561 024222
Máquinas virtuais com VirtualBox Luciano Antonio Siqueira
Luciano Antonio Siqueira
Interligando Windows e Linux com Samba Paulo Henrique Alkmin da Costa
Um roteiro claro e compartimentado em atividades coesas e práticas. Essa foi a premissa para a formulação da coleção Academy. Diferente dos manuais de referência ou de guias de primeiros passos, o leitor encontra nos livros dessa coleção objetividade e didática adequadas tanto ao profissional quanto ao estudante da área de TI.
Como permitir a comunicação de diferentes sistemas operacionais em rede: Windows, Linux, Mac OS X etc. Definição de compartilhamentos de arquivos, impressoras – incluindo a instalação automática de drivers – e utilização do Samba como controlador de domínio (PDC) também para clientes Windows Vista e Windows 7.
AC-vbox_capa.indd 1
22/04/10 11:16
O conteúdo e o formato dos livros foram desenvolvidos a partir da experiência prática e educacional de seus autores, com foco principal no desenvolvimento de competências, através de conceitos, exemplos detalhados e dicas de quem realmente entende do assunto. O material é indicado tanto para autodidatas que desejam se aperfeiçoar quanto para utilização em escolas. O professor irá se sentir confortável para desenvolver as atividades a partir do livro, que procura atender tanto à expectativa do aprendiz quanto à demanda profissional do mercado de TI.
Disponível no site www.LinuxMagazine.com.br
Luciano Antonio Siqueira
Máquinas virtuais com VirtualBox Administração de infraestrutura de máquinas virtuais com Sun VirtualBox®. Como trabalhar com sistemas operacionais – Windows, Linux etc – na mesma máquina e simultaneamente.
Criação de diferentes modalidades de conexões virtuais, exportação/importação de máquinas virtuais e criação de pontos de recuperação (snapshots).
09/04/10 09:59
PREVIEW
Linux Magazine #95 Prevenção contra invasão Novas vulnerabilidades surgem todos os dias. Para manter sua rede segura, você precisa pensar como um invasor! Conheça ferramentas para manter sua rede segura e encontre potenciais focos de problema com ferramentas como o OpenVAS. Saiba como anda o nível de segurança das redes que já funcionam no protocolo IPv6 e aprenda como capturar e filtrar as atividades de sua rede para encontrar evidências de ataques ou invasões. Tudo isso e muito mais, na próxima edição da Linux Magazine! ■
Admin Magazine #08 Controle de tráfego Melhore o desempenho da sua rede com versões do kernel apropriadas para o controle de tráfego. Comparamos 6 diferentes sistemas de arquivos, saiba qual é o mais adequado para as suas necessidades. Realize backups dos dados de toda a sua rede através de ferramentas como Burp, Obnam e Backshift. Você conhece o mais novo modelo de fornecimento de sistemas de bancos de dados para a nuvem? O modelo database-as-a-service também é um dos destaques da próxima edição da Admin Magazine, não perca!
82
www.linuxmagazine.com.br