lxc的内存、网络、磁盘的监控管理(一)

本文介绍了Linux容器技术LXC,它依赖于命名空间和cgroups来实现轻量级虚拟化。命名空间提供进程、网络、文件系统等隔离,而cgroups用于资源限制、优先级控制、资源记录和隔离。通过lxc-start等工具,可以创建和管理LXC容器,包括配置cgroups参数以控制内存、CPU和网络资源。LXC创建过程中涉及的流程包括初始化、命名空间创建、cgroup关联以及进程启动。
摘要由CSDN通过智能技术生成

Lxc实现与cgroup关系

LXC 是 Linux Container的缩写。Linux 容器技术是一种内核虚拟化技术,它提供了轻量级的虚拟化技术,可以在单一控制主机上同时提供多个虚拟环境(即容器)以隔离进程和资源,每个虚拟环境拥有自己的进程和独立的命名空间。在基于容器的虚拟化技术中,进程不再是个全局概念,而是从属于某个特定的容器。理想情况下,进程跟容器之间是动态关联的,进程可以在容器之间迁移。在基于容器的虚拟化技术中,容器既是资源容器,也是隔离的命名空间,它能有效地将由单个操作系统管理的资源划分到隔离的组中,以更好地在隔离的组之间平衡有冲突的资源的占用需求。

实现LXC两大技术之一是命名空间。基于容器的虚拟化技术主要通过隔离操作系统内核的对象(例如 PID、UID、系统共享内存、IPC、net等等)来完成安全性的隔离,具体就是运用Namespace名字空间将原来的全局对象(句柄、UID等)隔离到完全不同的名称空间里,不同虚拟机之间是完全不可见的,因此它们也不能访问到名称空间之外的对象。全局对象在每个虚拟机内本地化了,换句话说,全局的对象标记仅仅是在每个虚拟机内部全局。Namespace特性的具体使用方式就是在clone时加入相应的flag(NEWNS NEWPID等等)。LXC正是通过在clone时设定这些flag,为进程创建一个有独立PID,IPC,FS,Network,UTS空间的容器。一个容器就是一个虚拟的运行环境,对容器里的进程是透明的,它会以为自己是直接在一个系统上运行的。

实现LXC另一个技术是cgroups。LXC在资源管理方面依赖与内核的 Cgroups (Control Groups) 子系统,Cgroups 子系统是内核提供的一个基于进程组的资源管理的框架,可以为特定的进程组限定可以使用的资源。

linux内核提供了cgroups控制组(control groups)的功能,最初由google的工程师提出,后来被整合进Linux内核。cgroups适用于多种应用场景,从单个进程的资源控制,到实现操作系统层次的虚拟化提供了以下功能:

1、限制进程组可以使用的资源数量(Resource limiting )。比如:memory子系统可以为进程组设定一个memory使用上限,一旦进程组使用的内存达到限额再申请内存,就会出发OOM(out of memory)。

2、进程组的优先级控制(Prioritization )。比如:可以使用cpu子系统为某个进程组分配特定cpu share。

3、记录进程组使用的资源数量(Accounting )。比如:可以使用cpuacct子系统记录某个进程组使用的cpu时间。

4、进程组隔离(Isolation)。比如:使用ns子系统可以使不同的进程组使用不同的namespace,以达到隔离的目的,不同的进程组有各自的进程、网络、文件系统挂载空间。

5、进程组控制(Control)。比如:使用freezer子系统可以将进程组挂起和恢复。

 

下面介绍lxc常用的管理接口:

1、lxc-start 创建容器,并在容器中执行给定命令

2、lxc-kill发送信号给容器中的第一个用户进程(容器内部进程号为2的进程)

3、lxc-cgroup用于获取或调整与cgroup相关的参数

简单介绍下命令用法:

lxc-start  -n name [-f config_file] [-cconsole_file] [-d] [-s KEY=VAL] [command]

      -d 将容器当做守护进程执行

     -f  后面跟配置文件

     -c 指定一个文件作为容器console的输出,如果不指定,将输出到终端

     -s 指定配置

例如:

lxc-start -n foo1 -f ./lxc-cfg -d /bin/bash

这里所说的配置文件提供了cgroups、提供单独的网络、根目录空间等,以P4080DS单板为例的配置文件如下,具体含义有时机再进行分析。

         lxc.utsname= foo23

         lxc.network.type= macvlan

         lxc.network.macvlan.mode= vepa

         lxc.network.flags= up

         lxc.network.link= br0

         lxc.network.name= eth0

         lxc.network.ipv4= 192.168.0.23

         lxc.network.type= macvlan

         lxc.network.macvlan.mode= vepa

         lxc.network.flags= up

         lxc.network.link= br0

         lxc.network.name= eth1

         lxc.network.ipv4= 192.168.128.23

         lxc.tty= 1

   

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值