Solaris Containers - Solaris Containers

Solaris Zones
Autor (es) original (is) Sun Microsystems
Desenvolvedor (s) Illumos e Oracle
lançamento inicial Janeiro de 2005 ( Janeiro de 2005 )
Escrito em C
Sistema operacional Oracle Solaris
Plataforma SPARC , x86
Disponível em inglês
Modelo Virtualização de nível de sistema operacional
Licença CDDL , proprietário
Local na rede Internet oracle .com / solaris

Solaris Containers (incluindo Solaris Zones ) é uma implementação de tecnologia de virtualização em nível de sistema operacional para sistemas x86 e SPARC, lançada publicamente pela primeira vez em fevereiro de 2004 na versão 51 beta do Solaris 10 e, subsequentemente, na primeira versão completa do Solaris 10, 2005. Está presente em distribuições illumos (anteriormente OpenSolaris ), como OpenIndiana , SmartOS , Tribblix e OmniOS, bem como na versão oficial Oracle Solaris 11.

Um contêiner Solaris é a combinação de controles de recursos do sistema e a separação de limites fornecida por zonas . As zonas atuam como servidores virtuais completamente isolados em uma única instância do sistema operacional. Consolidando vários conjuntos de serviços de aplicativo em um sistema e colocando cada um em contêineres de servidor virtual isolados, os administradores de sistema podem reduzir custos e fornecer a maioria das mesmas proteções de máquinas separadas em uma única máquina.

Terminologia

O nome dessa tecnologia mudou durante o desenvolvimento e os eventos públicos de pré-lançamento. Antes do lançamento do Solaris Zones em 2005, um contêiner Solaris era qualquer tipo de carga de trabalho restrito pelos recursos de gerenciamento de recursos do Solaris. Este último foi um pacote de software separado na história anterior. Em 2007, o termo Solaris Containers passou a significar uma Zona Solaris combinada com controles de gerenciamento de recursos.

Posteriormente, houve uma mudança gradual, de modo que os Solaris Containers se referiram especificamente a regiões não globais, com ou sem gerenciamento de recursos adicional. As zonas hospedadas por uma zona global são conhecidas como "zonas não globais", mas às vezes são chamadas apenas de "zonas". O termo "zona local" é especificamente desencorajado, uma vez que neste uso "local" não é um antônimo de "global". A região global tem visibilidade de todos os recursos do sistema, estejam eles associados à região global ou a uma região não global. Salvo indicação em contrário, "zona" se referirá a zonas não globais neste artigo.

Para simplificar a terminologia, a Oracle abandonou o uso do termo Container no Solaris 11 e voltou a usar o termo Solaris Zone independentemente do uso de controles de gerenciamento de recursos.

Descrição

Cada zona tem seu próprio nome de nó, acesso a interfaces de rede virtuais ou físicas e armazenamento atribuído a ela; não há nenhum requisito para que uma região tenha qualquer quantidade mínima de hardware dedicado além do armazenamento em disco necessário para sua configuração exclusiva. Especificamente, ele não requer uma CPU dedicada, memória, interface de rede física ou HBA , embora qualquer um deles possa ser alocado especificamente para uma zona.

Cada zona tem um limite de segurança ao seu redor, o que evita que um processo associado a uma zona interaja com ou observe processos em outras zonas. Cada zona pode ser configurada com sua própria lista de usuários separada. O sistema gerencia automaticamente os conflitos de ID do usuário; ou seja, duas zonas em um sistema poderiam ter um ID de usuário 10000 definido e cada uma seria mapeada para seu próprio identificador global exclusivo.

Uma zona pode estar em um dos seguintes estados:

  • Configurado: a configuração foi concluída e confirmada.
  • Incompleto: estado de transição durante a operação de instalação ou desinstalação.
  • Instalado: os pacotes foram instalados com sucesso.
  • Pronto: A plataforma virtual foi estabelecida.
  • Em execução: a região foi inicializada com êxito e agora está em execução.
  • Desligando: a zona está em processo de desligamento - este é um estado temporário, levando ao " Desligamento ".
  • Inativo: A zona concluiu o processo de encerramento e está inativo - este é um estado temporário, levando a "Instalado".

Alguns programas não podem ser executados em uma região não global; normalmente, isso ocorre porque o aplicativo requer privilégios que não podem ser concedidos em um contêiner. Como uma zona não tem seu próprio kernel separado (em contraste com uma máquina virtual de hardware ), os aplicativos que requerem manipulação direta dos recursos do kernel, como a capacidade de ler diretamente ou alterar o espaço da memória do kernel, podem não funcionar dentro de um contêiner.

Recursos necessários

As zonas induzem uma sobrecarga muito baixa na CPU e na memória. A maioria dos tipos de zonas compartilham o espaço de endereço virtual da zona global. Uma zona pode ser atribuída a um pool de recursos (conjunto de processadores mais classe de agendamento) para garantir certo uso, ou pode ser limitada a uma capacidade de computação fixa ("CPU limitada") ou pode receber compartilhamentos por meio de agendamento de compartilhamento justo .

