Linux Namespaces机制提供一种资源隔离方案。PID,IPC,Network等系统资源不再是全局性的,而是属于特定的Namespace。每个Namespace里面的资源对其他Namespace都是透明的。要创建新的Namespace,只需要在调用clone时指定相应的flag。Linux Namespaces机制为实现基于容器的虚拟化技术提供了很好的基础,LXC(Linux containers)就是利用这一特性实现了资源的隔离。不同Container内的进程属于不同的Namespace,彼此透明,互不干扰。下面我们就从clone系统调用的flag出发,来介绍各个Namespace。
命名空间提供了虚拟化的一种轻量级形式,使得我们可以从不同的方面来查看运行系统的全局属性。该机制类似于Solaris中的zone或 FreeBSD中的jail。对该概念做一般概述之后,我将讨论命名空间框架所提供的基础设施。
以上两段从网上摘录的,有兴趣可查阅原文链接1。理论上我们应该可以参考jail做一个类似linux的netnamespace的东西,不过据说freebsd虚拟化功能比较弱,实现起来应该不容易。以下是实验过程,主要玩一下linux基于命令空间的网络虚拟化。
环境部署
EXSI上新建一个虚拟机,添加三块网卡,接入一个交换域
安装centos7
安装tcpdump供调试