Cenários para Virtualização

Um inevitável custo de implementação para trabalhar com virtualização é que haverá sempre uma determinada latência de desempenho devido ao processo de virtualização que acontece entre camadas do hypervisor e o hardware físico. Teoricamente, o método mais simples e eficiente de implantar um sistema de alto desempenho é o de rodá-lo diretamente sobre o hardware no computador. Contudo, a virtualização traz ganhos significativos sobre a execução de máquinas virtuais além somente do quesito performance, o que faz o desempenho ser encarado como variável secundária diante das benesses da virtualização para a maior parte das cargas de trabalho.

A idéia da virtualização de servidores e do hypervisor é a de que, ao invés de haver um sistema operacional completo sobre o hardware, ela inclui apenas um sistema básico de gerenciamento de recursos. Isso significa que o host mantém uma fina camada do software de gerenciamento da virtualização, que cuida das funções básicas de gerenciamento do hardware, propiciando assim, o melhor desempenho e uso eficiente de recursos por parte dos servidores virtuais. Dessa forma, o propósito na virtualização de servidores é fazer com que recursos e funções essenciais do S.O sejam entregues integralmente às máquinas virtuais.

Ambiente de Produção

Um dos motivos pelos quais a virtualização vem tomando cada vez mais espaço no ambiente de TI dos grandes datacenters é o seu poder de ser flexível ao mesmo tempo em que oferece garantias de alta disponibilidade e segurança para a maior parte das aplicações e sistemas. A sua capacidade de reduzir o número de servidores físicos dentro do datacenter, ao mesmo tempo, permitindo o aumento da carga de trabalho, fazem da virtualização de servidores de produção a melhor maneira de alcançar as metas de redução de custo exigidas pela maior parte das organizações.

Para alcançar tais metas, a melhor maneira é combinar muitos tipos de aplicações e serviços em uma única máquina física para aumentar o uso geral do hardware. Este tipo de consolidação permite agrupar diversos níveis de carga de trabalho otimizando o uso do hardware e diminuindo o número de servidores dentro do datacenter.

Em muitos casos, a maioria dos servidores de um datacenter não ultrapassa 15% de utilização na maior parte do tempo, isso possibilita a combinação de servidores por meio da consolidação e distribuição destes serviços sobre um único servidor. Por exemplo, 5 servidores físicos, cada um com sua utilização média não ultrapassando 15%, ao serem combinados sobre um único hardware, não iriam ultrapassar 75% dos recursos oferecidos por este computador.

Ambiente de Testes e Desenvolvimento

No começo dos desenvolvimentos de software, as tarefas de criação de programas eram substancialmente menos complexas. Por exemplo, programadores de computadores de grande porte tiravam vantagem ao criar suas aplicações em um ambiente fixo e bem definido. Os processos de programação muitas vezes rudimentares, como perfuração de cartões, faziam os padrões e exigências específicas de compatibilidade serem bem conhecidos. Com o passar do tempo, o advento dos computadores pessoais tornou a tarefa mais complexa. Atualmente, o programador raramente conhecerá a arquitetura ou configuração exata do computador onde seu código rodará. Dessa forma, o teste de compatibilidade se tornou significativamente mais importante e complexo.

O fato é que os processos de projetar e testar programas de software são bem mais complicados do que foram nos anos passados e neste cenário a virtualização emprega grande benefício no processo de desenvolvimento e homologação de aplicações.

Sem o uso de máquinas virtuais, os laboratórios de teste de compatibilidade poderiam facilmente ter que incluir dezenas de computadores dedicados, com diferentes versões de sistemas operacionais instalados.

O uso de máquinas virtuais permite que os desenvolvedores e testadores de software criem e realizem verificações de compatibilidade em múltiplas plataformas, de forma mais rápida e prática, uma vez que em um único computador podemos ter inúmeras instâncias de servidores virtuais, cada um com sua configuração e sistema operacional dedicado.

