Entendendo a virtualização

Concluído

Os data centers de TI usam a virtualização para consolidar servidores dedicados em um hardware mais econômico usando-os como hosts para máquinas virtuais. Os provedores de serviço de nuvem também o usam para isolar os usuários que compartilham uma única camada de hardware ao particionar servidores físicos em máquinas virtuais. Por exemplo, quando você provisiona uma instância de EC2 na AWS, a Amazon provisiona uma máquina virtual em um servidor em um de seus data centers e começa a cronometrar seu uso para que possa cobrar no final do mês.

Vamos examinar os benefícios da virtualização e entender por que ela é tão importante para a computação em nuvem.

Como habilitar o modelo do sistema de computação em nuvem: um caso de uso importante para a virtualização é a computação em nuvem. Como você sabe, a computação em nuvem adota um modelo pelo qual o software, os recursos de computação e o armazenamento são oferecidos como serviços. Esses serviços incluem aplicativos completos, como o Google Docs (software como serviço ou SaaS), plataformas como o Serviço de Aplicativo do Azure para executar aplicativos (plataforma como serviço ou PaaS) e máquinas virtuais, como instâncias do Amazon EC2 (Infraestrutura como serviço ou IaaS). O provisionamento de uma VM envolve a criação de versões virtuais de cada componente do computador físico: CPU, memória, E/S e armazenamento, e é viabilizado por hipervisores, que dependem tanto de software quanto de firmware. Exemplos dos principais hipervisores incluem Xen, VMware e Hyper-V. O Amazon EC2 usa Xen para provisionar VMs para usuários. O Azure usa uma versão personalizada do Hyper-V conhecida como Hipervisor do Azure1.

Elasticidade: um grande benefício da nuvem é a elasticidade ou a capacidade de responder rapidamente às demandas dos usuários expandindo e contratando recursos dinamicamente. Esse benefício se aplica a todos os modelos de serviço de nuvem, ou seja, SaaS, PaaS e IaaS. Como mostra a Figura 4, a virtualização aprimora a elasticidade, permitindo que provedores e usuários aumentem ou diminuam dinamicamente os recursos de nuvem que estão sendo usados para uma tarefa. Por exemplo, o Google App Engine expande automaticamente os servidores durante os picos de demanda e os contrai quando a demanda diminui. O Amazon EC2 permite que os usuários expandam e contraiam clusters virtuais manual ou automaticamente, este último usando o dimensionamento automático da Amazon. O Azure faz o mesmo com Conjuntos de Dimensionamento de Máquinas Virtuais. Em suma, a virtualização é uma tecnologia fundamental para a elasticidade na nuvem, e o fato de que podemos criar e excluir VMs rapidamente é fundamental para a elasticidade.

Figure 4: Provisioning a VM on a physical system.

Figura 4: como provisionar uma VM em um sistema físico.

Área restrita: uma VM fornece uma área restrita que isola um ambiente de outros, garantindo um nível de segurança que pode não ser possível com sistemas operacionais comuns. Primeiro, um usuário que executa um aplicativo em um computador particular pode estar relutante em mover os aplicativos para a nuvem, a menos que você possa garantir que os aplicativos e as atividades dele não possam ser acessados nem monitorados por outros usuários de nuvem. A virtualização exerce um papel fundamental na garantia da segurança de cada usuário, tornando impossível para um usuário observar ou alterar os dados ou a atividade de outro usuário. Em segundo lugar, se um aplicativo em execução em uma VM falhar, ele não poderá afetar os aplicativos em execução em outras VMs, mesmo que as VMs estejam em execução no mesmo host. Essa propriedade é conhecida como independência de falha e aumenta a robustez do sistema. Em um ambiente não virtualizado, por outro lado, o comportamento irregular de um aplicativo pode desativar todo o sistema.

