Explique em Inglês Simples o que é o LXC e para o que é útil [fechado]

9
  • O que é o LXC?
  • Para o que é útil?
  • Quais são as diferenças entre o LXC e a virtualização comum?
por Daniel Cukier 27.07.2011 / 21:59

3 respostas

23

Se por "Plain English" você quer dizer pessoas não técnicas, a diferença não pode ser explicada facilmente. Esse cabelo é muito bom para dividir sem uma consideração muito cuidadosa.

Se por "Inglês Simples" você quer dizer tipos de gerência que falam com pessoas técnicas e, portanto, têm pelo menos uma compreensão passageira de tópicos técnicos, eu envio o seguinte verbage:

É uma forma diferente de virtualização.

Se você olhar para o VMWare ESXi, é um hipervisor completo que executa o que é chamado de virtualização completa. Há uma camada muito pequena entre os sistemas virtualizados em execução no topo do hardware. Há virtualização de hardware completa, em que o sistema operacional em execução na máquina virtual é totalmente independente do próprio hypervisor e é apresentado com todo o hardware esperado.

Dê outro passo, e olhe para algo como VMWare Player, Workstation, ESX (não ESXi) ou VMWare Server, e você tem um sistema operacional completo fornecendo a função de hipervisor. No entanto, as máquinas virtuais ainda são apresentadas com um conjunto completo de hardware virtual.

Outra abordagem é a para-virtualização, que Xen seguiu por algum tempo. Nesta forma de virtualização, o sistema operacional convidado está ciente de que é virtualizado e foi modificado para funcionar nesse ambiente. Às vezes, tudo isso precisa de drivers especiais de para-virtualização. Outras vezes, são necessárias mudanças definitivas no kernel.

O LXC, ou Linux Containers, é mais um passo adiante. Neste caso, ele está executando várias instâncias de exatamente o mesmo sistema operacional . O kernel pode ser o mesmo, mas vários userpaces estão sendo executados para cada contêiner do sistema operacional. Cada contêiner pode ou não ter um sistema de arquivos diferente.

Os contêineres oferecem uma maneira de fornecer uma strong separação de segurança entre processos de uma maneira que não está disponível em sistemas que tenham o mesmo espaço de usuário. Sistemas operacionais parecidos com Unix tiveram o 'chroot jail' por algum tempo, mas não fornecem separação de processos ou uma capacidade de limitar os recursos consumidos pelos processos na cadeia. Contendo esses processos, o uso de recursos pode ser limitado, endereços IP discretos podem ser atribuídos a eles e vulnerabilidades de segurança que exploram o espaço do usuário estão contidas no restante do sistema.

Onde você usaria o LXC versus algum outro tipo de virtualização? Depende, mas o LXC deve fornecer menos penalidade de virtualização do que qualquer outro método de vitualização, pois é o mesmo kernel mediando todas as chamadas do espaço do usuário, em vez de um hipervisor fingindo ser hardware para um monte de imagens do sistema operacional esperando falar ao hardware físico. Então, se você tem um monte de processamento que precisa da mesma versão do sistema operacional e pode ser reinicializado ao mesmo tempo para atualizações, o LXC pode fornecer uma maneira barata de executar tudo isso com segurança e com gerenciamento de recursos.

    
por 27.07.2011 / 22:26
5

O LXC é um meio de isolar sistemas / processos no kernel. O sistema está bloqueado em um "contêiner" para que não possa interagir com nada fora desse contêiner. Assim, o nome Linux Containers.

Pode ser útil para muitas coisas, uma das quais seria isolar os serviços em execução em uma máquina. Se um desses serviços for comprometido, o próprio sistema host (juntamente com os outros serviços executados em seus próprios LXCs) não será afetado. Pode até ser usado como um meio idiota de dar a cada usuário acesso root ao seu próprio sistema, sem se preocupar com a interação entre eles.

A maioria das outras virtualizações "comuns" impõe uma grande sobrecarga de uso de recursos devido à necessidade de emular dispositivos de hardware. O LXC não exige nenhum tipo de emulação para dispositivos de hardware, pois cada LXC recebe acesso limitado / sem acesso direto ao hardware. Cada sistema está "executando" no host, mas não pode afetar nada fora de seu contêiner. Esse tipo de virtualização foi chamado de virtualização no nível do sistema operacional (google it). O que essencialmente significa pouca ou nenhuma sobrecarga para executar um contêiner Linux. Assim, você pode ter centenas de LXCs em uma determinada máquina, mas você ficaria sem recursos rapidamente usando um software de máquina virtual "comum".

Na verdade, estou mais familiarizado com o Linux-Vserver , mas a teoria é praticamente a mesma.

    
por 27.07.2011 / 22:39
3

A maneira mais simples de entender é aprender o que o chroot faz. O chroot permite que você "faça o login" em uma pasta de um sistema similar ao unix, como se fosse o sistema completo por si só. Em outras palavras:

se você tiver:

 /
   /boot
   /etc
   /home
   ...

, etc, então você pode adicionar um diretório some_new_install:

 /
   /some_new_install
      /boot
      /etc
      /home
      /usr
      ...
   /boot
   /etc
   /home
   /usr
      ...

e faça o login em / some_new_install. Então / some_new_install / etc é o novo / etc, por exemplo, e o original / etc está oculto e (principalmente) inacessível. / usr / bin pode ser diferente do original, com programas diferentes. O MySQL pode ser o mesmo programa em / usr / bin / mysql, mas com dados diferentes em / var / lib / mysql.

O sistema de arquivos foi virtualizado; você dividiu seu sistema de arquivos original, compartilhando seus recursos, isolando esses recursos de outros recursos virtualizados.

Isso é ótimo. Ao invés de rodar uma nova cópia virtual do unix, para rodar um programa extra, você pode entrar em um sistema de arquivos virtual e executá-lo no mesmo kernel, nas mesmas bibliotecas (se você usava links simbólicos), etc. É MUITO mais eficiente que algo como o Xen, ou o VirtualBox.

O problema é que, se um desses programas, digamos, MySQL, enlouquecer e começar a usar todo o seu processador e trocar em disco, ele ainda afetará o resto da máquina, porque apenas o sistema de arquivos foi virtualizado, não a CPU ou o desempenho do disco subjacente. Os endereços IP e as portas não são virtualizados, portanto, se dois programas enviarem informações na rede, eles farão isso a partir dos mesmos IPs, possivelmente causando conflitos. Da mesma forma, se duas cópias do mysql tentarem escutar em uma porta, a segunda falhará, porque a porta está em uso.

O LXC resolve isso virtualizando não apenas o sistema de arquivos, mas também os ips / ports / interfaces da rede, a CPU, o uso da memória, etc.

O LXC não é tão seguro quanto máquinas virtuais completas, mas geralmente é a solução superior. Afinal, os sistemas operacionais têm tudo a ver com o compartilhamento seguro de recursos. Na maioria das vezes, é ridículo executar vários sistemas operacionais para fazer isso - só precisamos de um sistema operacional melhor com melhor isolamento. É isso que o LXC e ferramentas similares fornecem.

    
por 01.06.2013 / 17:06