A vir­tu­a­li­za­ção de com­po­nen­tes de hardware, software, de ar­ma­ze­na­mento e de rede permitem que recursos de TI possam ser abs­traí­dos, para que sejam mais bem uti­li­za­dos.

Definição de vir­tu­a­li­za­ção

A vir­tu­a­li­za­ção abstrai recursos físicos da tec­no­lo­gia da in­for­ma­ção (TI), para que eles possam ser dis­tri­buí­dos de forma mais flexível, de acordo com cada ne­ces­si­dade, ga­ran­tindo a melhor uti­li­za­ção possível destes mesmos recursos. Tanto com­po­nen­tes de hardware quanto com­po­nen­tes de software podem ser abs­traí­dos. Já com­po­nen­tes criados a partir de um processo de vir­tu­a­li­za­ção costumam ser chamado de com­po­nen­tes virtuais ou lógicos — eles funcionam da mesma forma que o seu equi­va­lente físico.

Uma das prin­ci­pais vantagens da vir­tu­a­li­za­ção é sua camada de abstração, lo­ca­li­zada entre o recurso físico e a imagem virtual. Ela serve de base para di­fe­ren­tes tipos de serviços de nuvem, cada vez mais im­por­tan­tes no mundo dos negócios. Apesar de com­par­ti­lha­rem se­me­lhan­ças, também é im­por­tante que você entenda que vir­tu­a­li­za­ção é diferente de simulação e de emulação.

Diferença entre vir­tu­a­li­za­ção, simulação e emulação

Qualquer pessoa que estude ou trabalhe com vir­tu­a­li­za­ção ine­vi­ta­vel­mente se deparará com os termos “simulação” e “emulação”. Ge­ral­mente con­si­de­ra­dos sinônimos, eles são tec­ni­ca­mente di­fe­ren­tes, além de também di­ver­gi­rem do conceito de vir­tu­a­li­za­ção:

  • Simulação: Diz-se da re­pli­ca­ção completa do com­por­ta­mento de um sistema por um software. Dizemos “completa”, pois não somente funções de interação com outros sistemas são imitadas, mas todos os com­po­nen­tes do sistema simulado, assim como a lógica interna. Si­mu­la­do­res costumam ser usados para compilar, em um sistema de teste, programas de­sen­vol­vi­dos para um sistema es­pe­cí­fico, antes que estes sejam im­ple­men­ta­dos de fato.
  • Emulação: Enquanto a simulação tem por objetivo imitar sistemas, a emulação concentra-se em replicar fielmente com­po­nen­tes de hardware e de software de um sistema, mas não a lógica interna. O objetivo de um processo de emulação é obter exa­ta­mente os mesmos re­sul­ta­dos que seriam al­can­ça­dos por o sistema simulado, ou seja, pela con­tra­parte real. Assim, di­fe­ren­te­mente de si­mu­la­do­res, emu­la­do­res são capazes de subs­ti­tuir com­ple­ta­mente o sistema emulado.

Na prática, si­mu­la­do­res e emu­la­do­res são comumente usados em três situações:

  • Ambientes de hardware costumam ser simulados/emulados para que possam executar sistemas ope­ra­ci­o­nais de­sen­vol­vi­dos para uma pla­ta­forma com um pro­ces­sa­dor diferente.
  • Sistemas ope­ra­ci­o­nais são simulados/emulados para que possam executar apli­ca­ções que, na verdade, foram de­sen­vol­vi­das para outros sistemas ope­ra­ci­o­nais.
  • Ambientes de hardware para softwares obsoletos são simulados/emulados quando com­po­nen­tes originais não se encontram mais dis­po­ní­veis.

Soluções de software que sim­ples­mente oferecem uma camada de com­pa­ti­bi­li­dade para superar in­com­pa­ti­bi­li­da­des entre com­po­nen­tes de hardware e software não devem ser con­si­de­ra­das emu­la­do­res nem si­mu­la­do­res, já que elas não replicam um sistema inteiro, mas apenas parte dele, como uma interface, por exemplo. Entre as soluções que oferecem camadas de com­pa­ti­bi­li­dade estão o Wine (acrônimo de Wine Is Not an Emulator) e o Cygwin.

Fun­ci­o­na­mento da vir­tu­a­li­za­ção

Apesar de o conceito de vir­tu­a­li­za­ção aproximar-se dos conceitos de simulação e emulação, a vir­tu­a­li­za­ção tem uma fi­na­li­dade diferente. Si­mu­la­do­res e emu­la­do­res im­ple­men­tam um modelo de sistema de com­pu­ta­dor por meio de um software, para que in­com­pa­ti­bi­li­da­des sejam eli­mi­na­das. Na vir­tu­a­li­za­ção, por outro lado, espera-se que o mínimo possível precise ser simulado ou emulado. Na prática, tec­no­lo­gias de vir­tu­a­li­za­ção devem somente ocupar-se de es­ta­be­le­cer uma camada de abstração que seja capaz de dis­po­ni­bi­li­zar recursos de TI in­de­pen­den­te­mente de uma base física.

