CGroups(Control Groups) 控制组:
用于实现容器的资源隔离。
可对进程做资源隔离。CPU和内存。
九大子系统。
应用案例。
扩展:
主机虚拟化实现资源隔离的方式
使用Hypervisor中的VMM实现资源隔离
PAM:
用户认证:
ssh、su、sudo、samba、ftp、gdm、kdm。
应用系统自带的认证系统。
apache认证方式。
资源限制:
ulimit命令:提高资源的限制量,仅针对用户进行限制。
文件描述符来限制文件数量。ulimit -n 10240
控制组:
控制组CGroups是Linux内核的一个特征,主要用来对共享资源进行隔离、限制、审计等。只有能控制分配到容器的资源,才能避免多个容器同时运行时对宿主机系统的资源竞争。控制组可以提供对容器的CPU、内存、磁盘、IO等资源进行限制和计费管理。控制组的设计目标是为不同的应用情况提供统一的接口,从控制单一进程(比如nice工具)到系统级虚拟化(包括OpenVZ、Linux-Server、LXC等)
具体来看,控制组提供:
资源限制:可以将组设置为不超过设定的内存限制。比如:内存子系统可以为进程组设定一个内存使用上限,一旦进程组使用的内存达到限额再申请内存,就会出现Out of Memory警告。
优先级:通过优先级让一些组优先得到更多的CPU等资源。
资源审计:用来统计系统实际上把多少资源用到适合的目的上,可以使用cpuacct子系统记录某个进程组使用的CPU时间。
隔离:为组隔离命名空间,这样一个组不会看到另一个组的进程、网络连接和文件系统。
控制:挂起、恢复和重启等操作。
安装docker之后,用户可以在/sys/fs/cgroup/memory/docker/目录下看到对Docker组应用的各种限制项,包括:
cd /sys/fs/cgroup/memory/docker
ls
用户可以通过修改这些文件值来控制组限制Docker应用资源。
cgroups将各种子系统定义为资源,命名为controller。
可配额/可度量-Controller Groups(cgroups):
cgroups实现了对资源的配额和度量九大子系统的资源。
1、blkio:限制每个块设备的输入输出控制。例如:磁盘、光盘以及usb。
2、cpu:限制使用CPU比例。
3、cpuacct:产生cgroup任务的cpu资源报告。
4、cpuset:多核心的cpu时为cgroup任务分配单独的cpu和内核。
5、devices:允许和拒绝对设备的访问。
6、freezer:暂停和恢复cgroup的任务。
7、memory:设置内存限制以及产生内存资源报告。
8、net_cls: 标记每个网络包。
9、ns:名称命名空间。