Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
SlideShare a Scribd company logo
1
Введение в Linux namespaces
Kirill Krinkin, March, 2015
2
Namespace vs CGroups
● Namespace –
механизм изоляции
и группировки
структур данных
ядра.
● Control groups –
механизм изоляции
ресурсов ядра
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
API
● clone()
● unshare()
● setns()
5
clone / unshare
VS.
6
Namespaces
● Mount (_NEWNS)
● UTS (_NEWUTS)
● IPC (_NEWIPC)
● PID (_NEWPID)
● user (_NEWUSER)
7
Mount namespace
● mount namespace – копия дерева файловой
системы, ассоциированная с процессом
● Создание:
● Опции:
– распространение событий монтирования
– запрет перемонтирования
8
Флаги mount
– bind – смонтировать существующее дерево
в другую точку (поддерево будет доступно в
обоих местах)
Распространение изменений:
–make-shared
–make-slave
–make-private
–make-unbindable
Подробнее:
Documentation/filesystems/sharedsubtree.txt
9
Пример: приватное монтирование
10
UTS namespace
● Изоляция имени хоста и доменного имени
● utsname
● Создание:
11
Пример: создание UTS
см: namespaces/demo_uts_namespaces.c
12
Удержание пространства имен
#touch ./uts
#mount —bind /proc/6221/ns/uts ./uts
см: namespaces/ns_exec.c
# hostname
– thinkpad
#./ns_exec ./uts hostname
– newhostname
13
PID namespace
● Назначение: изоляция идентификаторов процессов
● Создание
● Возможности:
– миграция контейнеров с сохранением PIDs
– имитация init-процесса
– могут быть вложенными
14
Иерархия PIDNS
31
2
4
31 2
12
0
родитель
потомок
15
PIDs & TGIDs
16
Пример: PID namespace
● см: pidns_init_sleep.c
17
IPC namespace
● Изоляция ресурсов IPC (System V IPC) –
очередей сообщений, разделяемая память...
● Создание:
18
USER namespace
● Изоляция идентификаторов пользователей и групп
● Создание:
● Возможности:
– Предоставление привилегированных операций
непривилегированному пользователю внутри пространства
имен
– Отображение пользователей и групп
● /proc/sys/kernel/overflowuid
19
Пример: user namespace
● см: demo_userns.c
./demo_userns
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
Для чтения
● http://www.ibm.com/developerworks/library/l-
mount-namespaces/
● http://lwn.net/Articles/531114/

More Related Content

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