Por exemplo, se uma ou mais versões virtuais do Windows 10 tiverem de ser exe­cu­ta­das, para fins de teste, em um com­pu­ta­dor que também usa o sistema ope­ra­ci­o­nal Windows 10, um software de vir­tu­a­li­za­ção pode ser uma al­ter­na­tiva. No entanto, se você quiser iniciar duas versões virtuais do Ubuntu em um com­pu­ta­dor Windows, precisará de um software de vir­tu­a­li­za­ção capaz de superar in­com­pa­ti­bi­li­da­des entre os sistemas Windows e Linux, o tendo que recorrer a um processo de emulação.

Em contextos de vir­tu­a­li­za­ção, diversas soluções de software são usadas em com­bi­na­ção com emu­la­do­res, o que significa que essas tec­no­lo­gias podem ser com­bi­na­das.

Tec­no­lo­gias de vir­tu­a­li­za­ção

No atual contexto de tec­no­lo­gia da in­for­ma­ção, diversas formas de vir­tu­a­li­za­ção podem ser re­a­li­za­das, como abs­tra­ções de recursos de software, de memória, de dados e de com­po­nen­tes de rede. Por esse motivo, algumas dis­tin­ções são feitas:

  • Vir­tu­a­li­za­ção de hardware
  • Vir­tu­a­li­za­ção de software
  • Vir­tu­a­li­za­ção de ar­ma­ze­na­mento
  • Vir­tu­a­li­za­ção de dados
  • Vir­tu­a­li­za­ção de rede

Vir­tu­a­li­za­ção de hardware

O termo vir­tu­a­li­za­ção de hardware faz re­fe­rên­cia a tec­no­lo­gias de software que oferecem com­po­nen­tes de hardware in­de­pen­den­tes de uma base física. O principal exemplo prático de vir­tu­a­li­za­ção de hardware é a máquina virtual (VM).

Uma máquina virtual nada mais é que um com­pu­ta­dor virtual que se comporta, com o usuário final, como um com­pu­ta­dor físico, composto de um hardware e de um sistema ope­ra­ci­o­nal. Em vir­tu­a­li­za­ções de hardware, hi­per­vi­so­res são os res­pon­sá­veis por criar a camada de abstração entre a base física e o sistema virtual.

Nota

O hi­per­vi­sor, também chamado de monitor de máquina virtual (VMM), é o software que pos­si­bi­lita a operação de vários sistemas con­vi­da­dos em um sistema host.

Hi­per­vi­so­res gerenciam os recursos de hardware for­ne­ci­dos pelo sistema host, como o CPU, a memória RAM, o espaço em disco rígido e os pe­ri­fé­ri­cos, dividindo-os entre os sistemas con­vi­da­dos. Tec­ni­ca­mente, o processo pode ser feito tanto por vir­tu­a­li­za­ção completa quanto por pa­ra­vir­tu­a­li­za­ção.

  • Vir­tu­a­li­za­ção completa: Em uma vir­tu­a­li­za­ção completa, o hi­per­vi­sor dis­po­ni­bi­liza um ambiente de hardware completo para cada máquina virtual. Nela, cada VM recebe o próprio con­tin­gente de recursos de hardware virtual, por meio do hi­per­vi­sor, podendo executar apli­ca­ções a partir desse processo. O hardware físico do sistema host, contudo, permanece oculto para o sistema ope­ra­ci­o­nal convidado, o que pos­si­bi­lita a operação de sistemas con­vi­da­dos não mo­di­fi­ca­dos. Os softwares mais populares que realizam vir­tu­a­li­za­ções completas são o Oracle VM Vir­tu­al­Box, o Parallels Works­ta­tion, o VMware Works­ta­tion, o Microsoft Hyper-V e Microsoft Virtual Server.
  • Pa­ra­vir­tu­a­li­za­ção: A vir­tu­a­li­za­ção completa fornece um ambiente de hardware virtual próprio para cada VM. Já em um processo de pa­ra­vir­tu­a­li­za­ção, o hi­per­vi­sor dis­po­ni­bi­liza apenas uma interface de pro­gra­ma­ção de apli­ca­ções (API). É por meio dela que os sistemas ope­ra­ci­o­nais con­vi­da­dos acessam o hardware físico do sistema host, fato que confere à pa­ra­vir­tu­a­li­za­ção um melhor de­sem­pe­nho quando comparada à vir­tu­a­li­za­ção completa. En­tre­tanto, para que uma pa­ra­vir­tu­a­li­za­ção seja possível, o núcleo (kernel) do sistema ope­ra­ci­o­nal convidado tem de ser portado para a API. Con­se­quen­te­mente, somente sistemas con­vi­da­dos mo­di­fi­ca­dos podem ser pa­ra­vir­tu­a­li­za­dos.

