Do que se trata o artigo:

O artigo tem como foco apresentar ao leitor o que é virtualização e como ela está dividida em diversos tipos diferentes de virtualização atualmente conhecidas.

Em que situação o tema é útil:

Este tema é útil para qualquer nicho tecnológico na subárea de infraestrutura, uma vez que a virtualização foca em transformar máquinas físicas em lógicas e, como consequência, tornar as suas respectivas empresas mais rentáveis e lucrativas.

Desvendando os conceitos da virtualização:

O artigo apresenta o que é virtualização e posteriormente revela os modos como ela se manifesta. Deste modo, o leitor se identifica e compreende que pode implementar tais tipos de virtualização tanto no ambiente corporativo como pessoal.

Qual o significado real de “virtualizar” para a TI atualmente? A virtualização como conceito não é novidade, já que ambientes computacionais virtualizados existem desde os primeiros sistemas mainframe. No entanto, recentemente o termo “virtualização” se tornou comum nos ambientes de trabalho, pois todos se referem a ela de forma excessiva, porém nem sempre seu uso é contextualizado de forma correta e aplicável.

Com base nisso, veremos no decorrer deste artigo como compreender as diferentes formas de se virtualizar. Na Figura 1, temos uma rede de computadores genérica indo até um servidor central – que pode ou não estar na nuvem – onde há alguma aplicação virtualizada. Esse é o conceito de virtualização mais básico, modelo-padrão este que todos vêm à mente quando se referem à palavra virtualização.

Figura 1. Virtualização na sua forma mais básica: clientes indo ao mesmo servidor central.

Por exemplo, os emuladores de dispositivos móveis são uma forma de virtualização, pois a plataforma de hardware que executa o sistema operacional móvel foi emulada a fim de se tornar uma máquina virtual Java. Por esta razão, temos a estrutura hardware-sistema-java interligada. Desta maneira, importa apenas a máquina criada por emulação e o servidor Java. Todas as aplicações Java funcionam desta maneira como pré-requisito, ou seja, com virtualização, o que explica o fato de o Java ser tão escolhido para plataformas na nuvem. Por esta razão ele é multiplataforma.

Esta linguagem roda sobre sua Java Virtual Machine, ou seja, sobre a infraestrutura dele próprio, sua JVM, enquanto outras linguagens rodam em cima do SO, necessitando de recursos de baixo nível deste. É possível compreender que JVM falando com JVM é bem mais simples e padronizado se compararmos linguagens que falam na camada do sistema operacional e com outros sistemas que não possuem a mesma infraestrutura básica de virtualização com foco em multiplataforma. Contudo, dispositivos Java se comunicando com servidores na nuvem são apenas exemplos de um tipo de virtualização, uma vez que há muitas definições do termo “virtualização”. A maioria das definições, no entanto, são categorizadas erroneamente, tais como a chamada virtualização de processos.

Neste artigo apresentaremos virtualizações de todos os tipos: as aplicáveis tanto aos usuários finais como aos centros de processamento de dados, os chamados datacenters. Porém, antes de considerar qualquer tipo de virtualização, é importante definir qual tecnologia ou categoria de serviço será virtualizada. Grosso modo, a virtualização se encaixa em três categorias: Sistemas Operacionais (SOs), Armazenamento e Aplicações. Essas categorias, porém, são muito amplas e não delineiam adequadamente os aspectos principais da virtualização. Para qualquer um que venha a conhecer sobre virtualização, é importante separar estas três categorias generalistas em oito categorias específicas. Deste modo, pode-se compreender melhor as diferenças e similaridades entre as definições de virtualização.

Virtualização do Sistema Operacional

Hoje, a forma mais predominante de virtualização são os sistemas operacionais virtuais (ou máquinas virtuais), que rapidamente têm se tornado um componente central na infraestrutura de TI. Geralmente, essa é a forma com a qual os usuários finais estão mais familiarizados. As máquinas virtuais tipicamente são implementações completas de sistemas operacionais padrões, como o Windows Server 2008 ou RedHat Enterprise Linux, rodando simultaneamente no mesmo hardware físico.

