Виртуализация уровня операционной системы в Linux (так, называемые контейнеры) опирается на изоляцию ресурсов и на управление их использованием. Пространства имен в Linux (linux namespaces) тот инструмент, который позволяет изолировать ресурсы друг от друга на уровне имен. Например, именами процессов являются их идентификаторы (PIDs), которые можно организовать таким образом, что процессы никогда не могут узнать о существовании друг друга. Об этом и других интересных вещах рассказывается в презентации.
2. 2
Namespace vs CGroups
● Namespace –
механизм изоляции
и группировки
структур данных
ядра.
● Control groups –
механизм изоляции
ресурсов ядра
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
7. 7
Mount namespace
● mount namespace – копия дерева файловой
системы, ассоциированная с процессом
● Создание:
● Опции:
– распространение событий монтирования
– запрет перемонтирования
8. 8
Флаги mount
– bind – смонтировать существующее дерево
в другую точку (поддерево будет доступно в
обоих местах)
Распространение изменений:
–make-shared
–make-slave
–make-private
–make-unbindable
Подробнее:
Documentation/filesystems/sharedsubtree.txt
17. 17
IPC namespace
● Изоляция ресурсов IPC (System V IPC) –
очередей сообщений, разделяемая память...
● Создание:
18. 18
USER namespace
● Изоляция идентификаторов пользователей и групп
● Создание:
● Возможности:
– Предоставление привилегированных операций
непривилегированному пользователю внутри пространства
имен
– Отображение пользователей и групп
● /proc/sys/kernel/overflowuid
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