Usuários finais não conseguem dis­tin­guir máquinas virtuais de com­pu­ta­do­res físicos. Assim sendo, a vir­tu­a­li­za­ção de hardware costuma ser a tec­no­lo­gia utilizada para dis­po­ni­bi­li­zar um grande número de ser­vi­do­res virtuais a di­fe­ren­tes usuários que ne­ces­si­tam de uma pla­ta­forma com­pu­ta­ci­o­nal de alto de­sem­pe­nho — essa é, inclusive, a descrição do conceito do popular modelo de hos­pe­da­gem com­par­ti­lhada.

Nota

Na hos­pe­da­gem com­par­ti­lhada, o provedor de hos­pe­da­gem opera e mantém a máquina física em um centro de dados otimizado para essa fi­na­li­dade, ofe­re­cendo aos usuários recursos de hardware vir­tu­a­li­za­dos como sistemas con­vi­da­dos in­de­pen­den­tes.

Também é comum que empresas façam uso de vir­tu­a­li­za­ções de hardware para con­so­li­dar ser­vi­do­res em ambientes cor­po­ra­ti­vos. O processo oferece três grandes vantagens:

  • Melhora a uti­li­za­ção do pro­ces­sa­dor do servidor.
  • Distribui mídias de ar­ma­ze­na­mento de forma mais eficaz.
  • Consome menos energia na operação e no res­fri­a­mento.

A vir­tu­a­li­za­ção de hardware é uma tec­no­lo­gia de vir­tu­a­li­za­ção com­pa­ra­ti­va­mente segura, já que cada sistema convidado é executado iso­la­da­mente pelo próprio ambiente de hardware virtual. Assim, se um dos sistemas con­vi­da­dos for in­fil­trado por hackers ou tiver suas funções pre­ju­di­ca­das por um malware, o fato muito pro­va­vel­mente não pre­ju­di­cará os demais sistemas con­vi­da­dos que com­par­ti­lham o mesmo sistema host.

Vantagens e des­van­ta­gens da vir­tu­a­li­za­ção de hardware:

Vantagens Des­van­ta­gens
✓ No contexto da con­so­li­da­Ã§Ã£o de ser­vi­do­res, recursos de hardware podem ser alocados di­na­mi­ca­mente e uti­li­za­dos com mais efi­ci­Ãªn­cia. ✗ A re­pli­ca­Ã§Ã£o de um ambiente de hardware com o res­pec­tivo sistema ope­ra­ci­o­nal pode gerar so­bre­car­gas.
✓ Hardwares con­so­li­da­dos são operados com mais efi­ci­Ãªn­cia ener­gé­tica do que com­pu­ta­do­res in­di­vi­du­ais. ✗ O de­sem­pe­nho de uma máquina virtual pode ser pre­ju­di­cado por outras máquinas virtuais em um mesmo sistema host.
✓ VMs oferecem graus com­pa­ra­ti­va­mente altos de iso­la­mento, isolando cargas de trabalho de maneira re­la­ti­va­mente segura.

Vir­tu­a­li­za­ção de software

Em uma vir­tu­a­li­za­ção de software, com­po­nen­tes de software são vir­tu­a­li­za­dos, ao invés de com­po­nen­tes de hardware. Ge­ral­mente, vir­tu­a­li­za­ções de software servem à:

  • Vir­tu­a­li­za­ção de apli­ca­ções
  • Vir­tu­a­li­za­ção de desktops
  • Vir­tu­a­li­za­ção de sistemas ope­ra­ci­o­nais

Vir­tu­a­li­za­ção de apli­ca­ções

A vir­tu­a­li­za­ção de apli­ca­ções abstrai apli­ca­ções in­di­vi­du­ais do sistema ope­ra­ci­o­nal sub­ja­cente, pos­si­bi­li­tando a execução de programas em ambientes de tempo de execução isolados e a dis­tri­bui­ção destes para di­fe­ren­tes sistemas, sem que o sistema ope­ra­ci­o­nal ou os arquivos locais dos res­pec­ti­vos registros tenham de ser alterados.

Vir­tu­a­li­zar apli­ca­ções é ideal para o uso local, por exemplo, para proteger o sistema ope­ra­ci­o­nal sub­ja­cente de possíveis códigos ma­li­ci­o­sos. Al­ter­na­ti­va­mente, apli­ca­ções vir­tu­a­li­za­das podem ser for­ne­ci­das, em um servidor, para vários clientes em uma rede. Em casos assim, usuários finais conseguem acessar as apli­ca­ções vir­tu­a­li­za­das por ap­pli­ca­tion streaming, por exemplo. O en­cap­su­la­mento de apli­ca­ções, incluindo de ambientes de tempo de execução, também permite que programas sejam copiados para mídias de ar­ma­ze­na­mento portáteis (como para pen drives) e nelas exe­cu­ta­dos.

