Dispositivos Virtuais e o Open Virtualization Format

Um formato e kit de ferramentas para dispositivos cross-hypervisor

Não apenas a virtualização avançou a tecnologia de ponta na maximização da eficiência do servidor, como também abriu a porta para novas tecnologias que não eram possíveis antes. Uma dessas tecnologias é o dispositivo virtual, que fundamentalmente muda a maneira como o software é entregue, configurado e gerenciado. Mas o poder por trás dos dispositivos virtuais está na capacidade de compartilhá-los livremente entre diferentes hypervisors. Aprenda sobre ideias e benefícios por trás de dispositivos virtuais, e descubra uma solução padrão para a interoperabilidade de dispositivo virtual chamado de Open Virtualization Format.

Compartilhe seu conhecimento:  Que tipos de aplicações se tonariam dispositivos úteis em seu ambiente? Inclua seus comentários abaixo.

M. Tim Jones, Consultant Engineer, Emulex Corp.

M. Tim JonesM. Tim Jones é um arquiteto de firmwares embarcados e autor de Inteligência Artificial: Sistemas de Abordagem, GNU/Linux, Programação de Aplicativos AI (atualmente em sua segunda edição), Programação de Aplicativos AI (em sua segunda edição) e BSD Sockets Programming from a Multilanguage Perspective. Sua formação em engenharia vai desde o desenvolvimento de kernels para nave espacial geossincrônica até a arquitetura de sistema embarcado e o desenvolvimento de protocolos de interligação de redes. Tim é um Engenheiro Consultor para a Emulex Corp. em Longmont, Colorado.


nível de autor Contribuidor do
        developerWorks

18/Nov/2009

Junte-se aos grupos verdes em My developerWorks

Discuta tópicos e compartilhe recursos sobre energia, eficiência e o meio ambiente no espaço GReen IT Report e no grupo Green computing em My developerWorks.

Dispositivos virtuais são uma evolução de entrega de softwre ativada através da virtualização. Eles estão abastecendo a entrega de aplicativos eficientes e otimizados e também a rápida onda de crescimento da computação em nuvem. Este artigo explora as ideias por trás da virtualização, dispositivos virtuais, suas implicações para sistemas operacionais e normas futuras que simplificarão a implementação de software de dispositivo virtual.

A chave para dispositivos virtuais

Vamos começar com uma rápida discussão da chave por trás dos dispositivos virtuais: a plataforma de virtualização. Apesar dos sistemas operacionais representarem uma plataforma de virtualização para aplicativos (compartilhando acesso com o processador e os recursos), os hypervisors fazem a mesma coisa para sistemas operacionais. Hypervisors são importantes porque permitem que você execute múltiplos diferentes sistemas operacionais no mesmo sistema. Da perspectiva dos usuários de desktop, esta habilidade é importante porque permite a eles executarem o Windows® e o Linux® simultaneamente. Mas da perspectiva de um servidor, ele permite hospedar múltiplos sistemas operacionais que executam uma variedade de aplicativos do servidor simultaneamente (como servidores da Web, aplicativos de e-mail, bancos de dados e outros serviços úteis). Além disso, cada sistema operacional é isolado um do outro, assim, uma falha em, um não afeta nenhum outro.

Para aplicativos de servidor, a virtualização é crucialmente importante. Um estudo recente da U.S. Environmental Protection Agency descobriu que servidores típicos eram usados para somente 5% de sua capacidade. Isso é muita energia, espaço e custo associados com um sistema. A virtualização do servidor resolve este problema criando um servidor virtualizado no qual muitos sistemas operacionais (e seus aplicativos) podem executar. Desta forma, 10 ou mais servidores físicos podem ser reduzidos a 10 ou mais servidores virtuais executando em um único servidor físico (veja a Figura 1).

Figura 1. Benefícios da virtualização de servidor
Benefícios da virtualização de servidor.