Como mostra a Figura 5, a área restrita também apresenta outras possibilidades interessantes. Uma VM específica pode ser usada como uma área restrita na qual os ataques de segurança, como ataques de negação de serviço ou pacotes mal-intencionados inseridos em fluxos de comunicação IP legítimos, podem ser permitidos e monitorados com segurança. Essa técnica permite que os pesquisadores inspecionem os efeitos desses ataques, descubram seus comportamentos específicos e os reproduzam para que possam criar defesas contra ataques futuros sem se preocupar em comprometer um servidor físico. Além disso, as equipes de segurança podem enviar pacotes de rede suspeitos ou entrada para uma VM de teste específica antes de os encaminharem à VM de destino para evitar qualquer possível efeito. Uma VM pode ser descartada após ter cumprido sua finalidade, ao mesmo tempo em que o reprovisionamento de um servidor físico é tanto caro quanto demorado.

Figure 5: Using virtual machines to isolate and analyze attacks.

Figura 5: como usar máquinas virtuais para isolar e analisar ataques.

Utilização aprimoradas do sistema e redução de custos e do consumo de energia: é bem conhecido que os recursos de hardware do computador geralmente são subutilizados. O conceito de compartilhamento de recurso foi aplicado com êxito aos sistemas operacionais multitarefa para aprimorar a utilização do sistema. Esse compartilhamento de recursos é baseado na abstração do processo, ou seja, o particionamento de aplicativos em execução em processos separados, cada um deles isolado de outros processos.

A virtualização leva isso um passo adiante, criando uma ilusão de um sistema completo em que várias VMs podem ser hospedadas ao mesmo tempo, cada uma executando a própria imagem do sistema operacional e os próprios aplicativos. Por exemplo, em serviços de nuvem como o Amazon EC2, sete ou mais VMs podem ser provisionadas em um único servidor, fornecendo utilização de recursos de aproximadamente 60% a 80%. Por outro lado, aproximadamente 5% a 10% de utilização de recursos é comum em data centers não virtualizados2. A virtualização permite consolidar servidores físicos em servidores virtuais executados em muitos servidores físicos, permitindo que várias VMs sejam hospedadas em um só servidor físico. Esse conceito é chamado de consolidação do servidor. A consolidação resulta em na utilização aprimorada do sistema e na redução de custos. As VMs também podem ser migradas de um servidor para outro para balancear cargas nos servidores dentro de um data center.

Outro benefício da fusão de servidores é o consumo de energia reduzido em data centers na nuvem. Os data centers que hospedam aplicativos em nuvem consomem enormes quantidades de energia, resultando em elevados custos operacionais e emissões de dióxido de carbono3. A fusão de servidores é uma maneira eficaz de melhorar a eficiência energética dos data centers, reduzindo o número de servidores físicos necessários. Um servidor físico utilizado 80% do tempo consome menos energia do que oito servidores utilizados 10% do tempo. Estudos mostram que a fusão do servidor pode economizar até 20% no consumo de energia do Data Center4, 5.

Reduzir o consumo de energia em data centers na nuvem é um importante desafio na computação em nuvem. Isso levou a inovações como colocar data centers debaixo d'água para utilizar fontes de energia verdes e reduzir os custos de resfriamento6,7. Até 40% da eletricidade de um data center típico vai para o sistema de resfriamento. (Milhares de servidores em execução geram muito calor.) Em 2012, o Google relatou ter economizado US$ 1 bilhão em custos de resfriamento aumentando a temperatura ambiente nos data centers de 68 para 80 graus Fahrenheit88.

Ambiente de sistema operacional misto: como mostra a Figura 6, uma só plataforma de hardware que hospeda máquinas virtuais pode dar suporte a vários sistemas operacionais simultaneamente. Essa capacidade proporciona uma enorme flexibilidade para os usuários, permitindo que eles instalem os próprios sistemas operacionais, bibliotecas e aplicativos. Por exemplo, um usuário pode instalar um sistema operacional para software do Office e outro para desenvolvimento e teste de aplicativos, tudo em um único computador desktop ou na nuvem.