O objetivo da vir­tu­a­li­za­ção de apli­ca­ções é dissociar programas do sistema ope­ra­ci­o­nal sub­ja­cente, para que estes possam ser portados e mantidos de forma cen­tra­li­zada. Em contextos cor­po­ra­ti­vos, o conceito é ideal para a dis­po­ni­bi­li­za­ção de apli­ca­ções Office.

Vantagens e des­van­ta­gens da vir­tu­a­li­za­ção de apli­ca­ções

Vantagens Des­van­ta­gens
✓ Softwares de apli­ca­Ã§Ãµes podem ser im­plan­ta­dos, ge­ren­ci­a­dos e mantidos de forma cen­tra­li­zada. ✗ Apli­ca­Ã§Ãµes to­tal­mente in­te­gra­das a sistemas ope­ra­ci­o­nais ou que exigem acesso a drivers de dis­po­si­ti­vos especiais não podem ser vir­tu­a­li­za­das.
✓ Ao isolar apli­ca­Ã§Ãµes, o sistema sub­ja­cente fica protegido contra códigos ma­li­ci­o­sos. ✗ A vir­tu­a­li­za­Ã§Ã£o de apli­ca­Ã§Ãµes levanta questões re­la­ci­o­na­das a li­cen­ci­a­men­tos.
✓ O software pode ser removido do sistema sem deixar resíduos.

Vir­tu­a­li­za­ção de desktops

A vir­tu­a­li­za­ção de desktops dis­po­ni­bi­liza ambientes de desktop de forma cen­tra­li­zada, podendo estes serem acessados por rede. Em especial, essa abordagem é am­pla­mente utilizada em contextos cor­po­ra­ti­vos.

Vir­tu­a­li­za­ções de desktops são baseadas em es­tru­tu­ras cliente-servidor, nas quais dados são trans­fe­ri­dos, entre o servidor e o cliente, por pro­to­co­los de exibição remota. De­pen­dendo de onde o poder de com­pu­ta­ção for usado para a dis­po­ni­bi­li­za­ção de um desktop virtual, uma distinção entre a abordagem baseada em host e a abordagem baseada no cliente será feita.

  • Vir­tu­a­li­za­ção de desktops baseada em host: A vir­tu­a­li­za­ção de desktops baseada em host abarca todas as abor­da­gens que executam desktops virtuais di­re­ta­mente no servidor. Nesse tipo de vir­tu­a­li­za­ção, toda ca­pa­ci­dade de com­pu­ta­ção para o for­ne­ci­mento de um ambiente de desktop e para a execução de uma aplicação é dis­po­ni­bi­li­zada pelo hardware deste mesmo servidor. Usuários podem acessar desktops virtuais baseados e host por qualquer dis­po­si­tivo cliente conectado à rede. A vir­tu­a­li­za­ção de desktops baseada em host pode ser im­ple­men­tada por meio das seguintes abor­da­gens:
    • Máquina virtual baseada em host: Nessa abordagem de vir­tu­a­li­za­ção, cada usuário se conecta à sua própria máquina virtual no servidor, por meio de um dis­po­si­tivo cliente. Aqui, dois conceitos aparecem: o de vir­tu­a­li­za­ção de desktop per­sis­tente, no qual usuários se conectam à mesma VM a cada sessão, e o de vir­tu­a­li­za­ção não per­sis­tente, no qual máquinas virtuais são alocadas ale­a­to­ri­a­mente a cada sessão.
    • Serviço de terminal: Quando um cliente é usado somente como dis­po­si­tivo de exibição para ambientes de desktop cen­tral­mente hos­pe­da­dos, ele ganha o nome de serviço de terminal, também chamado de vir­tu­a­li­za­ção de apre­sen­ta­ção. Esse tipo de serviço é fornecido por um servidor de terminal.
    • Servidor blade: Se usuários finais tiverem de acessar re­mo­ta­mente máquinas físicas in­di­vi­du­ais, eles devem fazer uso de um servidor blade: servidor modular ou gabinete de servidor que contém vários com­pu­ta­do­res de placa única, chamados blades.
  • Vir­tu­a­li­za­ção de desktop baseada no cliente: Na vir­tu­a­li­za­ção de desktop baseada no cliente, os recursos ne­ces­sá­rios para a operação do ambiente de desktop são for­ne­ci­dos pelo res­pec­tivo dis­po­si­tivo cliente.
  • Máquinas virtuais baseadas no cliente: Nessa abordagem de vir­tu­a­li­za­ção, que ge­ral­mente faz uso de um hi­per­vi­sor, o ambiente de desktop é executado em uma máquina virtual no dis­po­si­tivo cliente.
  • Trans­mis­são de sistema ope­ra­ci­o­nal: Na abordagem de trans­mis­são de sistema ope­ra­ci­o­nal, o sistema ope­ra­ci­o­nal do ambiente de desktop é executado pelo hardware local. Somente o processo de ini­ci­a­li­za­ção é realizado re­mo­ta­mente no servidor, por meio de uma imagem.

