Prévia do material em texto
O que é Virtualização
Neste artigo vamos falar sobre uma das tecnologias mais importantes e promissoras da
atualidade: a Virtualização. Essa tecnologia - ou conjunto de tecnologias, para ser mais
exato - encontra aplicação em inúmeras áreas da TI moderna, sendo o pilar sobre o qual,
por exemplo, a Computação em Nuvem é constituída.
A finalidade da Virtualização é fornecer uma versão virtual de tecnologias essenciais em
computação, como Hardware, Armazenamento e Redes.
Hardware: Essa é a aplicação mais comum da tecnologia de Virtualização, na qual
um sistema operacional é instalado sobre outro sistema, com seus recursos de
hardware representados por software.
Armazenamento: Uma camada de software é criada entre os discos físicos e os
dispositivos que acessam esses discos, de modo a tornar o acesso mais flexível,
personalizável e gerenciável. Também é conhecido como SDS - Software
Defined Storage (Armazenamento Definido por Software).
Rede: Também podemos criar uma infraestrutura lógica de rede sobre uma rede
física, que permita a configuração e personalização de acordo com nossas
necessidades. Também chamada de SDN - Software Defined Networking (Rede
Definida por Software).
Quando usamos técnicas de virtualização, portanto, os dispositivos físicos são
representados por entidades de software:
Servidores e estações de trabalho se tornam Máquinas Virtuais (VMs / Virtual
Machines)
Rede e Storage podem ser virtualizados, transformando-se em SDN e SDS.
Assim, é possível construir o que chamamos de SDDC - Software Defined Data
Center (Data Center Definido por Software).
Virtualização de Hardware
A virtualização de hardware é uma combinação da engenharia de hardware e software
que visa a criação de Máquinas Virtuais. Uma máquina virtual, ou VM, é uma abstração
do hardware de computadores que permite a uma única máquina física agir como se fosse
várias, ou seja, executando diversos sistemas operacionais simultaneamente e de forma
isolada entre si.
Três são os componentes principais em um sistema de hardware virtualizado:
Hospedeiro (Host)
Convidado (Guest)
Camada de Virtualização (Hypervisor)
A figura a seguir ilustra a relação entre esses três componentes:
Motivos para usar Virtualização
Porque deveríamos implantar técnicas de virtualização em uma empresa? Vários são os
motivos que apontam nessa direção. Podemos citar, por exemplo:
Aproveitamento da capacidade de computação e performance
Economia de energia elétrica
Diminuição de espaço físico ocupado
Redução de custos administrativos e de gerenciamento
Rapidez na implantação de novos sistemas
Aumento na disponibilidade de sistemas
Devido a esses motivos, e outros, a Virtualização encontra inúmeras aplicações na TI
atual, tais como:
Criação de ambientes seguros, personalizáveis e isolados.
Emulação de ambientes de execução separados
Construção de sistemas escaláveis e elásticos.
Otimização de Storage
Automação do processo de instalação de SOs (Clonagem, Appliances, etc)
Isolamento de Sistemas (Sandboxing)
Cloud Computing
E muitas outras aplicações.
Benefícios da Virtualização
A Virtualização traz inúmeros benefícios para a TI moderna, sendo que os trÊs citados a
seguir se destacam:
Permite um uso mais eficiente da capacidade dos servidores físicos - Com a
virtualização podemos rodar várias máquinas virtuais sobre um hardware
existente, de modo a otimizar o uso, por exemplo, do poder de processamento das
CPUs.
Permite um uso mais eficiente do espaço físico em um Datacenter - Esse espaço
costuma ser muito caro, principalmente em locais privilegiados em grandes
cidades. Ao usarmos menos hardware físico, temos menor necessidade de espaço
físico para acomodá-lo.
Permite realizar consumo de energia mais eficiente - Com menos dispositivos
físicos necessários, podemos reduzir substancialmente a necessidade de energia
elétrica e, consequentemente, os gastos com essa energia.
Além disso, o uso da virtualização também traz outros benefícios, tais como:
Consolidação de Appliances: Servidores de produção geralmente rodam poucas
ou uma única aplicação, o que acarreta o uso estimado de apenas 5 a 10% do
hardware disponível.
Assim, ao virtualizar vários servidores em um ("consolidar"), podemos reduzir a
quantidade de equipamentos físicos, o que leva à redução de:
o Custos de Hardware
o Manutenção de Data Center
o Eletricidade
o Custos com Pessoal
Podemos alcançar taxas de consolidação médias de 10:1 em casos extremos, o que
significa que 10 servidores físicos poderiam ser substituídos por um único
servidor rodando máquinas virtuais.
E, além de todos esses benefícios citados, ao empregarmos sistemas virtualizados também
encontraremos aplicações para:
Desenvolvimento e Testes de Aplicações
Testes de Upgrades de Software e Sistemas
Treinamento e Educação
Limitações da Virtualização
Claro que essa tecnologia não é nenhuma bala de prata, não resolvendo todos os
problemas existentes em TI, e também possui suas limitações. Podemos citar, entre
outras:
Escalabilidade limitada
Sistemas relativamente pesados, pois cada SO virtualizado possui seu próprio
kernel (se forem executados apenas SOs iguais, existem soluções para resolver
essa limitação, como o uso de Contêineres)
Degradação de Performance - o convidado pode sofrer latências altas por conta
da camada de abstração
Ameaças e Falta de Segurança
Conceito de Máquina Virtual
As Máquinas virtuais são criadas sobre uma camada de software denominada
Hypervisor, que pode rodar sobre um sistema operacional hospedeiro na máquina, ou
ainda ser executado de forma autônoma. Assim, é possível emular componentes de
hardware como CPU, Discos, RAM, Redes e também instalar sistemas operacionais
convidados.
Uma máquina virtual é, em última instância, apenas um arquivo gravado em um disco no
servidor que contém todo um sistema operacional com seu kernel, bibliotecas, interfaces
e aplicações de usuário.
Com o uso de máquinas virtuais é possível criar múltiplos sistemas operacionais na
mesma máquina física e executá-los simultaneamente. Por exemplo, podemos ter em um
mesmo servidor uma máquina virtual Linux, uma Windows Server 2012 R2 e um sistema
FreeBSD rodando ao mesmo tempo.
Hypervisor
Um Hypervisor é o software utilizado para realizar o gerenciamento das máquinas
virtuais. Também são conhecidos como VMM - Virtual Machine Manager
(Gerenciador de Máquina Virtual). Os hypervisors foram desenvolvidos a partir do início
dos anos 70 para rodar em mainframes, e são disponibilizados para PCs por diversos
fabricantes atualmente.
Existem dois tipos principais de hypervisores disponíveis: Tipo 1 e Tipo 2.
Tipos de Hypervisores
Há dois tipos de Hypervisors principais:
Tipo 1: Nativo (Bare Metal): O software do hypervisor roda diretamente sobre a
plataforma de hardware na função de um programa de controle para os sistemas
virtualizados; os exemplos mais populares são o VMWare ESXi e o Citrix
XenServer.
Tipo 2: Hospedado (Hosted): Neste caso o software do hypervisor é executado
dentro do ambiente de um sistema operacional como um software de controle para
os sistemas virtualizados. Neste caso, o hypervisor é apenas um programa que é
executado sobre um sistema operacional já presente na máquina. Sistemas
operacionais “Convidados” (Guests) são instalados sobre essa camada do
Hypervisor. Exemplos comuns incluem o Oracle Virtualbox, VMWare
Workstation e o Qemu.
A figura a seguir ilustra a arquitetura básica de um hypervisor tipo 1 (bare metal, "na
lata"):
E na figura seguinte, um hypervisor tipo 2 (hosted, "hospedado"):
Hypervisor "Híbrido"
Alguns hypervisors não são facilmente classificáveis, devido ao modo como são
executados. Exemplos:
KVM (Kernel-basedVirtual Machine) no Linux;
bhyve, no FreeBSD
Ambos são módulos do kernel, que convertem o SO hospedeiro em um hypervisor Tipo
1. Porém, os sistemas Linux e FreeBSD são sistemas operacionais de propósito geral,
com diversas outras aplicações rodando concomitantemente, de modo que os hypervisors
acima podem ser considerados como sendo de Tipo 2 também.
Exemplos de Hypervisors
A lista abaixo traz os nomes de alguns dos hypervisors mais populares e utilizados
atualmente. Não se trata de uma lista completa, mas apenas uma pequena listagem
ilustrativa do ecossistema de softwares para virtualização:
VMware ESXi
Citrix XenServer
Microsoft Hyper-V
KVM
Oracle VirtualBox
VMware Workstation
Parallels
Qemu