Figure 6: Mixed-OS environment offered by system virtualization.

Figura 6: ambiente de sistema operacional misto oferecido pela virtualização do sistema.

Como facilitar a pesquisa: a execução de um sistema operacional em uma VM permite que o hipervisor instrumente o acesso a recursos de hardware e conte tipos de eventos específicos, como falhas de página. Rastreamentos de execução e despejos de estado de computador em vários pontos de interesse podem ser obtidos no nível da VM. Isso simplesmente não pode ser feito em sistemas nativos. Por fim, a execução do sistema pode ser repetida em VMs do estado salvo para analisar o comportamento do sistema em vários cenários. O estado completo de uma VM pode ser salvo, clonado, criptografado, movido e restaurado, ações que não são tão fáceis de executar com computadores físicos9. Não surpreendentemente, agora é comum que os pesquisadores do sistema operacional realizem a maioria de seus experimentos usando VMs, em vez de plataformas de hardware nativas10.

Teste de software: A virtualização desempenha um papel no desenvolvimento de software, proporcionando aos engenheiros uma maneira de testar o software em um ambiente que seja previsível, replicável, isolado e independente de plataforma.

  • Independente de plataforma: Com as máquinas virtuais, você pode testar o software escrito para Linux em um computador Windows hospedando o Linux em uma VM.
  • Isolado: Se o software falhar, ele não poderá danificar o sistema subjacente
  • Replicável: A VM pode ser rapidamente excluída e iniciada novamente
  • Previsível: Após a reinicialização, a VM está no mesmo estado em que estava na última inicialização e é executada de forma idêntica em cada computador

Referências

  1. Microsoft (2019). Princípios de design por trás do hipervisor do Windows Azure.

  2. Michelle Bailey (2009). "A economia da virtualização: movendo-se em direção a um modelo de custo baseado em aplicativo". Whitepaper patrocinado pela VMware.

  3. a. Beloglazov and R. Buyya (2010). "Alocação eficiente de energia de máquinas virtuais em data centers da nuvem." CCGrid.

  4. Silicon Valley Leadership Group (2008). "Accenture, Relatório de Previsão de Energia do Data Centre." Relatório técnico.

  5. Y. Jin, Y. Wen, and Q. Chen (2012). "Eficiência de energia e virtualização de servidor em data centers: uma investigação empírica". Workshops de comunicações de computador (INFOCOM WKSHPS).

  6. Microsoft (2018). No fundo do mar, a Microsoft testa um datacenter rápido de implantar e que pode fornecer interconectividade da Internet por anos. https://news.microsoft.com/features/under-the-sea-microsoft-tests-a-datacenter-thats-quick-to-deploy-could-provide-internet-connectivity-for-years/.

  7. Microsoft (2016). Projeto de pesquisa da Microsoft coloca a nuvem no oceano pela primeira vez. https://news.microsoft.com/features/microsoft-research-project-puts-cloud-in-ocean-for-the-first-time/.

  8. AirPac (2012). Como o Google economizou 1 bilhão de dólares em custos de resfriamento de data center. https://www.airpacinc.com/blog/bid/83313/How-Google-Saved-1-Billion-Dollars-in-Data-Center-Cooling-Costs.

  9. Chen and Noble (2001). "Quando o virtual é melhor do que o real." IEEE Computer Society, Washington, DC, EUA

  10. JE Smith and Nair (2005). "Máquinas virtuais: plataformas versáteis para sistemas e processos." Morgan Kaufmann.

Verificar seu conhecimento

1.

Qual das alternativas a seguir não é uma das maneiras pelas quais a computação em nuvem se beneficia da virtualização?

2.

Qual das opções a seguir é um exemplo de elasticidade?

3.

Pedro baixou inadvertidamente um código mal-intencionado. Esse código pretende desligar o computador em que ele está sendo executado. Executar esse código em uma máquina virtual afetará qual das alternativas a seguir?