Na Figura 1, é possível ver que cada pilha de software (sistema operacional e aplicativos) é uma máquina virtual (VM) isolada. A falha de uma VM não significa que todos os outros VMs falham. Mas o que é mais importante nesta figura está na parte superior de cada pilha. O propósito por trás de cada pilha de software é o nível do aplicativo: os aplicativos são o real valor na pilha de software. Neste sentido, dispositivos virtuais são simplesmente contêineres para aplicativos. Os aplicativos têm suas próprias dependências (como um sistema operacional ou bibliotecas), mas os aplicativos são a chave.


Anatomia de dispositivos virtuais

Assim, um dispositivo virtual é simplesmente um contêiner para aplicativos e todas as suas dependências (sistema operacional, biblioteca de terceiros, configuração e assim por diante). Vamos explorar o dispositivo virtual—assim como sua alternativa—com um pouco mais de profundidade.

O contêiner de dispositivo virtual é uma imagem VM (VMI). Um VMI é um arquivo que contém a imagem do disco rígido da VM (incluindo o kernel, partição de inicialização e sistema de arquivos raiz). O tipicamente está em um formato compactado—especificamente, o arquivo aumenta e reduz com o conteúdo do VMI e não está definido pela capacidade do disco rígido da VM. O formato do VMI é importante por razões de compatibilidade e eu voltarei a este tópico em breve.

Então, é possível pensar em um dispositivo virtual como uma pilha de software que incorpora os aplicativos de destino, bibliotecas, serviços, configuração, dados relevantes e sistema operacional. Também, o dispositivo virtual, além de ser um conjunto de elementos combinados, é configurado e voltado para o aplicativo específico (veja a Figura 2).

Figura 2. Anatomia de um dispositivo virtual
Anatomia de um dispositivo virtual

Mas no final do dia, o aplicativo virtual não passa de um grande arquivo que um hypervisor pode usar para criar uma instância VM. Como um arquivo, o aplicativo tem algumas propriedades úteis,—por exemplo, é possível duplicá-los (para propósitos de backup) assim como movê-los entre hypervisors (chamado de migração VM).

A vantagem do aplicativo virtual é que o foco está no aplicativo. O VMI incorpora tudo o que é necessário para executar esse aplicativo em um ambiente virtualizado. Ele é configurado e ajustado para esse aplicativo, simplificando sua implementação. Agora, considere a alternativa: o mesmo aplicativo poderia ser distribuído fora de um VMI e executado em um sistema operacional arbitrário, necessitando que você construa o aplicativo (e todas as bibliotecas e serviços dependentes), e depois configure e ajuste o aplicativo e o ambiente. O aplicativo também pode ter requisitos de sistema operacional específicos. Este processo é comum e sua complexidade depende do próprio aplicativo. Mas o processo consome tempo e é propenso a erro.

A diferença fundamental retorna para um foco no aplicativo. Por exemplo, uma instalação de aplicativo pode acarretar na instalação de um sistema operacional específico (ou a instalação de um sistema de arquivos específico). A instalação também pode contar com a instalação de serviços dependentes (como um banco de dados) e bibliotecas (além de satisfazer suas dependências). Finalmente, pode ser necessário a configuração e o ajuste de muitos desses elementos. Após a implementação do aplicativo em um sistema particular, ele está ligado a esse sistema.

O VMI conta com um hypervisor compatível e potencialmente com alguma configuração da emulação de dispositivo do hypervisor, mas o foco permanece no aplicativo. Entretanto, há mais vantagem em um aplicativo virtual do que apenas a configuração mais simples. Agora, vamos ver um dos aspectos-chave do aplicativo virtual.


Implicações dos aplicativos virtuais

