Posts com Tag ‘Virtual Server’

Continuando com o artigo sobre o que é virtualização, hoje apresento alguns detalhes técnicos sobre as diferentes tecnologias de virtualização.

As Tecnologias de Virtualização

 

Introdução a Virtualização

Ao longo dos últimos anos, muitas organizações se voltaram para a tecnologia de virtualização para consolidar servidores físicos e reverter a tendência de expansão de servidores, bem como menor consumo elétrico, refrigeração e os custos de espaço para lidar com orçamentos cada vez menores. Recentemente, as tecnologias de virtualização de aplicativos e desktops também surgiram e foram adoptadas em um esforço para simplificar a implementação e gestão das infraestruturas do usuário final.

Cada vez mais, departamentos de Tecnologia da Informação (TI) descobrem que virtualização de infraestruturas proporcionam ambientes mais flexíveis para operar e contribuir para mais rapidamente se adaptar às constantes mudanças empresariais.

Virtualização, no contexto de software, como por exemplo, o Microsoft Hyper-V Server e Virtual Server 2005 R2, pode ser descrito como a abstração de recursos físicos do sistema de modo que várias partições lógicas possam serem criadas para hospedar um conjunto heterogêneo de sistemas operacionais, cada um executando simultaneamente em um único servidor físico.

Cada partição lógica, também conhecida como Máquina Virtual (VM – Virtual Machine) é um ambiente de software que apresenta recursos (através de emulação de hardware ou outros dispositivos), no topo do qual um sistema operacional e um ou mais aplicativos podem ser instalados e executados.

Embora a virtualização tornou-se intensivamente adotada em ambientes de TI baseados em x86 somente na década atual, a tecnologia em si foi realmente introduzida pela primeira vez há 40 anos.

 

Virtualização baseada em x86

Na última década, as pesquisas de tecnologia de virtualização e o desenvolvimento de produtos têm estado focado na plataforma x86 (32 bits e 64 bits). Em 2006, a AMD e Intel liberaram revisões de processadores x86 com novas instruções e extensões especificamente dirigidas para habilitar a virtualização auxiliada por hardware.

As deficiências da plataforma legada de processadores x86 em relação aos recursos atuais de virtualização não impediu os fornecedores de software de desenvolver soluções antes do lançamento do Intel Virtualization Technology (Intel VT) e AMD-Virtualization (AMD-V). Na verdade, vários tipos de tecnologias de virtualização foram criados para serem executados na arquitetura original do processador x86, utilizando diversas metodologias que diferem em seu nível de abstração, limitações e problemas.

 

O que é Virtualização de Software?

Virtualização de software inclui várias técnicas para permitir que um único sistema físico hospede várias partições isoladas e seguras entre elas, compartilhando simultaneamente recursos do sistema físico. Essas abordagens diferentes variam em densidade de partição (o número de partições simultâneas), escalabilidade, desempenho e abrangência de sistemas operacionais que podem ser suportadas simultaneamente em uma determinada plataforma.

 

Virtualização em nível de Máquina

A base de uma solução de virtualização de nível de máquina é o Monitor de Máquina Virtual (Virtual Machine Monitor – VMM). O VMM é responsável pela criação, isolamento e preservação do estado da máquina virtual, bem como a orquestração de acesso aos recursos do sistema. O VMM está vinculado a uma arquitetura de processador específico. Embora permita que diferentes sistemas operacionais possam executar em máquinas virtuais, contudo está limitado a sistemas operacionais que possam ser executados nativamente no processador físico do sistema.

Na figura abaixo ilustra três diferentes implementações de VMM: Tipo-2, o modelo “híbrido”, e Tipo-1. O VMM de tipo-2 é executado sobre um sistema operacional hospedeiro (host), como o Java VM. No modelo “híbrido”, o VMM é executado como um par (peer) para o sistema operacional host. Essa tipo de implementação é utilizada, por exemplo, no software Microsoft Virtual Server 2005 R2. Em contraste, um VMM de tipo-1, ou “hypervisor”, é executado diretamente no hardware abaixo de todas as partições da máquina virtual. O software Microsoft Hyper-V é uma solução baseada em hypervisor.

Em termos de desempenho, o hypervisor (VMM de tipo-1) é geralmente capaz de atingir níveis mais elevados de eficiência e, portanto, maior densidade de máquina virtual. Os outros tipos de VMMs dependem do sistema operacional host para o acesso aos recursos, o que resulta em mudanças de contexto mais custoso, menor desempenho e de maior sobrecarga ao sistema.

