O que é um contêiner Linux e um hypervisor Linux?

10

Eu olhei para o site stackexchange, mas não consegui encontrar nada. Examinei a entrada da wikipedia no contêiner Linux https://en.wikipedia.org/wiki/LXC e também o hypervisor https://en.wikipedia.org/wiki/Hypervisor, mas a explicação para ambos está além de uma pessoa que não trabalhou em qualquer um vai entender. Eu também vi http://www.linux.com/news/enterprise/cloud-computing/785769-containers-vs-hypervisors-the-battle-has-just-begun, mas isso também não explica.

Eu brinquei com VMs como o virtualbox. Uma das idéias iniciais para o meu entendimento limitado pode ter sido para as Máquinas Virtuais talvez testarem o software em um ambiente sandbox (ter uma caixa Solaris quando você não pode comprar / se dar ao luxo de ter a máquina e ainda tem alguma idéia de como o software que você está desenvolvendo para esse hardware de destino está funcionando.) Embora limitado, ele usa. Esta é provavelmente uma das maneiras pelas quais também deu o salto na computação em nuvem. As perguntas são amplas, então é assim que eu destilo -

Algumas pessoas podem explicar o que é um hypervisor e um contêiner * nix (com analogias, se possível.)?
Um hipervisor * nix é o mesmo que máquina virtual ou existe alguma diferença?

shirish
fonte

Respostas:

9

Uma máquina virtual (VM) é um termo bastante genérico para muitas tecnologias de virtualização.

Existem muitas variações nas tecnologias de virtualização, mas as principais são:

  • Virtualização em nível de hardware
  • Virtualização em nível de sistema operacional

qemu-kvme VMWaresão exemplos do primeiro. Eles empregam um hipervisor para gerenciar os ambientes virtuais nos quais um sistema operacional completo é executado. Por exemplo, em um qemu-kvmsistema, você pode ter uma VM executando o FreeBSD, outra executando o Windows e outra executando o Linux.

As máquinas virtuais criadas por essas tecnologias se comportam como computadores individuais isolados para o convidado. Estes possuem uma CPU virtual, RAM, NIC, gráficos, etc. que o hóspede acredita serem o artigo original. Por esse motivo, muitos sistemas operacionais diferentes podem ser instalados nas VMs e eles funcionam "prontos para uso" sem nenhuma modificação necessária.

Embora isso seja muito conveniente, como muitos sistemas operacionais serão instalados sem muito esforço, há uma desvantagem em que o hipervisor precisa simular todo o hardware, o que pode atrasar as coisas. Uma alternativa é o hardware para-virtualizado, no qual um novo dispositivo e driver virtual são desenvolvidos para o convidado, projetado para desempenho em um ambiente virtual. qemu-kvmforneça a virtiovariedade de dispositivos e drivers para isso. Uma desvantagem disso é que o sistema operacional convidado deve ser suportado; mas, se suportado, os benefícios de desempenho são ótimos.


lxcé um exemplo de virtualização no nível do sistema operacional ou contêineres. Sob esse sistema, existe apenas um kernel instalado - o kernel host. Cada contêiner é simplesmente um isolamento dos processos da terra do usuário. Por exemplo, um servidor web (por exemplo apache) é instalado em um contêiner. No que diz respeito ao servidor web, o único servidor instalado é ele próprio. Outro contêiner pode estar executando um servidor FTP. Esse servidor FTP não está ciente da instalação do servidor da Web - apenas ela é sua. Outro contêiner pode conter a instalação completa do usuário de uma distribuição Linux (desde que essa distribuição seja capaz de executar com o kernel do sistema host).

No entanto, não há instalações separadas do sistema operacional ao usar contêineres - apenas instâncias isoladas de serviços da terra do usuário. Por esse motivo, você não pode instalar plataformas diferentes em um contêiner - sem Windows no Linux.

Os contêineres geralmente são criados usando a chroot. Isso cria uma raiz privada separada ( /) para um processo para trabalhar. Ao criar muitas raízes privadas individuais, os processos (servidores da Web ou uma distribuição Linux, etc) são executados em seu próprio sistema de arquivos isolado. Técnicas mais avançadas, como cgroupspodem isolar outros recursos, como rede e RAM.


Existem prós e contras em ambos e muitos debates de longa duração sobre qual é o melhor.

  • Os contêineres são mais leves, pois um sistema operacional completo não está instalado para cada um; qual é o caso dos hipervisores. Portanto, eles podem ser executados em hardware com especificações mais baixas. No entanto, eles podem executar apenas convidados Linux (em hosts Linux). Além disso, como eles compartilham o kernel, existe a possibilidade de que um contêiner comprometido possa afetar outro.
  • Os hipervisores são mais seguros e podem executar diferentes sistemas operacionais porque um sistema operacional completo está instalado em cada VM e os convidados não conhecem outras VMs. No entanto, isso utiliza mais recursos no host, o que deve ser relativamente poderoso.
garethTheRed
fonte
2

Um contêiner é um pouco como um ambiente chroot, exceto que alcança um isolamento mais completo do espaço do usuário. Ele não fornece uma VM real, mas um sistema operacional virtual. As VMs criam a ilusão de várias máquinas, em cada uma das quais um sistema operacional completo e real pode ser executado como se fosse um bare metal. "Sistema operacional completo" aqui inclui um kernel. Algumas VMs (por exemplo, QEMU ) até estimulam diferentes tipos de arquiteturas "bare metal".

Em vez disso, os contêineres criam a ilusão de vários kernels, cada um executando uma área de usuário completa. Você pode, por exemplo, executar o Debian em um contêiner e o Arch em outro, para que a perspectiva de dentro do contêiner seja a mesma de uma VM. No entanto, você só pode executar uma terra de usuário do SO compatível com um kernel real, neste caso, Linux. Isso é diferente das VMs reais, onde você pode executar um kernel independente e, portanto, qualquer tipo de sistema operacional.

Portanto, as VMs verdadeiras são mais caras, em termos de recursos, do que os contêineres; se você não precisar de kernels diferentes em cada VM, poderá usar um contêiner.

Existem outros sistemas de virtualização que fazem algo semelhante ao LXE, como o openVZ , amplamente utilizado pelos fornecedores de VPS. Um VPS do openVZ é uma terra de usuário independente que usa o kernel do seu sistema operacional host. É por isso que esses VPSs têm vários sabores do Linux, mas nada mais; eles devem ser compatíveis com o kernel host.

A virtualização no estilo OpenVZ e LXC é chamada de virtualização no nível do sistema operacional .

Um hypervisor é um sistema que gerencia máquinas virtuais, como VirtualBox , QEMU ou Xen . Alguns hipervisores, como o Xen, são executados no bare metal e não exigem um SO host (embora possam exigir que um SO hospedado sirva como interface de controle). Outros, como VirtualBox e QEMU, executam dentro de um sistema operacional host. Alguns, como o QEMU, permitem simular diferentes arquiteturas de máquinas; outros, como o VirtualBox, não o fazem (ou seja, a arquitetura da VM é sempre a mesma do host real). A simulação de uma arquitetura requer mais recursos, assim como as VMs reais exigem mais recursos que os contêineres.

A virtualização no estilo hipervisor é chamada de virtualização no nível da plataforma .

Cachinhos Dourados
fonte