Quando você começa a olhar para aplicativos virtuais da perspectiva do aplicativo, é possível começar a padronizar e ajustar todo o ambiente ao redor do aplicativo. Considere o sistema operacional. Para um determinado aplicativo, certos serviços do sistema operacional podem não ser necessários, ainda que outros serviços possam ser importantes para o desempenho do aplicativo de destino. O sistema operacional neste contexto é referido como um Just Enough Operating System, ou JeOS (pronuncia-se juice). O termo foi cunhado pela primeira vez pela VMware e representa a construção ideal para o dispositivo virtual.

Entretanto, apesar da VMware ter cunhado o termo, a prática existe há um tempo considerável. Sistemas integrados baseados em Linux normalmente implementam um kernel com memória necessária menor e uma pilha de aplicativos que é melhor para o ambiente restrito do que uma configuração integrada fornecida. Porém, o uso do VMware vai além de simplesmente minimizar os serviços para suportar um ambiente restrito. O espaço em disco rígido e a memória são abundantes em ambientes do servidor, mas há muito mais em jogo, de fato. Menos serviços e drivers significam menos software para manter em um determinado sistema. A partir de uma perspectiva de gerenciamento, isso significa menos correções para manter o sistema operacional atualizado (com menos necessidade de largura de banda e armazenamento).

Da perspectiva da confiabilidade, o JeOS oferece algumas vantagens. Ao excluir software que não é necessário para um determinado sistema, as oportunidades de falha são reduzidas e a confiabilidade aumenta, o que também melhora a segurança da pilha de software minimizando as possíveis explorações (menos serviços significa menos caminhos para atacar um sistema).

Linux (um kernel monolítico) fornece os meios para padronizar o sistema operacional dinamicamente através de módulos, mas minimizações arquitetônicas maiores estão disponíveis apenas através da compilação de kernel. Em contraste, sistemas operacionais com microkernel fornecem os meios para descartar funcionalidade dinamicamente, permitindo um ambiente muito mais escalável. Os microkernels fazem isso criando um kernel (que inclui os serviços básicos como gerenciamento de memória e planejamento) e publicando todas as outras funcionalidades para fora do kernel. Além de fornecer um ambiente mais escalável, o microkernel pode oferecer vantagens de confiabilidade. Quanto menos códigos forem executados em espaço privilegiado, menor será a probabilidade de um sistema operacional falhar.


Construindo Dispositivos Virtuais

Para minimizar o kernel Linux, é possível seguir algumas rotas distintas. A primeira é a configuração manual de um kernel através do processo de construção de kernel. Apesar dessa ser a maneira mais precisa de minimizar um kernel (para o seu aplicativo particular), existe um método significantemente mais simples. A maioria dos principais distribuidores Linux fornece variantes de JeOS. Esses derivativos de sistema operacional são configurados especificamente para dispositivos virtuais que executam em um hypervisor (veja Recursos para links para mais informações).

O Ubuntu JeOS é um derivativo Ubuntu otimizado para executar em Servidor VMware ESXi ou VMware ou no hypervisor Linux de Máquina Virtual baseado em Kernel (KVM). Ele não inclui nenhum ambiente gráfico e executa em arquitetura Intel® ou AMD x86 com uma memória mínima necessária, de menos de 380MB. O Ubuntu JeOS também inclui o utilitário ubuntu-vm-builder, que você pode usar para construir dispositivos virtuais (em minutos) baseados em uma especificação definida pelo usuário.

O SUSE Linux também fornece um ambiente JeOS chamado de SUSE Appliance Program. Este ambiente é similar à distribuição do Ubuntu, mas com algumas diferenças notáveis. A variante SUSE funciona com o kernel Linux SUSE e fornece algumas ferramentas diferentes para a construção de dispositivos virtuais, dependendo da sua necessidade específica. O SUSE fornece a Kiwi, uma ferramenta baseada em linha de comandos que permite criar uma especificação de dispositivo através de XML. Com a Kiwi é possível construir um dispositivo virtual em uma variedade de diferentes formatos, incluindo LiveCD, imagem USB inicializável ou OVF. Também existe uma ferramenta de criação de dispositivo para construção manual de dispositivos virtuais. Finalmente, o SUSE Studio fornece uma ferramenta de criação de dispositivo baseada na Web fácil de usar que oferece construção com apontar-e-clicar.