Apesar das diferentes implementações de VMM, as três variantes principais são usadas para criar uma interface entre as máquinas virtuais e os recursos do sistema virtualizado. Esses métodos são denominados Virtualização Completa (Full Virtualization), a Virtualização Nativa (Native Virtualization) e Paravirtualização (Paravirtualization).

 

Virtualização Completa

Nesse método, um sistema virtual completo é criado e mantido pelo VMM para abstrair o hardware real da máquina virtual. Esse método permite que um sistema operacional seja executado em uma máquina virtual sem qualquer modificação. O software Virtual Server 2005 R2 usa essa técnica junto com tradução binária, um processo que permite ao VMM tratar com instruções x86 não-virtualizáveis para fornecer virtualização em processadores x86 anteriores ao Intel VT e AMD-V.

Uma vantagem da virtualização completa e abordagem de dissociação entre o hardware físico da máquina virtual é a capacidade de mover máquinas virtuais facilmente entre servidores com configurações físicas diferentes, contudo essa flexibilidade vem com um impacto no desempenho por causa da sobrecarga associada com a manutenção de cada estado da máquina virtual e da latência introduzida com a tradução binária.

 

Virtualização Nativa

Virtualização nativa depende de uma arquitetura de processador virtualizável, como por exemples os processadores AMD-V e Intel VT. Esses processadores implementam novos modos de execução, instruções e construções de dados em hardware que são projetados para reduzir a complexidade do VMM.

Com a virtualização nativa, o VMM não é mais necessita manter o estado e as características de recursos da máquina virtual em software; essas funções agora pertencem ao hardware do processador. Assim como no caso da virtualização completa, sistemas operacionais podem rodar sem modificações dentro de máquinas virtuais. Hyper-V utiliza esse método para executar sistemas operacionais legados.

Este tipo de implementação tem muitas vantagens potenciais, que vão desde a simplificação da arquitetura do VMM para oferecer melhorias de desempenho significativas bem como a redução de sobrecarga baseada em software. Ao reduzir a sobrecarga da virtualização, uma maior densidade de partição pode ser alcançada em qualquer sistema.

 

Paravirtualização

Paravirtualização foi desenvolvido como uma alternativa ao uso de tradução binária para lidar com instruções x86 não-virtualizáveis. Nesse método os sistemas operacionais convidados (guests) requerem modificação para permitir “hiperchamadas” da máquina virtual para o hypervisor. Em vez de ter o hypervisor (ou VMM) traduzir uma instrução potencialmente perigosa do sistema operacional convidado, uma “hiperchamada” estruturada é feita a partir do convidado para o hypervisor para gerenciar as mudanças de estado do sistema. Nesse modelo o sistema operacional é modificado para chamar o VMM sempre que executar uma instrução que possa alterar o estado do sistema, uma instrução sensível. Isso acaba com a necessidade do VMM testar instrução por instrução, o que representa um ganho significativo de desempenho. Outro ponto positivo da paravirtualização é que os dispositivos de hardware são acessados por drivers da própria máquina virtual, não necessitando mais do uso de drivers genéricos que inibiam o uso da capacidade total do dispositivo.

Embora a paravirtualização apresentasse um ganho de desempenho significativo frente à virtualização completa, essa disparidade tem sido superada devido à presença de instruções de virtualização nos processadores Intel VT e AMD-V.

A paravirtualização foi lançada e implementada pela XenSource (recentemente adquirida pela Citrix), que produziu a solução de virtualização Xen de código aberto. Os lançamentos iniciais de Xen suportavam apenas alguns sistemas operacionais modificados. Com o lançamento do Xen 3.0, que alavancou a funcionalidade de virtualização de hardware da AMD-V e Intel VT, um sistema operacional Windows XP inalterado podia ser executado em uma máquina virtual convidada.

 

Virtualização em nível de Sistema Operacional

Virtualização em nível de sistema operacional é baseada na abstração da camada do sistema operacional para suportar múltiplas partições isoladas ou para suportar ambientes virtuais (VEs) em uma instância única do sistema operacional do host. A virtualização é realizada através do acesso de multiplexação ao kernel, enquanto que assegura que nenhum único VE seja capaz de derrubar o sistema.