Vantagens e des­van­ta­gens da vir­tu­a­li­za­ção de desktops

Vantagens Des­van­ta­gens
✓ A vir­tu­a­li­za­Ã§Ã£o de desktops permite que ambientes de desktop sejam ad­mi­nis­tra­dos re­mo­ta­mente. ✗ Ela é mais adequada a in­fra­es­tru­tu­ras ho­mo­gê­neas.
✓ Usuários podem acessar desktops virtuais por di­fe­ren­tes dis­po­si­ti­vos finais. ✗ Algumas abor­da­gens exigem uma conexão de rede constante.
✓ A vir­tu­a­li­za­Ã§Ã£o de desktops permite a re­a­li­za­Ã§Ã£o de backups centrais. ✗ Servidor, ca­pa­ci­dade de ar­ma­ze­na­mento e largura de banda possuem altas demandas.

Vir­tu­a­li­za­ção de sistemas ope­ra­ci­o­nais

A vir­tu­a­li­za­ção de sistemas ope­ra­ci­o­nais baseia-se em funções nativas do kernel de sistemas ope­ra­ci­o­nais unixóides para executar, pa­ra­le­la­mente, várias ins­tân­cias isoladas do espaço do usuário. Ao contrário do que ocorre na vir­tu­a­li­za­ção de hardware, na vir­tu­a­li­za­ção de sistemas ope­ra­ci­o­nais nenhum sistema convidado completo e nem o kernel são re­pli­ca­dos. Pelo contrário: apli­ca­ções vir­tu­a­li­za­das no nível do sistema ope­ra­ci­o­nal com­par­ti­lham o kernel do sistema host.

Nota

Por questão de segurança, sistemas ope­ra­ci­o­nais modernos fazem distinção entre memórias virtuais relativas ao espaço do kernel e relativas ao espaço do usuário. Enquanto processos usados para operar o kernel e outros com­po­nen­tes prin­ci­pais são exe­cu­ta­dos no espaço do kernel, o espaço do usuário é dis­po­ni­bi­li­zado às apli­ca­ções dos usuários. Em sistemas ope­ra­ci­o­nais unixóides, várias ins­tân­cias virtuais do espaço do usuário podem ser exe­cu­ta­das em paralelo — recurso base da vir­tu­a­li­za­ção de sistemas ope­ra­ci­o­nais.

Cada instância de espaço do usuário re­pre­senta um ambiente de tempo de execução virtual autônomo, chamado de jail ou de container, partition, vir­tu­a­li­za­tion engine (VE), a depender da tec­no­lo­gia utilizada. Graças à vir­tu­a­li­za­ção de sistemas ope­ra­ci­o­nais, pla­ta­for­mas de con­têi­ne­res, como o Docker, puderam se rein­ven­tar. Hoje em dia, existem al­ter­na­ti­vas tão robustas quanto o Docker para a vir­tu­a­li­za­ção de con­têi­ne­res. Entre elas estão rtk, OpenVZ/Virtuozzo e runC.

Ins­tân­cias de espaço do usuário são ge­ral­mente vir­tu­a­li­za­das por me­ca­nis­mos como o chroot, dis­po­ní­veis em sistemas ope­ra­ci­o­nais unixóides. Chroot (abre­vi­a­ção de change root) é uma chamada de sistema que pos­si­bi­lita a alteração do diretório raiz de um processo em execução. Processos ter­cei­ri­za­dos a um diretório raiz virtual só conseguem acessar arquivos dentro desse mesmo diretório quando im­ple­men­ta­dos cor­re­ta­mente. Por outro lado, o chroot sozinho não é capaz de en­cap­su­lar processos su­fi­ci­en­tes. Embora ele ofereça funções básicas de vir­tu­a­li­za­ção, o mecanismo não foi planejado para proteger processos. Portanto, tec­no­lo­gias de con­têi­ne­res devem combinar o chroot a outras funções nativas do kernel, como ao Cgroups ao e na­mes­pa­ces, para dis­po­ni­bi­li­zar aos processos um ambiente de tempo de execução isolado e com acesso limitado aos recursos de hardware — a isso dá-se o nome de processo con­têi­ne­ri­zado.

  • Cgroups: Grupos de controle para o ge­ren­ci­a­mento de recursos capazes de limitar o acesso de processos a recursos de hardware.
  • Na­mes­pa­ces: Usados para iden­ti­fi­car sistemas e processos, bem como para pos­si­bi­li­tar a co­mu­ni­ca­ção entre processos e recursos de rede. Na­mes­pa­ces podem ser usados para res­trin­gir um processo e os res­pec­ti­vos processos filhos a uma seção es­pe­cí­fica do sistema sub­ja­cente.

