Namespace

314 visualizações

Publicada em

A brief resume about namespaces implementation.
Um breve resumo sobre implementação de namespaces

Publicada em: Tecnologia
0 comentários
0 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Sem downloads
Visualizações
Visualizações totais
314
No SlideShare
0
A partir de incorporações
0
Número de incorporações
145
Ações
Compartilhamentos
0
Downloads
2
Comentários
0
Gostaram
0
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Namespace

  1. 1. Introdu¸c˜ao Implementa¸c˜ao Namespace Lu´ıs Eduardo lets@cin.ufpe.br Universidade Federal de Pernambuco Agosto 2015
  2. 2. Introdu¸c˜ao Implementa¸c˜ao Summary I 1 Introdu¸c˜ao 2 Implementa¸c˜ao Estrutura de dados Clone Flags System Calls
  3. 3. Introdu¸c˜ao Implementa¸c˜ao Introdu¸c˜ao a Limita o escopo do Kernel a nomes e a estruturas de dados utilizados gradualmente por processos para prover isola¸c˜ao. Observa¸c˜ao Existem 10 namespaces definidos (por´em apenas 6 implementados) Mount (mnt) Process ID (pid) Network (net) Interprocess Call (ipc) Unix Timesharing System (uts) User (user) security* security key* device*
  4. 4. Introdu¸c˜ao Implementa¸c˜ao Introdu¸c˜ao Implementado para oferecer maneiras de isolar processos
  5. 5. Introdu¸c˜ao Implementa¸c˜ao Introdu¸c˜ao Implementado para oferecer maneiras de isolar processos Permite inserir checkpoint/restore (C/R), importante para sistemas que s˜ao executados em ambientes HPC
  6. 6. Introdu¸c˜ao Implementa¸c˜ao Introdu¸c˜ao Implementado para oferecer maneiras de isolar processos Permite inserir checkpoint/restore (C/R), importante para sistemas que s˜ao executados em ambientes HPC Permite integrar live-migration
  7. 7. Introdu¸c˜ao Implementa¸c˜ao Introdu¸c˜ao Implementado para oferecer maneiras de isolar processos Permite inserir checkpoint/restore (C/R), importante para sistemas que s˜ao executados em ambientes HPC Permite integrar live-migration Utilizado em projetos como containers (LXC, OpenVZ, etc), CRIU.
  8. 8. Introdu¸c˜ao Implementa¸c˜ao Implementa¸c˜ao Mount namespaces foi o primeiro namespace a ser implementado, em 2002 no kernel 2.4.19 User namespace foi o ´ultimo namespace a ser implementado e tornou-se dispon´ıvel junto com os outros tipos no kernel 3.8 Observa¸c˜ao Exceto o User namespace, todos precisam da capacidade (capability) CAP SYS ADMIN
  9. 9. Introdu¸c˜ao Implementa¸c˜ao Summary 1 Introdu¸c˜ao 2 Implementa¸c˜ao Estrutura de dados Clone Flags System Calls
  10. 10. Introdu¸c˜ao Implementa¸c˜ao Estrutura de dados Implementa¸c˜ao da estrutura nsproxy no include/linux/nsproxy.h
  11. 11. Introdu¸c˜ao Implementa¸c˜ao Estrutura de dados a Todas as estruturas de nsproxy possuem um objeto user ns User namespace ´e membro da estrutura de credenciamento (cred) cred representa o contexto de seguran¸ca de um processo O objeto nsproxy ´e criado atrav´es do m´etodo create nsproxy() nsproxy ´e liberado atrav´es do m´etodo free nsproxy() O descritor de processo (task struct) possui um ponteiro para nsproxy
  12. 12. Introdu¸c˜ao Implementa¸c˜ao Summary 1 Introdu¸c˜ao 2 Implementa¸c˜ao Estrutura de dados Clone Flags System Calls
  13. 13. Introdu¸c˜ao Implementa¸c˜ao Clone Flags O que s˜ao Flags utilizadas para suportar a cria¸c˜ao de namespaces (em especial, utilizadas na system call clone() S˜ao 6: CLONE NEWNS: mount namespace CLONE NEWUTS: unix timesharing system namespace CLONE NEWIPC: inter-process call namespace CLONE NEWPID: process id namespace CLONE NEWNET: networking namespace CLONE NEWUSER: user namespace Implementado em: include/linux/sched.h A system call clone() ´e utilizada para criar novos processos. Foi adaptada para suportar novas flags, criando um processo e adicionando a um namespace espec´ıfico.
  14. 14. Introdu¸c˜ao Implementa¸c˜ao Summary 1 Introdu¸c˜ao 2 Implementa¸c˜ao Estrutura de dados Clone Flags System Calls
  15. 15. Introdu¸c˜ao Implementa¸c˜ao System Calls Foram adicionadas 2 system calls: unshare() setns()
  16. 16. Introdu¸c˜ao Implementa¸c˜ao unshare() Defini¸c˜ao Respons´avel por criar um objeto nsproxy e adicion´a-lo ao processo que chamou o system call. Requer uma Clone Flag para identificar qual namespace dever´a ser criado. Quando a CLONE NEWPID ´e passada, ele chama a system call fork(), diferenciando seu comportamento tradicional. Implementado em: kernel/fork.c
  17. 17. Introdu¸c˜ao Implementa¸c˜ao setns() Defini¸c˜ao Respons´avel por adicionar um processo que chamou a system call a um namespace existente. Assinatura do m´etodo: setns(int fd, int nstype), onde: fd (file descriptor): Um descritor que refere-se a um namespace. Localizado no diret´orio:/proc/$PID/ns/ nstype (opcional): Especifica atrav´es de uma Clone Flag qual deve ser o tipo do namespace. Valor 0, fd pode assumir qualquer tipo. Valor de nstype diferente do tipo de fd: Retorna -EINVAL Implementado em: kernel/nsproxy.c
  18. 18. Introdu¸c˜ao Implementa¸c˜ao Namespace Lu´ıs Eduardo lets@cin.ufpe.br Universidade Federal de Pernambuco Agosto 2015

×