Esta técnica resulta em baixa sobrecarga de virtualização e pode render alta densidade de partição. No entanto, existem dois grandes inconvenientes com este tipo de solução. A primeira desvantagem é a incapacidade de executar uma mistura heterogênea de sistema operacional em um determinado servidor, porque todas as partições compartilham um único kernel do sistema operacional. A segunda desvantagem, também causada pelo modelo de kernel compartilhado, é a falta de suporte à execução de carga de trabalho mista de 32-bit e 64-bit.

Parallels Virtuozzo Containers antigamente conhecido como SWsoft, é um exemplo de produto que usa a virtualização em nível de sistema operacional. Foi utilizado por muitos Web Hostings.

 

Virtualização em nível de Aplicação

Todas as técnicas de virtualização discutidos até este ponto têm o mesmo objetivo, aumentar o número de partições seguras, isolado em execução simultaneamente em hardware físico para maximizar o uso da CPU, armazenamento, rede, memória e outros recursos. Embora possam ser aplicados em um ambiente desktop, esses são principalmente voltadas para a solução de gestão de recursos em ambientes de servidor entretanto esses não abordam problemas de gerenciamento de aplicativos de desktop. Virtualização em nível de aplicação é uma tecnologia que é voltado para a separação e isolamento de aplicações “client-side” rodando no sistema operacional local. Conforme a figura abaixo, aplicações são isoladas em um ambiente virtual em camadas entre o sistema operacional e a pilha de aplicação. O ambiente virtual carrega a aplicação, isola a aplicação de outros aplicativos e do sistema operacional e também impede que o aplicativo modifique recursos locais, como arquivos e configurações do registro. Os aplicativos podem ler informações de arquivos e de registros do sistema local, mas versões graváveis destes recursos são mantidos dentro do ambiente virtual. Na verdade, o aplicativo nunca precisa ser instalado localmente no desktop; em vez disso, os bits de código podem ser dinamicamente transmitidos e armazenados em cache no ambiente virtual conforme novas partes do aplicativo são necessárias.

Em 2006, a Microsoft entrou no mercado de virtualização em nível de aplicação com a aquisição da Softricity e sua linha de produtos SoftGrid. O software Microsoft SoftGrid Application Virtualization for Desktops roda no desktop local e mantém um sistema de registro, sistema de arquivos, e outras configurações em um ambiente virtual, sendo esses entregues para a aplicação conforme sua necessidade. Atualmente existem diversos produtos para a virtualização em nível de aplicação e essa linha é conhecida como Microsoft Application Virtualization v4.6.

Olá Sobreviventes.

Seguindo com a continuação sobre o que é Virtualização, hoje apresento um resumo sobre o surgimento do Hyper-V. Cronologicamente deveria iniciar com sobre a VMware pois ela que foi a grande precursora para ambiente X86 contudo ainda estou pesquisando maiores detalhes sobre o inicio da VMware.

 

A Virtualização Microsoft

Em 2003, a Microsoft comprou a Connectix, uma empresa que existia desde 1998 e possuía uma solução que conseguia virtualizar sistemas operacionais. Tendo como base algumas referências dos produtos da Connectix, a Microsoft lança, em 2004, o Virtual Server 2005, um servidor com suporte a máquinas virtuais, porém com limitações de hardware. Os sistemas operacionais só podiam utilizar um processador x86 e no máximo 3.6 GB de memória por VM.

Seguindo o fluxo de mercado, a Intel e a AMD lançavam seus processadores com suporte a virtualização de hardware, o Intel-VT e o AMD-V. O Virtual Server 2005 R2 SP1 foi lançado e dava suporte às novas tecnologias de processadores, dando um melhor desempenho. Entretanto, todas as chamadas de hardware feito pelas VMs eram enviadas ao VMM que, por sua vez, as encaminhavam para o sistema operacional host e depois para o Kernel do Windows. Só depois disso a VM acessava o hardware, fazendo um chaveamento do processador entre a máquina física e a virtual. Desta forma, o Virtual Server 2005 não utilizava todo o poder proporcionado pela virtualização de hardware da Intel e AMD.

No Windows 2008, a Microsoft lançou o Hyper-V e o Hyper-V Server. O Hyper-V oferece suporte a VM x86 e x64, além de 64 GB de memória e até 4 processadores por máquina virtual, usando toda a capacidade de virtualização de hardware.

