Linux内核中的Namespace
2015-09-07 19:53
495 查看
Linux内核中的Namespace提供了一个轻量级的基于系统调用层面的虚拟化解决方案。相比传统的使用 VMWare,QEMU,Xen,KVM,Hurd的虚拟(图1所示),基于namespace的轻量级虚拟具有易使用,易管理,无需硬件虚拟化支持,低 成本等优点。
图
1.
namespace又称container,这种技术类似于Solaris Zones和BSD
jails, 也和C++中的namespace概念相似。在linux系统中,系统资源如进程,用户账号,文件系统,网络都属于某个namespace。每个 namespace下的资源对于其他namespace下的资源都是透明,不可见的。因此在操作系统层面上看,就会出现多个相同pid的进程,多个相同 uid的账号。就如图2所示的,系统中可以同时存在两个进程号为0,1,2的进程,由于属于不同的namespace,所以它们之间并不冲突。而在用户层 面上只能看到属于用户自己namespace下的资源,例如使用ps命令只能列出自己namespace下的进程。这样每个namespace看上去就像
一个单独的Linux系统。
图
2.
namespace还拥有层次关系。图3中,一个parent namespace下有两个child namespace。parent namespace和它的两个child namespace都有三个进程号为1,2,3的进程,同时child namespace的每个进程被映射到了parent namespace中的4,5,6,7,8,9。虽然只有9个进程,但需要15个进程号来表示它们。
图
3.
图
1.
namespace又称container,这种技术类似于Solaris Zones和BSD
jails, 也和C++中的namespace概念相似。在linux系统中,系统资源如进程,用户账号,文件系统,网络都属于某个namespace。每个 namespace下的资源对于其他namespace下的资源都是透明,不可见的。因此在操作系统层面上看,就会出现多个相同pid的进程,多个相同 uid的账号。就如图2所示的,系统中可以同时存在两个进程号为0,1,2的进程,由于属于不同的namespace,所以它们之间并不冲突。而在用户层 面上只能看到属于用户自己namespace下的资源,例如使用ps命令只能列出自己namespace下的进程。这样每个namespace看上去就像
一个单独的Linux系统。
图
2.
namespace还拥有层次关系。图3中,一个parent namespace下有两个child namespace。parent namespace和它的两个child namespace都有三个进程号为1,2,3的进程,同时child namespace的每个进程被映射到了parent namespace中的4,5,6,7,8,9。虽然只有9个进程,但需要15个进程号来表示它们。
图
3.
相关文章推荐
- 【Linux高频命令专题(2)】awk
- The Linux Kernel Module Programming Guide(hello)
- Linux系统特殊权限
- linux代理windows上网
- linux wc 命令
- C_FORCE_ROOT linux环境变量设置
- CentOS下如何挂载NTFS分区
- linux 在线程中fork无法清除僵尸进程。
- Linux进程间的通信——信号量
- linux 开放端口
- linux ls和 ll 命令的区别
- Linux 安装 java
- Linux系统裁剪(2)之Linux系统裁剪
- 工作中linux常用命令
- linux驱动篇之 driver_register 过程分析(二)bus_add_driver
- linux运维实战练习-2015年9月5日课程作业
- linux下IPTABLES配置详解
- Linux进程间通信——消息队列
- Linux下python项目运行步骤
- 木头骑士的Linux编程实验室(一)——时间、错误、限制