Duas outras ofertas,—Oracle Enterprise Linux JeOS e projeto OpenSolaris JeOS,—fornecem recursos similares para a construção de dispositivos virtuais com pouca memória consumida. Mas uma das soluções comerciais mais antigas, a rBuilder de rPath, pode ser usada para construir dispositivos virtuais on-line. Ao usar um front-end baseado na Web, o rBuilder permite construir dispositivos virtuais públicos usando a distribuição Linux do rPath ou com o CenOS ou o Ubuntu.

Finalmente, o kit de ferramentas OVF é um conjunto de plug-ins Eclipse e uma API Java™ que você pode usar para construir pacotes de dispositivo virtual no OVF. A seção Recursos fornece um link para um ótimo tutorial que aborda o uso desta ferramenta.


Dispositivos virtuais e o OVF

Dispositivos virtuais são úteis somente enquanto são transportáveis. A habilidade para tomar um dispositivo virtual e executá-lo no VMware, como você faria no Xen ou KVM, significa mais oportunidades para o dispositivo. É aqui que o OVF (anteriormente chamado de Open Virtual Machine Format) entra. O OVF é uma especificação para um método de distribuição transportável (o que significa neutro quanto ao hypervisor) para VMs (ou neste caso, dispositivos virtuais). Com o OVF, é possível compactar e distribuir com segurança dispositivos virtuais de uma maneira eficiente. O OVF pode até representar múltiplos VMs em um único pacote. O OVF é extensível, permitindo extensões à medida que a virtualização avança.

O OVF é um formato XML que descreve todos os vários aspectos de um VM (em formato de disco). Isto inclui uma descrição dos discos virtuais que compõem a VM; a configuração de rede para a VM; recursos de processador e memória necessários para a VM; e uma variedade de metadados que descrevem o criador do dispositivo virtual, o propósito da VM, e a descrição do sistema operacional. Na seção Recursos , é possível localizar um link para o White Paper VMware OVF, que inclui um exemplo completo de um arquivo OVF.

Além disso, existem ferramentas que fornecem conversão de VMs em formato mais antigo para o OVF. Por exemplo, é possível usar ovftool para converter arquivos VM .vmx em estilo mais antigo para o OVF. Também é possível localizar ferramentas que convertem do VMware e do QEMU para VirtualBox, assim como do VMware para Xen e Parallels.


O futuro dos dispositivos virtuais

Dispositivos virtuais são um caminho simples para aplicativos complexos ao combinar aplicativos pré-configurados e um sistema operacional (suficiente) em uma imagem única pronta para executar em um hypervisor. É possível localizar dispositivos virtuais que abrangem quase qualquer aplicativo, desde firewalls e dispositivos de segurança até servidores, dispositivos de backup, e aplicativos de armazenamento (incluindo replicação e arquivamento).

Dispositivos virtuais não apenas simplificam a implementação de aplicativos para usuários individuais, mas também otimizam as arquiteturas de computação em nuvem da próxima geração. Em vez do considerável tempo necessário para construir uma distribuição especializada com aplicativos, a maioria das infraestruturas de computação em nuvem fornece dispositivos virtuais prontos para implementação para satisfazer qualquer necessidade. E porque um dispositivo virtual é simplesmente um arquivo com um wrapper (a descrição XML), é fácil replicar e distribuir tais dispositivos.

A especificação OVF é um desenvolvimento conjunto de um número de empresas envolvidas em ambos, virtualização e desenvolvimento de hardware, incluindo IBM, Microsoft, Hewlett-Packard, Dell, VMware e XenSource. Quando grandes empresas como essas podem concordar sobre uma especificação como a OVF, você sabe que ela é bem-sucedida. O crescente desenvolvimento ao redor dos dispositivos virtuais finalmente direcionará seu crescimento contínuo e as novas especificações como a OVF certamente ajudarão.