Com o lançamento do Windows Server 2008 R2, a Microsoft apresenta ao mercado a nova geração de software de virtualização denominada Microsoft Hyper-V R2. No mesmo modelo da versão anterior, esse é integrado no sistema operacional Windows Server 2008 R2 com uma função (role) que pode ser ativada ou desativada ou mesmo como um produto independente (Stand-Alone) não necessitando da instalação do sistema operacional, pois o mesmo é uma versão do sistema operacional reduzido e sem interface especialmente desenvolvida para oferecer uma camada dedicada à virtualização com a vantagem de ser um produto gratuito.

Com essa nova versão, o produto além de manter compatibilidade com as VMs de seu antecessor, a versão R2 oferece diversos novos recursos, sendo os principais:

  • Live Migration
  • Failover Clustering
  • Cluster Sharing Volume
  • Suporte avançado a mais processadores e memórias

 

 

Abraços e até o próximo salvamento.

Magno Alberto

Olá Sobreviventes.

Durante conversas com amigos e colegas de TI, tenho observado que muita gente sabe o que é virtualização, mas falta aquele “plus” sobre o que realmente é virtualização, suas características e benefícios.

Estarei publicando diversos posts sobre o que é virtualização e detalhes sobre o Hyper-V e VMware e evidentemente agradeço aqueles que quiserem contribuir com a evolução desse material.

 

Introdução – O Surgimento da Virtualização

Em 1959, o cientista da computação e pioneiro no design de programação de linguagens, Christopher Strachey, publicou na Conferência Internacional de Processamento da Informação realizada em NY, na UNESCO, o que ele intitulou de Time Sharing Processing in Large Fast Computers. Sua publicação tratou do aspecto do uso da multi-programação em tempo compartilhado e estabeleceu um novo conceito de utilização de máquinas de grande porte visando a produtividade dos recursos de hardware.

Nos anos 60, a multi-programação foi utilizada no super computador Atlas. Este projeto, que contou com a participação das universidades de Manchester e Ferranti Ltd., foi pioneiro no conceito de paginação por demanda e chamadas ao supervisor, o qual é referenciado como extracodes. De acordo com seus designers, as rotinas do Supervisor Extracodes eram formadas principalmente por chamadas dependentes do supervisor. Elas eram ativadas por rotinas de interrupção ou instruções do extracode que ocorriam em um objeto do programa. Ou seja, uma máquina virtual era usada pelo supervisor Atlas e outro era usado para rodar programas de usuários.

Em meados dos anos 60, o centro de pesquisa Watson da IBM possuía o projeto M44/44X, a principal oportunidade de avaliar os conceitos do sistema de time sharing. A arquitetura era baseada em máquinas virtuais, a principal era um IBM 7044 (M44), e cada uma delas possuía uma imagem experimental da principal máquina (44X). O espaço de endereçamento do 44X era residente na hierarquia de memória das máquinas M44, implementada por meio de memória virtual e multi-programação.

Após os primeiros experimentos, a IBM realizou uma série de upgrades em sua arquitetura e geraram vários outros projetos como IBM 7040 e 7094 em conformidade com o Compatible Time Sharing System (CTSS) desenvolvido pelo MIT (Massachusetts Institute of Technology). Nesta mesma época, a IBM construiu os supercomputadores da família 360 e o MIT desenvolveu o projeto MAC um acrônimo para Multiple Access Computer, projeto este que ficou famoso pelas inovações na pesquisa nas áreas de sistemas operacionais, inteligência artificial e teoria da computação.

Um dos maiores focos do projeto MAC foi o de desenvolver um sucessor para o CTSS, o Multics, o qual foi o primeiro sistema operacional de alta disponibilidade, desenvolvido como parte do consórcio que incluía a GE (General Electric) e o Bell Laboratories.

De forma independente, a IBM continuou a desenvolver sistemas de máquinas virtuais como CP-40 (desenvolvido a partir de uma modificação da versão do IBM 360/40), o CP-67, VM/370 e muitos outros. Tipicamente, máquinas virtuais IBM eram cópias idênticas do hardware adjacente, onde um componente chamado Virtual Machine Monitor (VMM) roda diretamente no hardware real. Múltiplas máquinas virtuais podem então ser criadas por meio do VMM e cada instância pode rodar seu próprio sistema operacional.

Atualmente, a IBM é líder no mercado de mainframes, que utiliza a tecnologia de particionamento para prover uma robusta e respeitada plataforma computacional.