Linux命名空间概述

电脑杂谈  发布时间:2020-02-27 11:00:59  来源:网络整理

linux内核空间访问用户空间_linux空间_linux 命名空间

Linux的命名空间模式提供了一种资源隔离的解决方案。PID,IPC,Network等平台资源不再是全局性的linux 命名空间,而是属于特定的Namespace。Linux Namespace机制为推动基于容器的虚拟化技术提供了很高的基础linux 命名空间,LXC(Linux containers)就是利用这一特点实现了资源的隔离。不同Container内的进程属于不同的Namespace,彼此透明,互不干扰。

Namespace是对全局系统资源的一种封装隔离,使得进入不同namespace的进程拥有独立的全局系统资源,改变一个namespace中的平台资源只会制约当前namespace里的进程,对其它namespace中的进程没有影响。

448235-3073f4a0924a8ecd.PNG

linux内核空间访问用户空间_linux空间_linux 命名空间

linux_namespace.PNG

目前,Linux内核里面实现了7种不同类型的namespace。

名称        宏定义             隔离内容
Cgroup      CLONE_NEWCGROUP   Cgroup root directory (since Linux 4.6)
IPC         CLONE_NEWIPC      System V IPC, POSIX message queues (since Linux 2.6.19)
Network     CLONE_NEWNET      Network devices, stacks, ports, etc. (since Linux 2.6.24)
Mount       CLONE_NEWNS       Mount points (since Linux 2.4.19)
PID         CLONE_NEWPID      Process IDs (since Linux 2.6.24)
User        CLONE_NEWUSER     User and group IDs (started in Linux 2.6.23 and completed in Linux 3.8)
UTS         CLONE_NEWUTS      Hostname and NIS domain name (since Linux 2.6.19)

linux空间_linux 命名空间_linux内核空间访问用户空间

下面详细介绍一个以上不同类型的命名空间的作用:

与命名空间相关的API主要有三个:clone,setns和unshare,这三个API都是针对一个进程来操作的。

clone方法会构建一个新的子进程,然后让子进程加入新的namespace,而当前进程保持不变。

linux 命名空间_linux内核空间访问用户空间_linux空间

int clone(int (*child_func)(void *), void *child_stac, int flags, void *arg);

这儿的flag用于指明将要创建的新的namespace的类别。 关于clone的详细举例请参考文章:

setns方法用于将当前进程加入至已有的namespace中。

linux空间_linux内核空间访问用户空间_linux 命名空间

int setns(int fd, int nstype);
fd: 
    指向/proc/[pid]/ns/目录里相应namespace对应的文件,
    表示要加入哪个namespace
nstype:
    指定namespace的类型(上面的任意一个CLONE_NEW*):
    1. 如果当前进程不能根据fd得到它的类型,如fd由其他进程创建,
    并通过UNIX domain socket传给当前进程,
    那么就需要通过nstype来指定fd指向的namespace的类型
    2. 如果进程能根据fd得到namespace类型,比如这个fd是由当前进程打开的,
    那么nstype设置为0即可

unshare方法让当前进程退出指定类别的namespace,并加入至新组建的namespace(相当于创建并加入新的namespace)

int unshare(int flags);
flags:
    指定一个或者多个namespace的类型

关于unshare的详细举例请参考:

米鼠网是一家专注于硬件开发、软件外包的高新技术企业,致力于为用户提供全方位的IT服务和行业解决方案,在硬件研发方面有丰富经验,更有的项目主管带队保证工程进度,可对项目进行远程异地多点进行掌控,做软件就上米鼠网!


本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-142255-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      热点图片
      拼命载入中...