Recursos

Aprender

  • "Virtual Linux" (developerWorks, dezembro de 2006) fornece mais informações sobre os várias esquemas de virtualização baseados em Linux. Este artigo explora a virtualização completa, a para-virtualização, e a virtualização de sistema operacional.
  • O termo JeOS (Just enough Operating System (este link reside fora de ibm.com)) foi cunhado pela primeira vez por Srinivas Krishnamurti da VMware. O JeOS refere-se a um sistema operacional que foi re-escalado para incluir somente aqueles serviços que o aplicativo de destino necessita.
  • Em "Build virtual appliances using the OVF Toolkit" (developerWorks, junho de 2009), aprenda como é fácil construir dispositivos virtuais usando o kit de ferramentas OVF como um plug-in Eclipse.
  • A lista de dispositivos virtuais da VMware desenvolvida com o VMware Studio 2.0 Beta (este link reside fora de ibm.com) inclui uma ampla variedade de exemplos de dispositivos virtuais de segurança, armazenamento, administração, gerenciamento de conteúdo e colaboração.
  • Em "Linux virtualization and device passthrough" (developerWorks, outubro de 2009), saiba mais sobre a emulação de dispositivo. A emulação de dispositivo é uma parte importante do hypervisor, fazendo uma ponte sobre o intervalo entre dispositivos virtuais na VM para dispositivos físicos abaixo do hypervisor.
  • Em "Reduce your Linux memory footprint" (developerWorks, janeiro de 2007), você aprenderá como ajustar seu sistema operacional para memórias necessárias menores e melhor desempenho. Apesar de ser uma ferramenta mais manual que virtual, este método fornece o maior controle sobre a construção de JeOS.
  • Este White Paper do OVF (este link reside fora de ibm.com) fornece uma excelente introdução ao OVF e seu propósito. Também neste White Paper há um arquivo OVF de exemplo que ilustra um dispositivo virtual. É possível localizar uma variedade de ferramentas para suportar a criação de VM usando OVF,—por exemplo, está sob desenvolvimento o Open-OVF (este link reside fora de ibm.com) disponível na SourceForge.
  • O ovftool (este link reside fora de ibm.com) permite migrar facilmente os VMs em certos formatos para OVF, assim como voltar do OVF para outros formatos.

Obter produtos e tecnologias

Comentários

developerWorks: Conecte-se

Los campos obligatorios están marcados con un asterisco (*).


Precisa de um ID IBM?
Esqueceu seu ID IBM?


Esqueceu sua senha?
Alterar sua senha

Ao clicar em Enviar, você concorda com os termos e condições do developerWorks.

 


A primeira vez que você entrar no developerWorks, um perfil é criado para você. Informações no seu perfil (seu nome, país / região, e nome da empresa) é apresentado ao público e vai acompanhar qualquer conteúdo que você postar, a menos que você opte por esconder o nome da empresa. Você pode atualizar sua conta IBM a qualquer momento.

Todas as informações enviadas são seguras.

Elija su nombre para mostrar



Ao se conectar ao developerWorks pela primeira vez, é criado um perfil para você e é necessário selecionar um nome de exibição. O nome de exibição acompanhará o conteúdo que você postar no developerWorks.

Escolha um nome de exibição de 3 - 31 caracteres. Seu nome de exibição deve ser exclusivo na comunidade do developerWorks e não deve ser o seu endereço de email por motivo de privacidade.

Los campos obligatorios están marcados con un asterisco (*).

(Escolha um nome de exibição de 3 - 31 caracteres.)

Ao clicar em Enviar, você concorda com os termos e condições do developerWorks.

 


Todas as informações enviadas são seguras.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=80
Zone=Linux, Software livre
ArticleID=447875
ArticleTitle=Dispositivos Virtuais e o Open Virtualization Format
publish-date=11182009