As máquinas virtuais podem simplificar enormemente a manutenção dos ambientes de teste, usando os recursos que permitem reverter o estado de configuração da máquina virtual. Além disso, ambientes de programação sobre máquinas virtuais oferecem importantes considerações de segurança, pois permitem o isolamento das aplicações sob máquinas virtuais e evitam erros e outros problemas que são altamente prováveis de acontecer durante o processo de desenvolvimento.

Infra-estrutura Enterprise

Uma infra-estrutura de virtualização Enterprise possui características que a tornam uma solução robusta para a maior parte da carga de trabalho existente dentro de um datacenter. A criação de um datacenter virtual exige uma suíte de produtos e tecnologias voltadas para a otimização e continuidade de negócios. Essas tecnologias juntas permitem o oferecimento de alta disponibilidade, segurança e escalabilidade para aplicações e máquinas virtuais.

O objetivo maior de uma infra-estrutura enterprise é eliminar o “downtime”, ou seja, o tempo fora de servidores e aplicações, de forma a maximizar a disponibilidade para todo o ambiente. As exigências do mercado cresceram fortemente nos últimos anos, aplicações críticas passaram a exigir o máximo de disponibilidade possível dentro do datacenter, paradas programadas ou não passaram a ser vistas cada vez mais como agentes impeditivos para as regras de negócios empregadas na maior parte das corporações.

Dessa forma, o conjunto bem ajustado que cerca uma infra-estrutura de virtualização é essencial para o bom funcionamento de todo o ambiente virtual. Este conjunto envolve soluções de armazenamento de alta perfomance, networking de alta velocidade e hardware robusto para suportar a carga sobre máquinas virtuais e suas dependências. A seguir, serão apresentadas considerações importantes sobre os principais componentes necessários para montar uma infra-estrutura de virtualização capaz de oferecer todos os benefícios que a virtualização oferece.

Considerações básicas de Hardware

O hardware do servidor é um componentes essencial para montar uma infra-estrutura de virtualização capaz de consolidar a maior parte do workload do datacenter e reduzir a quantidade de servidores físicos, racks, cooling, cabos e componentes de rede existentes em um centro de dados. Assim o servidor físico host deve ser dimensionado de acordo com as necessidades de execução e taxa de consolidação desejados, conforme as seguintes considerações:

Considerações de Processador

Cada máquina virtual ‘enxerga’ seu próprio conjunto de CPUs de forma dedicada, contudo, é papel do hypervisor oferecer às máquinas virtuais essa visão abstrata a partir do processador existente no host físico. O hypervisor é o responsável por garantir o uso eficiente do processador pela máquina virtual durante toda a sua vida, além de ser o responsável por oferecer o compartilhamento de CPUs entre máquinas virtuais e seu balanceamento de carga. O processador apresentado pelo hypervisor nessa arquitetura é baseado nos processadores x86 e é exigência da maior parte das soluções enterprise de virtualização que os processadores do host possuam tecnologia 64 Bits e estejam preparados para o modo de virtualização.

Essencialmente, a arquitetura x86 de virtualização possui suporte para os processadores Intel e AMD. A família Intel Xeon e AMD Opteron são famílias de processadores suportados para virtualização, sendo que, soluções como o Citrix !XenServer e Microsoft Hyper-V exigem a tecnologia VT Virtualization Technology para processadores Intel e AMD-V para processadores AMD habilitadas na BIOS, essas opções vêm desabilitadas por padrão.

Otimização de recursos de CPU

Uma máquina virtual pode ser configurada com 1 ou mais processadores (vCPUS) conforme limitação da tecnologia de virtualização utilizada. Quando é necessário o scheduling da CPU virtual, ou seja, quando um processo exigir a execução dentro de um ciclo, o hypervisor deverá mapear a vCPU para o “hardware execution context” H.E.C. Um hardware execution context é um processo capaz de realizar o Schedule para uma thread de execução. Assim, uma máquina virtual com um único processador consegue “schedular” um H.E.C por vez. Uma VM com 2 vCPUs consegue “schedular” dois H.E.Cs por vez ou nenhum e assim por diante.

