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

10

Eu olhei para o site do stackexchange mas não consegui encontrar nada. Eu olhei para a entrada wikipedia no link do contêiner do Linux e, assim como hypervisor link mas a explicação para ambos está além de uma pessoa que não trabalhou em um ou outro vai entender. Também vi o link mas isso também não explica.

Eu joguei com VMs, como o VirtualBox. Uma das ideias iniciais para meu entendimento limitado pode ter sido para Máquinas Virtuais talvez testar software em um ambiente de sandbox (ter uma caixa Solaris quando você não pode comprar / ter a máquina e ainda ter alguma idéia de como o software que você está desenvolvendo) porque o hardware alvo está funcionando.) Apesar de limitado, ele usa. Esta é provavelmente uma das formas de fazer o salto na computação em nuvem também. 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 uma máquina virtual ou existe alguma diferença?

    
por shirish 06.11.2014 / 15:05

2 respostas

9

Uma Máquina Virtual (VM) é um termo 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 no nível do sistema operacional

qemu-kvm e VMWare são exemplos do primeiro. Eles empregam um hipervisor para gerenciar os ambientes virtuais nos quais um sistema operacional completo é executado. Por exemplo, em um sistema qemu-kvm , 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 têm uma CPU virtual, RAM, NIC, gráficos, etc, que o convidado acredita ser o artigo genuíno. Devido a isso, muitos sistemas operacionais diferentes podem ser instalados nas VMs e eles funcionam "fora da caixa" sem necessidade de modificação.

Embora isso seja muito conveniente, em que muitos SOs 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 é desenvolvido para o convidado, projetado para desempenho em um ambiente virtual. qemu-kvm fornece o intervalo virtio 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 este sistema, existe apenas um kernel instalado - o kernel do host. Cada contêiner é simplesmente um isolamento dos processos do usuário. Por exemplo, um servidor da 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 ele é próprio. Outro container pode conter toda a instalação userland de uma distribuição Linux (contanto que essa distro seja capaz de rodar 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 de usuários. Por causa disso, não é possível instalar plataformas diferentes em um contêiner - não há Windows no Linux.

Geralmente, os contêineres são criados usando 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 do Linux, etc.) são executados em seu próprio sistema de arquivos isolado. Técnicas mais avançadas, como cgroups , podem isolar outros recursos, como rede e RAM.

Há prós e contras em ambos e em 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 deles. que é o caso de hipervisores. Eles podem, portanto, ser executados em hardware de especificação inferior. No entanto, eles só podem executar convidados do Linux (em hosts Linux). Além disso, como compartilham o kernel, existe a possibilidade de que um contêiner comprometido possa afetar outro.
  • Os hipervisores são mais seguros e podem executar sistemas operacionais diferentes porque um SO completo é instalado em cada VM e os convidados não estão cientes de outras VMs. No entanto, isso utiliza mais recursos no host, que deve ser relativamente poderoso.
por 06.11.2014 / 16:25
2

Um contêiner é um pouco como um ambiente chroot , exceto que ele consegue 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 delas um sistema operacional real e completo pode ser executado como se fosse em metal puro. "Complete operating system" aqui inclui um kernel. Algumas VMs (por exemplo, QEMU ) permitem até mesmo estimular diferentes tipos de arquiteturas "bare-metal".

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

Assim, as VMs verdadeiras são mais caras, em termos de recursos, do que os contêineres; se você não precisa de kernels diferentes em cada VM, é melhor usar um container.

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

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

Um hypervisor é o 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 sistema operacional host (embora possam exigir que um SO hospedado sirva como uma interface de controle). Outros, como o VirtualBox e o QEMU, são executados dentro de um sistema operacional host. Alguns, como o QEMU, permitem simular diferentes arquiteturas de máquinas; outros, como o VirtualBox, não (ou seja, a arquitetura da VM é sempre a mesma que o host real). A simulação de uma arquitetura requer mais recursos, assim como as VMs reais exigem mais recursos do que contêineres.

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

    
por 06.11.2014 / 16:10