Conforme a Figura 2, temos a estrutura de um conjunto de máquinas virtuais conectadas a um virtualizador gerenciável de Sistema Operacional que conecta ao Storage (SAN – Storage Area Network). Desta maneira, temos a infraestrutura básica de qualquer sistema operacional. As SAN são os discos rígidos trabalhando via fibra óptica, ao passo que o virtualizador administra os recursos de hardware para as máquinas virtuais. Memória, processador e disco rígido são distribuídos.

Numa SAN, os discos, também chamados de LUNs (Logical Unit Number), são apresentados ao sistema operacional. Este, por sua vez, utiliza de links/caminhos lógicos dentro do sistema de arquivos para encontrar as LUNs que estão em uma área de armazenamento determinada pelo gerenciador da infraestrutura. Desse modo, com as instruções de localização primária no interior do sistema operacional, este se conecta a servidores e switches de armazenamento. Eles, seguindo com os procedimentos setados como padrão, realizam todo o roteamento para que o sistema operacional consiga gravar e/ou ler dados nas LUNs, que como dissemos antes, podem ser considerados discos via rede.

Neste modelo tecnológico os dados não estão no disco rígido do sistema operacional, mas centralizados numa área de armazenamento, a SAN. Esta, geralmente, se comunica em alta velocidade, baseando-se quase sempre nas redes de fibra óptica.

Figura 2. Virtualização de SO.

Os Gerenciadores de Máquinas Virtuais (VMM – Virtual Machine Manager) administram cada máquina virtual individualmente. São eles que distribuem os recursos de hardware às máquinas virtuais com a mais alta tecnologia de gerenciamento, fornecendo apenas o necessário para que cada máquina virtual trabalhe de maneira performática e econômica, na medida do possível.

Cada instância de SO, isto é, cada máquina virtual individual, não possui informações suficientes para saber que é virtual e que outro sistema operacional virtual está ou pode estar sendo executando concomitantemente. Empresas como Microsoft, VMware, Intel e AMD estão abrindo caminho para a separação física entre um sistema operacional e seu hardware original, estendendo esse paradigma ao CPD, pois estas empresas enxergaram o quão bom e lucrativo para suas próprias imagens é apostar nisso. E, além de ser performático, é sustentável – termo atualmente em moda e praticamente exigido de todas as empresas. Por esta razão, a principal força motriz dessa tendência é a consolidação do CPD, que traz o benefício das máquinas virtuais ao mercado convencional, permitindo às empresas reduzir o número de máquinas físicas nos CPDs, porém sem reduzir o número de aplicações subjacentes.

Em última instância, a virtualização de sistemas operacionais poupa às empresas o custo de hardware, locação, logística e transporte, o espaço dos racks, força, gerenciamento de cabos etc. Logicamente você deve ter pensado na energia elétrica. Unir todas as máquinas físicas numa única máquina não gasta mais energia elétrica? Não há mais dissipação de calor? A resposta é não. Com a centralização, economizamos recursos energéticos. Por quê? Porque com alguma solução de virtualização de sistema operacional os recursos de hardware não são utilizados ao mesmo tempo. Eles são alocados conforme a máquina virtual pede ao seu hospedador. Para facilitar a compreensão, podemos fazer um paralelo: seria possível todas as pessoas do mundo se conectarem a internet ao mesmo tempo? Não, pois não existem tantos IPs disponíveis. Mesmo o IPv6 começando a aparecer, isso ainda não foi implementado. Os túneis entre os protocolos IPv4 e IPv6 ainda são a nossa realidade.