O número de hardware execution context depende do tipo de sistema usado. Por exemplo, um processador single-core, dual socket possui dois núcleos, dessa forma possui dois H.E.Cs, levando em consideração que estes processadores não são Hyper-Threading conforme figura a seguir:

Em sistemas onde a tecnologia Hyper-Threading é habilitada temos a capacidade de execução de duas threads por core. Ou seja, sob um único processador conseguimos executar dois H.E.Cs por vez ou nenhum.

Considerações de Memória

Disponibilizar quantidade suficiente de memória RAM para todas as máquinas virtuais é importante para manter a performance. Sistemas de virtualização enterprise exigem quantidade de memória maior que servidores típicos. Estes servidores trabalharão para oferecer todos os recursos exigidos pelas máquinas virtuais e precisam estar equipados com memória RAM suficientes para rodá-las, além de exigir memória disponível também para o hypervisor.

Por exemplo, três máquinas virtuais rodando concomitantemente sobre um host equipado com 4 gigabytes de memória RAM:

  • 256 MB para máquina virtual 1, (conforme exigência do fornecedor do sistema operacional guest);
  • 1024 MB para máquina virtual 2, (2x512MB);
  • 2048 MB para máquina virtual 3;
  • 272 MB para o hypervisor (conforme exigência mínima da Service Console do ESX Server 3)

O cálculo total para essas três máquinas virtuais totalizam 3.6GB, deixando assim 400MB livres para outros fins. Contudo, é importante deixar disponível quantidade de memória suficiente para o overhead de cada máquina virtual.

Considerações de I/O

Para garantir a melhor performance de I/O é importante agrupar tipos de workload e dimensionar adequadamente cada um deles. A fim de evitar gargalos sobre os principais componentes de entrada e saída, como processador, disco e rede. O agrupamento de máquinas virtuais do mesmo tipo tira proveito das tecnologias envoltas que permitem a otimização do uso de recursos de memória, permitindo assim melhor performance para a máquina virtual e menor overhead.

O dimensionamento adequado dos componentes de armazenamento e rede é essencial para permitir o fluxo de dados constante sem gargalos ou tempos de respostas inadequados.

Considerações de Disco

As máquinas virtuais usam discos virtuais para armazenar seu próprio sistema operacional, arquivos de programas e outros dados associados com suas atividades. Um disco virtual é um arquivo grande contido em disco, ou um conjunto de arquivos que podem ser copiados, movidos e backupeados facilmente como qualquer outro arquivo. Para armazenar arquivos de disco virtual e manipular os arquivos, os sistemas de virtualização enterprise requerem área de armazenamento dedicado.

Estes sistemas podem utilizar áreas de armazenamento de diferentes tipos, incluindo o próprio disco rígido do computador host, discos externos, storage e dispositivos de armazenamento em rede.

É essencial que essas áreas de armazenamento sejam de alta performance e permitam a quantidade necessária de requisições de entrada e saída necessárias para manter a performance ideal das máquinas virtuais.

Armazenamento Local

O armazenamento local pode ser um dispositivo de disco físico ou um array de discos dedicados para tarefas de armazenamento e proteção dos dados contidos no host de virtualização. As máquinas virtuais são armazenadas por meio de uma conexão direta do host ao dispositivo. Este tipo de abordagem deve levar em consideração:

Discos IDE/ATA geralmente não são suportados para armazenar máquinas virtuais. Usar armazenamento SATA, interno ou externo só possibilita o modo não compartilhado (unshared). Discos SATA não suportam o compartilhamento de LUNs e dessa forma, as máquinas virtuais são visíveis somente no host local.

Armazenamento Remoto

Dispositivos externos ou arrays são utilizados no armazenamento remoto, estes são usados pelos sistemas enterprise de virtualização para armazenar arquivos de máquinas virtuais remotamente. Os sistemas enterprise acessam esses dispositivos sobre uma rede de alta velocidade, conhecida como high-speed storage network. Três são os principais tipos de storage network presentes atualmente:

  • SAN – Storage Area Network
  • iSCSI – Internet SCSI
  • NAS – Network Attached Storage
  • SAN – Storage Area Network

