Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Пространства имен Linux (linux namespaces)

1,970 views

Published on

Виртуализация уровня операционной системы в Linux (так, называемые контейнеры) опирается на изоляцию ресурсов и на управление их использованием. Пространства имен в Linux (linux namespaces) тот инструмент, который позволяет изолировать ресурсы друг от друга на уровне имен. Например, именами процессов являются их идентификаторы (PIDs), которые можно организовать таким образом, что процессы никогда не могут узнать о существовании друг друга. Об этом и других интересных вещах рассказывается в презентации.

Published in: Software
  • Hello there! Get Your Professional Job-Winning Resume Here! http://bit.ly/topresum
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

Пространства имен Linux (linux namespaces)

  1. 1. 1 Введение в Linux namespaces Kirill Krinkin, March, 2015
  2. 2. 2 Namespace vs CGroups ● Namespace – механизм изоляции и группировки структур данных ядра. ● Control groups – механизм изоляции ресурсов ядра
  3. 3. 3 Представление процесса в linux include/linux/sched.h, include/linux/nsproxy.h http://lxr.free-electrons.com/source/include/linux/sched.h#L1273 http://lxr.free-electrons.com/source/include/linux/nsproxy.h#L29
  4. 4. 4 API ● clone() ● unshare() ● setns()
  5. 5. 5 clone / unshare VS.
  6. 6. 6 Namespaces ● Mount (_NEWNS) ● UTS (_NEWUTS) ● IPC (_NEWIPC) ● PID (_NEWPID) ● user (_NEWUSER)
  7. 7. 7 Mount namespace ● mount namespace – копия дерева файловой системы, ассоциированная с процессом ● Создание: ● Опции: – распространение событий монтирования – запрет перемонтирования
  8. 8. 8 Флаги mount – bind – смонтировать существующее дерево в другую точку (поддерево будет доступно в обоих местах) Распространение изменений: –make-shared –make-slave –make-private –make-unbindable Подробнее: Documentation/filesystems/sharedsubtree.txt
  9. 9. 9 Пример: приватное монтирование
  10. 10. 10 UTS namespace ● Изоляция имени хоста и доменного имени ● utsname ● Создание:
  11. 11. 11 Пример: создание UTS см: namespaces/demo_uts_namespaces.c
  12. 12. 12 Удержание пространства имен #touch ./uts #mount —bind /proc/6221/ns/uts ./uts см: namespaces/ns_exec.c # hostname – thinkpad #./ns_exec ./uts hostname – newhostname
  13. 13. 13 PID namespace ● Назначение: изоляция идентификаторов процессов ● Создание ● Возможности: – миграция контейнеров с сохранением PIDs – имитация init-процесса – могут быть вложенными
  14. 14. 14 Иерархия PIDNS 31 2 4 31 2 12 0 родитель потомок
  15. 15. 15 PIDs & TGIDs
  16. 16. 16 Пример: PID namespace ● см: pidns_init_sleep.c
  17. 17. 17 IPC namespace ● Изоляция ресурсов IPC (System V IPC) – очередей сообщений, разделяемая память... ● Создание:
  18. 18. 18 USER namespace ● Изоляция идентификаторов пользователей и групп ● Создание: ● Возможности: – Предоставление привилегированных операций непривилегированному пользователю внутри пространства имен – Отображение пользователей и групп ● /proc/sys/kernel/overflowuid
  19. 19. 19 Пример: user namespace ● см: demo_userns.c ./demo_userns
  20. 20. 20 Network namespace ● Изоляция сетевой конфигурации, интерфейсов, правил марштуризации ● Создание: Примеры (через ip): – ip netns add netns1 – ip netns exec netns1 ip link list – ip netns delete netns1 – ip netns exec netns1 ip link set dev lo up – ip netns exec netns1 ping 127.0.0.1
  21. 21. 21 Для чтения ● http://www.ibm.com/developerworks/library/l- mount-namespaces/ ● http://lwn.net/Articles/531114/

×