Atualmente, no máximo 8.191 zonas não globais podem ser criadas em uma única instância do sistema operacional. As "zonas esparsas", nas quais a maior parte do conteúdo do sistema de arquivos é compartilhado com a zona global, podem ocupar até 50 MB de espaço em disco. "Whole Root Zones", em que cada zona tem sua própria cópia de seus arquivos de sistema operacional, pode ocupar de várias centenas de megabytes a vários gigabytes, dependendo do software instalado. Os limites de 8191 surgem do limite de 8.192 conexões de loopback por instância do Solaris. Cada zona precisa de uma conexão de loopback. A zona global recebe um, deixando 8.191 para as zonas não globais.

Mesmo com zonas de raiz inteiras, os requisitos de espaço em disco podem ser insignificantes se o sistema de arquivos do SO da região for um clone ZFS da imagem da zona global, uma vez que apenas os blocos diferentes de uma imagem de instantâneo precisam ser armazenados no disco; este método também possibilita a criação de novas zonas em poucos segundos.

Zonas de marca

Embora todas as zonas no sistema compartilhem um kernel comum, um conjunto de recursos adicionais foi adicionado, chamado de zonas com marca ( BrandZ para abreviar). Isso permite que zonas individuais se comportem de maneira diferente da marca padrão da zona global. As marcas existentes (outubro de 2009) podem ser agrupadas em duas categorias:

  • Marcas que não realizam tradução de chamada de sistema:
  • Marcas que realizam tradução de chamada de sistema:
    • 'solaris8' fornece um ambiente Solaris 8 em um sistema Solaris 10, incluindo tradução de chamadas de sistema Solaris 8 para chamadas de sistema Solaris 10 (disponível apenas em sistemas SPARC )
    • 'solaris9' fornece um ambiente Solaris 9 em um sistema Solaris 10, incluindo tradução de chamadas de sistema Solaris 9 para chamadas de sistema Solaris 10 (disponível apenas em sistemas SPARC)
    • 'lx' fornece um ambiente Red Hat Enterprise Linux 3 em um sistema Solaris 10, incluindo a tradução de chamadas de sistema RHEL 3 para chamadas de sistema Solaris 10 (disponível apenas em sistemas x86). No SmartOS, as zonas da marca lx podem fornecer um tempo de execução para a maioria das distribuições Linux modernas, incluindo Ubuntu, Debian, CentOS, Alpine e outras. O suporte LX não foi atualizado para o Illumos.
    • 's10brand' fornece um ambiente Solaris 10 em um sistema OpenSolaris ou Oracle Solaris 11, incluindo tradução de chamadas de sistema Solaris 10 para chamadas de sistema OpenSolaris / Oracle Solaris 11
    • 'solaris-kz' fornece uma instância separada do Solaris 11.2 ou mais recente, com seu próprio kernel e pacotes independentes, em um sistema Oracle Solaris 11.2 ou mais recente. Este recurso foi disponibilizado publicamente pela primeira vez no Solaris 11.2 Beta (download público).

A marca de uma zona é definida no momento em que a zona é criada. A segunda categoria é implementada com pontos de interposição dentro do kernel do sistema operacional que podem ser usados ​​para alterar o comportamento de syscalls , carregamento de processo , criação de thread e outros elementos.

Para a marca 'lx', as bibliotecas do Red Hat 3 ou uma distribuição equivalente, como CentOS, são necessárias para completar o ambiente emulado.

Documentação

O sistema operacional Solaris fornece páginas de manual para Solaris Containers por padrão; documentação mais detalhada pode ser encontrada em vários recursos técnicos on-line.

O primeiro documento publicado e referência prática para Solaris Zones foi escrito em fevereiro de 2004 por Dennis Clarke na Blastwave, fornecendo o essencial para começar. Este documento foi amplamente expandido por Brendan Gregg em julho de 2005. Os contêineres Solaris 8 e Solaris 9 foram documentados em detalhes por Dennis Clarke no Blastwave novamente em abril de 2008. O documento dos contêineres Blastwave Solaris 8 e Solaris 9 estava bem no início do ciclo de lançamento da tecnologia Solaris Containers e as ações e implementação na Blastwave resultaram em um acompanhamento do marketing da Sun Microsystems. O livro Oracle Solaris 10 System Virtualization Essentials escrito por Jeff Victor, et al., Oferece detalhes de recursos e práticas recomendadas. Uma documentação mais extensa pode ser encontrada no site de documentação da Oracle.

Problemas de implementação

A partir do Solaris 10 10/08, as zonas de marca são suportadas na arquitetura sun4us (servidores Fujitsu PRIMEPOWER) por meio dos pacotes FJSVs8brandr e FJSVs9brandr.

Veja também

Referências

links externos