A SAN é uma arquitetura que conecta dispositivos de armazenamento, como array de discos por meio de uma rede Fibre Channel (FC) de alta velocidade e performance, e permite que os servidores visualizem estes dispositivos remotos como localmente conectados.

Os sistemas de virtualização como VMware ESX e ESXi, Citrix !XenServer e Microsoft Hyper-V, tiram proveito desta arquitetura armazenando arquivos de máquinas virtuais remotamente. Essa rede usa o protocolo Fibre Channel para transportar o tráfego SCSI das máquinas virtuais para os dispositivos FC SAN.

Para conectar o host à SAN é necessário que o computador seja equipado com uma FC HBA (Fibre Channel Host Bus Adapter), e ao menos que esteja usando a HBA diretamente conectada ao Storage, é necessário o uso de switchs FC para rotear o tráfego de storage.

Em uma topologia SAN com ao menos um switch presente na rede é formado um SAN fabric. As transmissões nesta topologia acontecem analogamente às transmissões em switchs LAN, onde o conceito das portas HBA toma o lugar das portas Ethernet e o cabeamento de fibra é utilizado para interconectar os diversos dispositivos conectados ao fabric switch.

Cada nó dentro de uma SAN, um host, dispositivo de storage, componente do fabric, possui uma ou mais portas que se conectam a SAN. Essas portas são identificadas pelo seu identificador único WWPN – Word Wide Port Name, um identificador global único usado pelo switch FC para descobrir e associar os dispositivos ou hosts conectados a uma porta. Devido à característica do uso de caminhos (paths), uma SAN pode oferecer a técnica de multipathing, a qual permite que você tenha mais de um caminho físico entre o host e uma LUN no Storage Array.

iSCSI – Internet SCSI

A arquitetura de armazenamento remoto iSCSI mantém os arquivos das máquinas virtuais em um dispositivo remoto que usa o protocolo TCP/IP para trafegar os pacotes SCSI. Este tráfego acontece em redes típicas TCP/IP entre o host e o dispositivo remoto e utiliza dois tipos de conexão:

  • Hardware Initiated iSCSI – As conexões com o dispositivo de armazenamento acontecem por meio de um hardware (HBA) iSCSI.
  • Software Initiated iSCSI – As conexões são baseadas em software iSCSI que acontecem entre o software do host e o dispositivo de armazenamento. Com este tipo de conexão iSCSI, o host apenas precisa de uma rede IP padrão para comunicação e conectividade.

NAS – Network Attached Storage

Neste tipo de tecnologia de armazenamento remoto, os arquivos das máquinas virtuais são armazenados em servidores acessados por meio de redes TCP/IP. A comunicação nesta rede acontece através do protocolo NFS Network File System, que é responsável por realizar a comunicação entre o host e os servidores NAS/NFS.

Com este tipo de conexão NAS, o host apenas precisa de uma rede IP padrão para comunicação e conectividade.

Vantagens do armazenamento Remoto

O armazenamento remoto permite dentre outras vantagens, o compartilhamento da área de storage. Este compartilhamento (shared storage), permite que uma máquina virtual esteja visível entre inúmeros hosts. Essa visualização possibilita que um host secundário, dentro de um pool de servidores, tome o controle da máquina virtual em caso de falha do host principal, além de permitir por meio de técnicas avançadas de gerenciamento de recursos que uma máquina virtual seja dinamicamente movida entre hosts, possibilitando o balanceamento de carga de máquinas virtuais. Outro benefício do armazenamento remoto é a possibilidade dos servidores realizarem boot pela SAN. Isso permite que rapidamente e de forma fácil um servidor que apresenta falha seja substituído por outro desde que configurado para acessar a SAN.

Desvantagens do armazenamento Remoto

O custo significativo de soluções de armazenamento remoto e sua complexidade são fatores que desfavorecem essa arquitetura. Além disso, o ponto de falha central neste modelo passa a ser a área de armazenamento, a qual precisa ter a garantia de alta disponibilidade que pode ser oferecida por soluções de replicação, contudo, mais uma vez tais soluções esbarram no seu alto custo de implementação.