No futuro, todos os recursos de rede poderão estar ligados ao mesmo tempo. Hoje, infelizmente, isso ainda não é possível. Contudo, se algumas pessoas acessarem a internet na parte da manhã e outras à noite, só precisaríamos de metade dos IPs pensados inicialmente. Este é o segredo! As máquinas virtuais pensam que possuem 1 TB de disco local, pois foram configuradas pelo hospedador para terem isso como informação, porém elas só utilizam 10% disso, de forma que não teremos tanto gasto com energia e com dissipação de calor. Nas máquinas físicas, não possuímos essa utilização por demanda, por isso sempre gastamos a mesma quantidade de energia utilizando ou não todos os recursos.

Virtualização do Servidor de Aplicação

A virtualização do servidor de aplicação está disponível desde os primeiros balanceadores de carga, o que explica porque a “virtualização de aplicação” é tão usada como sinônimo de balanceamento avançado de carga.

O conceito central da virtualização do servidor de aplicação é mais bem compreendido como sendo um balanceador de carga proxy reverso, ou seja, um balanceador que busca na sua rede intranet o que ele precisa: um appliance, ou serviço que fornece acesso transparente a vários serviços de aplicação diferentes.

Em uma implementação típica, um proxy reverso hospedará uma interface virtual acessível ao usuário final no front end. No back end, o proxy reverso equilibrará a carga entre vários servidores e aplicações diferentes, assim como um servidor web. A interface virtual – frequentemente chamada de IP Virtual (VIP) – fica exposta ao mundo externo, representando-se como um servidor web real, e gerencia as conexões indo e vindo do servidor web conforme o necessário. Isso permite ao balanceador de carga gerenciar múltiplos servidores web ou aplicações como uma única instância, fornecendo uma proteção e uma topologia mais robustas do que se fosse permitido aos usuários acessar diretamente os servidores web individuais.

Essa é uma representação de virtualização ideal para muitos, uma vez que o servidor é apresentado ao mundo, ocultando a disponibilidade de múltiplos servidores por trás de um appliance de proxy reverso. A virtualização do servidor de aplicação pode ser aplicada a muitos – se não a todos – os tipos de implementação e arquitetura de aplicação. Isto desde pôr à frente os servidores lógicos de aplicação até distribuir a carga entre múltiplas plataformas de servidores web e, inclusive, de volta às camadas de dados e armazenagem no datacenter com a virtualização de bases de dados.

Virtualização de Aplicação

Embora se pareçam muito, servidor de aplicação e virtualização de aplicação são dois conceitos completamente diferentes. O que chamamos hoje de virtualização de aplicação era chamado de “clientes leves” (thin client). A tecnologia é exatamente a mesma, exceto o nome, que mudou para ficar mais adequada à TI com foco em processamento centralizado. O SoftGrid da Microsoft é um excelente exemplo de implementação de virtualização de aplicação (ver Nota do DevMan 1).

Nota DevMan 1. Softgrid

O Microsoft SoftGrid Application Virtualization é a única solução de virtualização que fornece aplicações que nunca são instaladas na máquina desktop. Todavia, acompanham os usuários nas mais diversas tarefas do dia a dia. Desta forma, eles utilizam a virtualização de serviço de modo seguro em qualquer lugar, sob demanda. É uma tecnologia muito utilizada em Streaming e aplicações.

Embora você possa usar o Microsoft Word 2007 executando localmente no seu laptop, as informações pessoais e o estado do programa são armazenados, gerenciados e fornecidos pelo Softgrid. Seu laptop local fornece a CPU e a RAM necessárias para executar o software, mas nada é instalado localmente na sua máquina. Entre os outros tipos de virtualização de aplicação se incluem o Microsoft Terminal Services e as aplicações baseadas no navegador (ver Nota do DevMan 2). Todas essas implementações dependem da aplicação virtual executada localmente e do gerenciamento e da lógica de aplicação executados remotamente.

Nota DevMan 2. Microsoft Terminal Services

Nada mais é que o acesso remoto que a Microsoft propõe aos seus usuários. Também chamado de Remote Desktop Services, o Terminal Services possui como meta virtualizar toda a parte gráfica da máquina origem para a destino, transportando toda a usabilidade via rede.

Virtualização de Rede

