namespaces与cgroup

NameSpaces

如果把linux操作系统比作一个大房子,那命名空间指的就是这个房子中的一个个房间,住在每个房间里的人都自以为独享了整个房子的资源,但其实大家仅仅只是在共享的基础之上互相隔离,共享指的是共享全局的资源,而隔离指的是局部上彼此保持隔离,因而命名空间的本质就是指:一种在空间上隔离的概念,当下盛行的许多容器虚拟化技术(典型代表如LXC、Docker)就是基于linux命名空间的概念而来的。

命名空间在抽象中封装全局系统资源,使其在命名空间内的进程中具有它们自己的全局资源的孤立实例。对全局资源的更改对于命名空间成员的其他进程是可见的,但i与其他进程无关。命名空间的一个使用是实现容器。

 

Linux Namespace的6大类型

类型

功能说明

Isolates隔离

Constant

Core version

MNT Namespace

提供磁盘挂载点和文件系统的隔离能力

Mount points

CLONE_NEWNS

2.4.19

IPC Namespace

提供进程间通信的隔离能力

System V IPC, POSIX message queues

CLONE_NEWIPC

2.6.19

Net Namespace

提供网络隔离能力

Network devices, stacks, ports, etc.

CLONE_NEWNET

2.6.29

UTS Namespace

提供主机名隔离能力

Hostname and NIS domain name

CLONE_NEWUTS

2.6.19

PID Namespace

提供进程隔离能力

Process IDs

CLONE_NEWPID

2.6.24

User Namespace

提供用户隔离能力

User and group IDs

CLONE_NEWUSER

3.8

CGroups(Control Groups)

通过namespace进行隔离后。如何进行资源的分配,以保证不让某一个被隔离的namespace占用资源过多,通过进行group的分配,

管理如下资源:

  1. blkio #块设备IO
  2. cpu #CPU
  3. cpuacct #CPU资源使用报告
  4. cpuset #多处理器平台上的CPU集合
  5. devices #设备访问
  6. freezer #挂载器或恢复任务
  7. memory #内存用量及报告
  8. perf_event #对cgroup中的任务进行统一性能测试
  9. net_ds #cgroup中的任务创建的数据报文的类别标识符

猜你喜欢

转载自www.cnblogs.com/Forsake-dream/p/9980735.html