Con­têi­ne­res de software, por sua vez, costumam conter apli­ca­ções com todas as res­pec­ti­vas de­pen­dên­cias (como bi­bli­o­te­cas, programas au­xi­li­a­res e arquivos de con­fi­gu­ra­ção). Eles permitem que apli­ca­ções sejam trans­fe­ri­das de um sistema para outro sem que haja a ne­ces­si­dade de se fazer ajustes adi­ci­o­nais. Jus­ta­mente por isso, a grande vantagem dos con­têi­ne­res é a ca­pa­ci­dade que eles têm de im­ple­men­tar apli­ca­ções em uma rede (de­ploy­ment).

Quando con­têi­ne­res são usados no contexto da ar­qui­te­tu­ras de mi­cros­ser­vi­ços, usuários também se be­ne­fi­ciam da pos­si­bi­li­dade de alta es­ca­la­bi­li­dade.

Vantagens e des­van­ta­gens da vir­tu­a­li­za­ção de sistemas ope­ra­ci­o­nais:

Vantagens Des­van­ta­gens
✓ A vir­tu­a­li­za­Ã§Ã£o de sistemas ope­ra­ci­o­nais não requer um hi­per­vi­sor, estando, por isso, associada a perdas mínimas. ✗ A vir­tu­a­li­za­Ã§Ã£o de sistemas ope­ra­ci­o­nais é voltada para ar­qui­te­tu­ras de mi­cros­ser­vi­Ã§os. Se for usada para operar apli­ca­Ã§Ãµes com es­tru­tu­ras mo­no­lí­ti­cas, essa tec­no­lo­gia de con­têi­ne­res não é vantajosa (por exemplo, em termos de es­ca­la­bi­li­dade).
✓ Se con­têi­ne­res forem usados para apli­ca­Ã§Ãµes que se baseiam na com­bi­na­Ã§Ã£o de di­fe­ren­tes mi­cros­ser­vi­Ã§os, usuários se be­ne­fi­ciam da alta es­ca­la­bi­li­dade. ✗ Ao contrário do que ocorre com máquinas virtuais, con­têi­ne­res são exe­cu­ta­dos di­re­ta­mente no kernel do sistema ope­ra­ci­o­nal host, o que demanda certas condições técnicas. Essa demanda limita a por­ta­bi­li­dade dos con­têi­ne­res: por exemplo, con­têi­ne­res do Linux não podem ser exe­cu­ta­dos em sistemas Windows sem que haja um processo de emulação.
✓ Con­têi­ne­res podem ser im­ple­men­ta­dos di­re­ta­mente, sem que processos de ins­ta­la­Ã§Ã£o complexos tenham de ser re­a­li­za­dos. ✗ Con­têi­ne­res dispõem de bem menos iso­la­mento que VMs. Portanto, vir­tu­a­li­zar con­têi­ne­res não é adequado à im­ple­men­ta­Ã§Ã£o de conceitos de segurança.

Vir­tu­a­li­za­ção de ar­ma­ze­na­mento

A vir­tu­a­li­za­ção de ar­ma­ze­na­mento (storage vir­tu­a­li­za­tion) mapeia e abstrai os vários recursos físicos de ar­ma­ze­na­mento uti­li­za­dos por uma empresa, como unidades de disco rígido, memórias flash e unidades de fita, para dis­po­ni­bi­lizá-los como um pool de ar­ma­ze­na­mento único, que tem a vantagem de poder ser ad­mi­nis­trado cen­tral­mente e de ser capaz de dis­tri­buir cotas e apli­ca­ções.

Apesar de passarem por um processo de vir­tu­a­li­za­ção, os dados vir­tu­a­li­za­dos por essa tec­no­lo­gia continuam podendo ser acessados pelos mesmos caminhos de arquivo, mesmo que o local do ar­ma­ze­na­mento físico seja even­tu­al­mente alterado. Isso ocorre jus­ta­mente por causa da ca­pa­ci­dade de ma­pe­a­mento e ge­ren­ci­a­mento de mídias dos softwares de vir­tu­a­li­za­ção de ar­ma­ze­na­mento, que contam com unidades lógicas, comumente chamadas de volumes.