A virtualização da rede pode ser a definição específica mais ambígua de virtualização. Para abreviar, o escopo dessa discussão se restringirá ao gerenciamento e segmentação do endereço IP virtual. Um exemplo simples de virtualização de endereços IP é a Virtual Local Access Area Network (VLAN). Em uma VLAN, uma única porta Ethernet pode suportar múltiplas conexões virtuais de múltiplos endereços IP e redes, mas elas são virtualmente segmentadas usando as tags VLAN. Cada conexão IP virtual por essa única porta física é independente e desconhece a existência das outras, mas o switch reconhece cada conexão e gerencia cada uma separadamente.

Outro exemplo são as tabelas de roteamento virtual. Normalmente, uma tabela de roteamento e uma porta de rede IP têm uma relação 1 por 1, mesmo que uma única porta possa hospedar múltiplas interfaces virtuais (como as VLANs ou os adaptadores de redes virtuais “eth0:1” suportados pelo Linux). A tabela de roteamento conterá múltiplas rotas para cada conexão virtual, mas ela ainda é gerenciada como somente uma tabela. Aqui percebemos uma simples forma de virtualizar recursos de forma transparente e via rede.

As tabelas de roteamento virtual mudam o paradigma para uma relação um para muitos, em que uma única interface física pode conter múltiplas tabelas de roteamento, cada uma com múltiplas entradas. Isso fornece à interface a habilidade de criar (e derrubar) dinamicamente os serviços de roteamento para uma rede, sem interromper os outros serviços e as tabelas de roteamento na mesma interface.

Virtualização de Hardware

A virtualização do hardware é muito parecida com o conceito de virtualização do sistema operacional ou plataforma e, em algum grau, é necessária para que ocorra a virtualização do SO. A virtualização do hardware separa pedaços e locais do hardware físico em segmentos independentes e gerencia esses segmentos como componentes separados, individuais. Embora em diferentes classificações, tanto o multiprocessamento simétrico quanto o assimétrico são exemplos de virtualização de hardware.

Em ambas as instâncias, o processo não sabe qual CPU o sistema operacional reservará a ele, todavia o sistema operacional se encarrega de alocar o tempo do processador e sua prioridade na fila de processamento. No que concerne ao processo, ele pode ser alocado em qualquer número de CPUs e qualquer parte da memória RAM, conquanto não seja afetada a sua execução.

Outro exemplo de virtualização do hardware é o “fatiamento”, ou slicing. Este consiste em separar partes precisas do sistema para serem executadas em um “jardim fechado”, isto é, trabalhar com uma escala totalmente definida. Tal como alocar 25% dos recursos da CPU para a criptografia em massa. Se, por um lado, não houver qualquer processo que precise digerir números na CPU para codificação em bloco, aqueles 25% da CPU não serão aproveitados. Se, por outro lado, muitos processos precisarem de computação matemática ao mesmo tempo e requererem mais do que 25%, eles serão enfileirados em um buffer, porque a CPU não permite suprir mais do que 25% dos seus recursos para tal atividade em paralelo. Esse tipo de virtualização do hardware é chamado algumas vezes de pré-alocação.

Multiprocessamento simétrico ocorre quando se tem várias unidades ou núcleos de processamento que compartilham a mesma memória e são controlados por um único sistema computacional.

Por outro lado, no multiprocessamento assimétrico há um processador dedicado a coordenar as tarefas dos demais. Nesse caso, há sistemas operacionais diferentes no controle dos diversos processadores.

Cada classificação da virtualização do hardware é única e tem seu valor segundo a implementação. A virtualização por pré-alocação é perfeita para tarefas bem específicas do hardware, como as funções de alívio da carga para um chip altamente otimizado e especializado. Entretanto, a pré-alocação do hardware comum pode causar uma falta artificial de recursos se o pedaço alocado for subutilizado. A virtualização por alocação dinâmica (alocação de hardware que funciona sob demanda processamental) é uma abordagem mais comum e oferece tipicamente maiores benefícios quando comparada com a pré-alocação, uma vez que temos economia de recursos, pois estes estão sendo utilizados dinamicamente.

