Linux namespace 原理

简介

Linux使用namespace进行系统资源的隔离,比如通过PID namespace用来隔离进程号

下图中,主机视角下的进程6,在他自己的namespace视角下,是进程1

在这里插入图片描述

namespace规则

  • 进程可以分配给不同类型的不同名称空间

  • 但是对于每个类型,它只能属于一个名称空间

  • 默认情况下,进程与其父进程处于相同的名称空间中,它可以通过传递特定的标志在进程创建期间添加到新的名称空间,或者在进程运行期间通过调用 setns 系统调用添加到新的名称空间

  • 理想情况下,只有同一名称空间中的进程才能共享名称空间隔离的资源。因此,资源是跨名称空间隔离的

namespace的种类

• Mount: 隔离文件系统挂载点
• UTS: 隔离主机名和域名信息
• IPC: 隔离进程间通信
• PID: 隔离进程的 ID
• Network: 隔离网络资源
• User: 隔离用户和用户组的 ID

lsns指令

可以列出namespace

lsns
        NS TYPE   NPROCS   PID USER        COMMAND
4026531835 cgroup     19  3956 zarathustra /lib/systemd/systemd --user
4026531836 pid        19  3956 zarathustra /lib/systemd/systemd --user
4026531837 user       19  3956 zarathustra /lib/systemd/systemd --user
4026531838 uts        19  3956 zarathustra /lib/systemd/systemd --user
4026531839 ipc        19  3956 zarathustra /lib/systemd/systemd --user
4026531840 mnt        19  3956 zarathustra /lib/systemd/systemd --user
4026531992 net        19  3956 zarathustra /lib/systemd/systemd --user

查看某一特定进程的namespace

切换到目录:/proc/pid/ns

/proc/2895/ns# ll
total 0
dr-x--x--x 2 root root 0 Apr 15 15:30 ./
dr-xr-xr-x 9 root root 0 Apr 15 06:52 ../
lrwxrwxrwx 1 root root 0 Apr 15 15:30 cgroup -> 'cgroup:[4026531835]'
lrwxrwxrwx 1 root root 0 Apr 15 15:30 ipc -> 'ipc:[4026532392]'
lrwxrwxrwx 1 root root 0 Apr 15 15:30 mnt -> 'mnt:[4026532390]'
lrwxrwxrwx 1 root root 0 Apr 15 15:30 net -> 'net:[4026532395]'
lrwxrwxrwx 1 root root 0 Apr 15 15:30 pid -> 'pid:[4026532393]'
lrwxrwxrwx 1 root root 0 Apr 15 15:44 pid_for_children -> 'pid:[4026532393]'
lrwxrwxrwx 1 root root 0 Apr 15 15:30 user -> 'user:[4026531837]'
lrwxrwxrwx 1 root root 0 Apr 15 15:30 uts -> 'uts:[4026532391]'

最后的一长串数字为 inode number

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值