Em contextos cor­po­ra­ti­vos, a vir­tu­a­li­za­ção de ar­ma­ze­na­mento costuma ser im­ple­men­tada com base em blocos. Em ar­ma­ze­na­mento em bloco, dados são divididos em blocos de igual tamanho. Cada bloco recebe um endereço exclusivo, que é ar­ma­ze­nado pelo software de vir­tu­a­li­za­ção na forma de uma tabela de ma­pe­a­mento central (mapping-table). Na prática, vir­tu­a­li­za­ções baseadas em blocos podem ser im­ple­men­ta­das tanto em hosts quanto em dis­po­si­ti­vos e redes.

A vir­tu­a­li­za­ção im­ple­men­tada em hosts ge­ral­mente é utilizada em conjunto com máquinas virtuais. Um sistema host apresenta recursos de ar­ma­ze­na­mento vir­tu­a­li­za­dos a um ou mais sistemas con­vi­da­dos (como ocorre na vir­tu­a­li­za­ção de hardware), criando uma camada de abstração. Já o hardware é acessado di­re­ta­mente pelos drivers de dis­po­si­tivo do sistema host.

Ainda, ao ser im­ple­men­tado em host, esse tipo de vir­tu­a­li­za­ção não requer um hardware adicional, além de ser com­pa­tí­vel com qualquer dis­po­si­tivo de ar­ma­ze­na­mento e poder ser con­fi­gu­rado com mínimos esforços. A tec­no­lo­gia também tem melhor de­sem­pe­nho que conceitos con­cor­ren­tes, pois ela consegue endereçar dis­po­si­ti­vos de ar­ma­ze­na­mento de forma direta, sem latência. Por outro lado, usuários que optam pela vir­tu­a­li­za­ção im­ple­men­tada em host devem estar cientes de que ela se limita ao próprio host, o que im­pos­si­bi­lita a oti­mi­za­ção da uti­li­za­ção do ar­ma­ze­na­mento.

Matrizes de disco (disk arrays), dis­po­si­ti­vos de ar­ma­ze­na­mento em massa que podem ser usados para dis­po­ni­bi­li­zar discos rígidos em uma rede, também são capazes de vir­tu­a­li­zar recursos de ar­ma­ze­na­mento. Contudo, elas im­ple­men­tam esse tipo de vir­tu­a­li­za­ção em dis­po­si­ti­vos por meio de esquemas RAID (redundant array of in­de­pen­dent disks). Nesse conceito de ar­ma­ze­na­mento de dados, várias unidades físicas são com­bi­na­das para que uma pla­ta­forma de ar­ma­ze­na­mento virtual seja formada.

Dica

Se você quer saber mais sobre matrizes de disco e esquemas RAID, acesse o nosso artigo es­pe­ci­a­li­zado sobre NAS (network attached storage).

Vir­tu­a­li­za­ções de ar­ma­ze­na­mento baseadas em dis­po­si­ti­vos também apre­sen­tam bons índices de de­sem­pe­nho, graças à baixa latência de E/S (entrada/saída) — além das matrizes de disco que devem ser co­nec­ta­das, outros com­po­nen­tes de hardware não se fazem ne­ces­sá­rios.

A vir­tu­a­li­za­ção de ar­ma­ze­na­mento im­ple­men­tada em rede é par­ti­cu­lar­mente adequada a situações em que recursos de ar­ma­ze­na­mento de sistemas he­te­ro­gê­neos devem ser com­bi­na­dos em um único pool de ar­ma­ze­na­mento virtual. Em contextos cor­po­ra­ti­vos, essa abordagem ge­ral­mente é im­ple­men­tada como parte de uma SAN (storage area network).

Vantagens Des­van­ta­gens
✓ Recursos físicos de ar­ma­ze­na­mento são uti­li­za­dos com mais efi­ci­Ãªn­cia. ✗ A vir­tu­a­li­za­Ã§Ã£o de ar­ma­ze­na­mento vem sempre associada a uma so­bre­carga, que resulta da ne­ces­si­dade de se gerar e processar metadados.
✓ Recursos de ar­ma­ze­na­mento físico com­bi­na­dos em uma unidade lógica podem ser ge­ren­ci­a­dos de forma cen­tra­li­zada. ✗ O pro­ces­sa­mento de so­li­ci­ta­Ã§Ãµes de E/S pode se tornar um gargalo em situações de intensa uti­li­za­Ã§Ã£o, tornando todo o sistema de ar­ma­ze­na­mento mais lento.

Vir­tu­a­li­za­ção de dados

A vir­tu­a­li­za­ção de dados combina várias tec­no­lo­gias de vir­tu­a­li­za­ção em um contexto de análise de data warehouse. Ela tem como objetivo fornecer, às apli­ca­ções, acesso a dados abs­traí­dos de condições físicas. Para tanto, a vir­tu­a­li­za­ção de dados cria uma cópia mestre, que nada mais é que uma imagem virtual de todo o banco de dados.