Analogamente, temos tipos de particionamento Linux feitos via partição estática e partição dinâmica, o chamado LVM (Logical Volume Manager) – ver Nota do DevMan 3. No particionamento estático, pré-alocamos as necessidades de disco e elas permanecem inalteradas antes da instalação do SO. Se você definiu 250 GB de espaço em disco, você terá uma partição de 250 GB estática. Depois da instalação, utilizando ou não o disco inteiro, ele será reconhecido e lido pelo seu valor total. No caso da utilização do LVM, o administrador configura um valor mínimo e depois vai adicionando recurso conforme o uso.

Nota DevMan 3. LVM

Logical Volume Management é um modo de gerenciamento de partições em discos IDE/SCSI/FC. Foi desenvolvido inicialmente pela IBM. Ao contrário do método tradicional de particionamento, a implementação LVM cria um grande disco virtual, que pode inclusive ter mais de um dispositivo de armazenamento, e o divide em partições virtuais. A grande vantagem é permitir o redimensionamento das áreas de modo dinâmico. A grande desvantagem é que por ser um único disco virtual, a recuperação de dados em uma eventual pane no sistema de armazenamento é bastante prejudicada.

Para o provisionamento de um serviço realmente virtual, é importante a alocação dinâmica dos recursos, porque isso permite o completo gerenciamento do hardware e a flexibilidade de aumentar ou diminuir a demanda. Os recursos virtuais podem ser alocados desde que os recursos do hardware ainda estejam disponíveis. A desvantagem das implementações de alocação dinâmica é que, por serem flexíveis, se estiverem nas mãos de um administrador sem controle, os resultados podem ser caóticos. Sem o bom senso humano, pode-se levar um processo a consumir todos os recursos disponíveis.

Virtualização de Armazenamento

Virtualização de armazenamento é um tipo de tecnologia consagrada, porém tem sido utilizada como uma forma incorreta do termo virtualização. Não se trata de um modo formal de virtualização, uma vez que não há um processo real de virtualização de recursos ou processamento em si. Todavia, muitos a consideram como tal. Esta pode ser desfragmentada em duas classes gerais: virtualização de bloco e virtualização de arquivo.

A virtualização de bloco é mais bem resumida pelas tecnologias SAN (Storage Area Network) e NAS (Network-Attached Storage), ou seja, redes de armazenamento distribuído que aparentam ser um único dispositivo físico. No entanto, são muito mais complexas que isto, valendo por volta de R$ 1 milhão por rack. Por dentro, os dispositivos SAN geralmente implementam outro tipo de virtualização de armazenamento: Redundant Array of Inexpensive Disks (RAID). Internet Small Computer System Interface (iSCSI) é outra implementação virtual muito comum e específica de virtualização de bloco, permitindo a um sistema operacional ou aplicação mapear um dispositivo virtual de bloco, tal como uma unidade de disco montada, para um adaptador de rede (por software ou hardware), em vez de um controlador de disco físico.

Os adaptadores de rede iSCSI traduzem as chamadas de bloco da aplicação para pacotes de rede que a SAN entende e, depois, traduzem de volta, gerando basicamente uma unidade de disco virtual. A virtualização de arquivos move a camada virtual para o nível estrutural mais “consumível pelos humanos” dos arquivos e diretórios. A maioria das tecnologias de virtualização de arquivo determina como ponto focal a frente das redes de armazenamento e rastreiam quais arquivos e pastas residem em quais dispositivos de armazenamento, mantendo um mapeamento global dos locais dos arquivos.

Quando é feita uma requisição de leitura de um arquivo, o usuário pode achar que o arquivo está localizado estaticamente em seu disco remoto pessoal. Porém, o appliance de virtualização de arquivo sabe que o arquivo, na verdade, está em um servidor SMB em um datacenter do outro lado do mundo. A virtualização no nível de arquivo oculta o ponteiro de um arquivo para o local físico mostrando um local virtual estático, o que permite às redes back-end se manterem dinâmicas. Se o endereço IP do servidor SMB mudar, ou se a conexão precisar ser redirecionada para outro datacenter, será preciso atualizar somente a configuração local da appliance virtual, e não todos os usuários que precisam acessar seus discos.

Virtualização de Serviço

Finalmente, a definição macro de virtualização foi atingida: a virtualização do serviço. A virtualização do serviço conecta todos os componentes utilizados no fornecimento de uma aplicação pela rede e inclui o processo de fazer funcionar juntas todas as peças de uma aplicação independentemente de onde essas peças residam fisicamente.

É por isso que a virtualização do serviço é geralmente aplicada quando necessitamos de um ambiente de alta disponibilidade – o que é o caso das grandes corporações. Por exemplo, uma aplicação web normalmente tem muitas partes: o HTML que o usuário vê; o servidor de aplicação que processa os dados que o usuário fornece; os mecanismos da Service Oriented Architecture (SOA – ver Nota do DevMan 4) que coordenam a disponibilidade de serviços e dados entre cada componente; a base de dados back-end para o usuário, a aplicação e os dados da SOA; a rede que fornece os componentes da aplicação; e a rede que armazena o código e os dados da aplicação.

Nota DevMan 4. SOA

Service Oriented Architecture: É um tipo de arquitetura de software cujo princípio fundamental prega que as funcionalidades implementadas pelas aplicações devem ser disponibilizadas na forma de serviços. Frequentemente estes serviços são conectados através de um “barramento de serviços”, que disponibiliza interfaces acessíveis através de web services ou outra forma de comunicação entre aplicações.

A virtualização do serviço permite a cada uma dessas peças funcionar independentemente e ser “evocada” conforme for necessário para que a aplicação inteira funcione corretamente. Os maiores sistemas do mundo trabalham dessa forma. São vários sistemas operacionais com servidores web balanceados somados a bancos de dados de alta performance em cluster conectados a storages de alta performance também. E muitas vezes toda essa estrutura está em diferentes locais físicos. A virtualização do serviço combina essas peças independentes e as apresenta juntas ao usuário como uma única aplicação completa. Embora a virtualização do serviço possa englobar todas as definições atuais de virtualização, de forma alguma é o ponto final em que a TI parará de definir o termo.

Com a difusão e variação do uso da palavra, assim como da tecnologia a que ela se refere, pode nunca haver uma definição “final” para virtualização. Ela continuará a evoluir e se expandirá exponencialmente diante das mais variadas tecnologias e arquiteturas, uma vez que as aplicações e sistemas se tornem mais sofisticados e complexos num mundo cuja performance e economia de recursos se faz necessária de uma forma quase essencial nos variados ambientes corporativos.

Conclusão

Existe um arsenal de possibilidades quando nos referimos ao termo virtualização. Portanto, cabe aos técnicos do segmento tecnológico avaliar todo esse cenário e decidir o que é melhor para nossas respectivas empresas e clientes. Assim, poderemos construir um bom alicerce a fim de implementar soluções eficientes e verdes.

Com a virtualização conseguimos garantir um maior respeito em relação ao meio ambiente. Investir em virtualização é sinônimo de olhar para o futuro, de algo mais performático, gastando menos e, por consequência, lucrando mais, e tudo isso respeitando ao máximo o meio ambiente, como já foi dito.

A tendência atual é de que a virtualização é o futuro mais sustentável e “verde”, uma vez que se economiza em recursos como: energia elétrica, espaço físico, dissipação de calor, entre outros.

Links

Red Hat: virtualização open source é vital para cloud computing
http://www.tecmundo.com.br/web/1624-o-que-e-virtualizacao-.htm

ABC da virtualização
http://cio.uol.com.br/tecnologia/2007/08/14/idgnoticia.2007-08-14.5515750576/

Por que virtualizar e quais os tipos de virtualização?
http://www.tiespecialistas.com.br/2011/02/porque-virtualizar-e-quais-os-tipos-de-virtualizacao/