Pode-se afirmar, portanto, que a vir­tu­a­li­za­ção de dados é um conceito de in­te­gra­ção de in­for­ma­ções. Di­fe­ren­te­mente do processo de ETL (E xtract, T ransform, L oad), que é usado para integrar in­for­ma­ções extraindo dados de fontes com di­fe­ren­tes es­tru­tu­ras e pa­dro­ni­zando os formatos para serem ar­ma­ze­na­dos no banco de dados de destino, a vir­tu­a­li­za­ção de dados permite que dados de di­fe­ren­tes fontes sejam lidos e ma­ni­pu­la­dos sem que estes precisem ser fi­si­ca­mente movidos (eles per­ma­ne­cem nos locais de origem). Na vir­tu­a­li­za­ção de dados, dados são in­te­gra­dos somente em nível virtual, o que pos­si­bi­lita acessos em tempo real.

Vantagens e des­van­ta­gens da vir­tu­a­li­za­ção de dados:

Vantagens Des­van­ta­gens
✓ Reduz re­qui­si­tos de ar­ma­ze­na­mento em cópias de dados físicos. ✗ Di­fe­ren­te­mente da abordagem de data warehouse, a vir­tu­a­li­za­Ã§Ã£o de dados não é adequada para registrar e armazenar ins­tan­tâ­neos his­tó­ri­cos de um conjunto de dados.
✓ Extrações demoradas de dados (por exemplo, por ETL) não são ne­ces­sá­rias. ✗ Novas fontes de dados podem ser co­nec­ta­das por meio de fer­ra­men­tas de business in­tel­li­gence (BI) de au­to­a­ten­di­mento, mesmo por quem não tem co­nhe­ci­men­tos técnicos es­pe­cí­fi­cos.
✓ Dados vir­tu­a­li­za­dos podem ser pro­ces­sa­dos por di­fe­ren­tes fer­ra­men­tas de ge­ren­ci­a­mento de dados.

Vir­tu­a­li­za­ção de rede

A vir­tu­a­li­za­ção de rede adota di­fe­ren­tes abor­da­gens para que os recursos de uma rede possam ser abs­traí­dos de suas bases físicas, tanto em nível de hardware quanto em nível de software. Na maioria das vezes, esse tipo de vir­tu­a­li­za­ção é usado em contextos de conceitos de segurança, para dois objetivos prin­ci­pais:

  • Combinar recursos físicos de rede em uma unidade lógica, por um processo de vir­tu­a­li­za­ção.
  • Dividir recursos físicos de rede em várias unidades virtuais, por um processo de vir­tu­a­li­za­ção.

Um exemplo prático de vir­tu­a­li­za­ção de rede é a VPN (virtual private network), que nada mais é que uma rede virtual baseada em uma rede física. Na prática, VPNs são usadas para o es­ta­be­le­ci­mento de conexões seguras em linhas inseguras — por exemplo, para que um fun­ci­o­ná­rio externo acesse, pela internet, a rede privada da empresa onde trabalha.

Outro conhecido exemplo de vir­tu­a­li­za­ção de rede é a VLAN (virtual local area network): sub-rede virtual baseada em uma rede física de com­pu­ta­do­res.

O conceito de SDN (software-defined networ­king) permite que recursos de uma rede virtual sejam con­tro­la­dos de forma cen­tra­li­zada, sem que os com­po­nen­tes da rede física precisem ser acessados ma­nu­al­mente. Para tanto, ele dissocia o plano de controle virtual (control plane) do plano da rede física, res­pon­sá­vel por en­ca­mi­nhar pacotes de dados (data plane).

Vantagens e des­van­ta­gens da vir­tu­a­li­za­ção de rede:

Vantagens Des­van­ta­gens
✓ Economiza custos pela uti­li­za­Ã§Ã£o múltipla da in­fra­es­tru­tura da rede física. ✗ A operação de várias sub-redes virtuais por uma rede física exige com­po­nen­tes de hardware de alto de­sem­pe­nho.
✓ Recursos de rede podem ser ge­ren­ci­a­dos de forma cen­tra­li­zada, fa­cil­mente di­men­si­o­na­dos e alocados di­na­mi­ca­mente em nível virtual. ✗ Em alguns casos, ela exige uma in­fra­es­tru­tura de rede física re­dun­dante para garantir a fle­xi­bi­li­dade.
✓ A vir­tu­a­li­za­Ã§Ã£o de rede abarca várias abor­da­gens in­te­res­san­tes à im­ple­men­ta­Ã§Ã£o de conceitos de segurança em nível de rede e no lado do software, fazendo isso de forma mais econômica.
Ir para o menu principal