Loading... <h2 style="text-align: left">一、Cgroups</h2> <h3 style="text-align: left"><span style="font-size: 16px">1.1 介绍</span></h3> <p style="text-align: left;text-indent: 2em">Cgroup是Control group的简称。最初由由Google的工程师(主要是Paul Menage和Rohit Seth)在2006年以“process containers(进程容器)”的名字开始的, 在2007年的晚些时候被重命名为“控制组”并被合并到了2.6.24版的内核中,现已成为Linux内核中的一个功能,是Linux内核提供一种可限制、记录、隔离进程组所使用的物理资源(如:CPU、Memory、I/O等)的机制。</p> <h3 style="text-align: left">1.2 作用</h3> <p style="text-align: left;text-indent: 2em">cgroup是用于将一个或多个进程关联至一个 “进程组”,并且可以统一的进行监控和管理容器,形成对资源管理提供了统一的架构。根据监控或管理的需要,运行中的系统上很可能存在多个Cgroup,而这些Cgroup被组织成了层级结构,类似多根倒置的树状结构)。事实上,Cgroups是一种资源控制机制,其资源配置的最小单位是所谓的Subsystem——一种资源控制器,通过将资源划分为多种不同的类型(CPU、内存、磁盘输入输出等)并将这些类型的资源关联至层级结构中指定的Cgroup实现资源分配。</p> <p style="text-align: left"></p> <p style="text-align: left"><span style="font-size: 14px">备注:cgroups是实现IaaS虚拟化(kvm、lxc等),PaaS容器沙箱(Docker等)的资源管理控制部分的底层基础</span></p> <h2 style="text-align: left">二、lxc</h2> <h3 style="text-align: left">2.1 介绍</h3> <p style="text-align: left;text-indent: 2em">LXC是LinuX Container的简称,提供轻量级的虚拟化,是一种基于容器的操作系统层级的虚拟化技术。利用新版Linux内核的特性(Cgroups等)实现的无需hypervisor的轻型虚拟化技术。容器能有效的将由单个操作系统管理的资源划分到孤立的组中,以更好地在孤立的组之间平衡有冲突的资源使用需求。</p> <p style="text-align: left;text-indent: 2em">LXC能够虚拟出一个完整的系统环境(rootfs),也可以仅为单个或多个应用程序提供虚拟化运行环境。从使用方式来看,它更像是增强版的chroot环境,提供一个拥有自己进程、网络空间的虚拟环境。</p> <h3 style="text-align: left">2.2 优势</h3> <ul class=" list-paddingleft-2"> <li> <p style="text-align: left;text-indent: 2em">与宿主机使用同一个内核,性能损耗小;</p> </li> <li> <p style="text-align: left;text-indent: 2em">轻量级隔离,在隔离的同时还提供共享机制,以实现容器与宿主机的资源共享;</p> </li> <li> <p style="text-align: left;text-indent: 2em">容器可以在CPU核心的本地运行指令,不需要任何专门的解释机制;</p> </li> </ul> <h2 style="text-align: left;text-indent: 0em">三、LXC使用说明</h2> <h3 style="text-align: left;text-indent: 0em">3.1 lxc命令介绍</h3> <ul class=" list-paddingleft-2"> <li> <p style="text-indent: 2em">lxc-create 创建虚拟机</p> </li> </ul> <p style="text-indent: 2em"> -t:指定根据哪个模板创建虚拟机 </p> <p style="text-indent: 2em"><span style="text-indent: 2em"> -n:指定虚拟机的名称</span></p> <ul class=" list-paddingleft-2"> <li> <p style="text-indent: 2em">lxc-checkconfig 检查运行环境及配置信息</p> </li> <li> <p style="text-indent: 2em">lxc-start 开启虚拟机</p> </li> </ul> <p style="text-indent: 2em"> -n:指定虚拟机名称</p> <p style="text-indent: 2em"> -d:指明让虚拟机在后台运行</p> <ul class=" list-paddingleft-2"> <li> <p style="text-indent: 2em">lxc-stop 关闭虚拟机</p> </li> </ul> <p style="text-indent: 0em"><span style="font-size: 14px">备注:命令其他参数的详细用法可以查看帮助信息</span></p> <h3>3.2 lxc的模板说明</h3> <p style="text-align: left;text-indent: 2em">默认情况下lxc的模板存放路径为 /usr/share/lxc/templates/ ,里面存放着各操作系统的模板,对于CentOS而言,默认安装时以最小化操作系统安装。并且在使用模板安装时会需要连接其内部指向的网络进行下载安装,如果有需要,可以修改里面的参数,让其指向我们内部的yum仓库进行安装。</p> <h3 style="text-align: left;text-indent: 0em">3.3 lxc的虚拟机默认安装路径</h3> <p style="text-align: left;text-indent: 2em">lxc安装的虚拟机默认都是安装在/var/lib/lxc 路径下。</p> <h3 style="text-align: left;text-indent: 0em">3.4 lxc默认配置信息</h3> <p style="text-indent: 2em">在创建虚拟机时,默认会去读一个配置信息,而配置信息文件是 /etc/lxc/default.conf</p> <pre class="brush:bash;toolbar:false">[root@localhost templates]# vim /etc/lxc/default.conf lxc.network.type = veth #创建出来的虚拟机的是以什么名字命名的网卡名称 lxc.network.link = virbr0 #指定所使用的桥接网卡的名字 lxc.network.flags = up #网络的状态信息</pre> <h3 style="text-align: left;text-indent: 0em">3.5 其他需要了解</h3> <p style="text-align: left;text-indent: 2em">在安装完CentOS时,系统会自动生成一个root的密码,而密码的文件的路径是在 /var/lib/lxc 下你所安装的虚拟机,其中有一个文件名为 tmp_root_pas ,该文件存放着root默认的密码信息</p> <h2 style="text-align: left;text-indent: 0em">四、CentOS 6.5上使用lxc-1.0.5</h2> <p style="text-indent: 2em">我们都知道在VMware上安装虚拟机都需要使用到一个叫桥接的网络,这样的目的是为让其他主机能够访问VMware里的虚拟机,在安装完VMware Workstation时,程序默认会安装虚拟网卡,目的是让虚拟主机进行通信。</p> <p style="text-indent: 2em">在CentOS上安装虚拟化软件,为了让系统里的虚拟机能够访问网络,我们也需要使用类似方法,将物理网卡虚拟成为交换机,也称之为网桥。</p> <h3 style="text-align: left;text-indent: 0em">4.1 所需程序包</h3> <ul class=" list-paddingleft-2"> <li> <p style="text-indent: 2em">bridge-utils #CentOS下网桥管理工具所需的依赖包</p> </li> <li> <p style="text-indent: 2em">lxc-1.0.5-1.e16.x86_64.rpm #lxc程序包</p> </li> <li> <p style="text-indent: 2em">lxc-libs-1.0.5-1.e16.x86_64.rpm # lxc所需的库文件程序包</p> </li> <li> <p style="text-indent: 2em">libcgroup #Cgroup程序包</p> </li> </ul> <h3 style="text-align: left;text-indent: 0em">4.2 安装所需的依赖包</h3> <p style="text-indent: 2em">1、安装bridge-utils 程序包</p> <pre class="brush:bash;toolbar:false">[root@localhost ~]# yum install bridge-utils -y</pre> <p style="text-indent: 2em">2、安装libcgroup程序包</p> <pre class="brush:bash;toolbar:false">[root@localhost ~]# yum -y install libcgroup</pre> <p style="text-indent: 2em">3、安装lxc所需的程序包及库文件程序包</p> <pre class="brush:bash;toolbar:false">[root@localhost ~]# yum -y install lxc-libs-1.0.5-1.el6.x86_64.rpm lxc-1.0.5-1.el6.x86_64.rpm</pre> <h3 style="text-align: left;text-indent: 0em">4.3 步骤</h3> <p style="text-align: left;text-indent: 2em">1、关闭NetworkManager服务,关闭自动启动功能</p> <p style="text-align: left;text-indent: 2em">注意:NetworkManager不支持桥功能,所以必须关闭,并且保证其开机不会自动启动</p> <pre class="brush:bash;toolbar:false">[root@localhost ~]# service networkmanager stop #关闭服务 [root@localhost ~]# chkconfig networkmanager off #关闭自动开机启动</pre> <p style="text-indent: 2em">2、启动network服务和cgconfig服务,并确保开机自动启动</p> <pre class="brush:bash;toolbar:false">[root@localhost ~]# service network start [root@localhost ~]# service cgconfig start [root@localhost ~]# chkconfig cgconfig on</pre> <p style="text-indent: 2em">3、为虚拟网桥接口添加配置文件ifcfg-br0</p> <pre class="brush:bash;toolbar:false">[root@localhost ~]# cp /etc/sysconfig/network-scripts/ifcfg-eth0 /etc/sysconfig/network-scripts/ifcfg-br0 #可以通过拷贝将eth0的模板复制给br0 [root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-br0 #修改br0配置</pre> <p style="text-align: left;text-indent: 2em"> <img src="//cto.wang/usr/uploads/2016/07/20160703180845-2.jpg" title="1459418868343371.jpg" alt="111.jpg" /></p> <p style="text-indent: 2em">4、将做桥接的物理网卡关联至前面定义的桥接设备</p> <pre class="brush:bash;toolbar:false">[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0</pre> <p style="text-indent: 2em"> <img src="//cto.wang/usr/uploads/2016/07/20160703180845-66.jpg" title="1459419454697052.jpg" alt="1.jpg" /></p> <p style="text-align: left;text-indent: 2em">5、重启网络服务</p> <pre class="brush:bash;toolbar:false">[root@localhost ~]# service network restart</pre> <p style="text-align: left;text-indent: 2em"> <img src="//cto.wang/usr/uploads/2016/07/20160703180845-99.jpg" title="1459419517230337.jpg" alt="2.jpg" /></p> <p><span style="font-size: 14px"> #正常而言ssh远程连接是不应该被断开的,因为其网卡已经正常变为桥接网络。</span></p> <p style="text-indent: 2em">6、查看当前网卡设备信息,br0已经正常使用。</p> <p style="text-align: left;text-indent: 2em"> <img src="//cto.wang/usr/uploads/2016/07/20160703180845-12.jpg" title="1459419562417306.jpg" alt="3.jpg" /></p> <p style="text-indent: 2em">7、修改默认配置信息</p> <pre class="brush:bash;toolbar:false">[root@localhost templates]# vim /etc/lxc/default.conf lxc.network.type = veth lxc.network.link = br0 #这个要和先前创建的网桥的名称对应 lxc.network.flags = up</pre> <p style="text-indent: 2em">8、检查lxc配置和环境</p> <pre class="brush:bash;toolbar:false">[root@localhost templates]# lxc-checkconfig</pre> <p style="text-align: left;text-indent: 2em"> <img src="//cto.wang/usr/uploads/2016/07/20160703180845-99-1.jpg" title="1459419600516925.jpg" alt="4.jpg" /></p> <p style="text-indent: 2em">9、配置lxc-CentOS模板</p> <p style="text-indent: 2em">因为默认情况下,在使用lxc-centos模板时,会从互联网下载对应的系统安装的程序包,而此时如果你的虚拟机无法连接互联网,可以将访问路径指向本地yum仓库中安装使用。</p> <pre class="brush:bash;toolbar:false">[root@localhost mnt]# vim /usr/share/lxc/templates/lxc-centos [base] name=CentOS-$release - Base baseurl=file:///mnt</pre> <p style="text-indent: 2em"><span style="font-size: 14px"> <img src="//cto.wang/usr/uploads/2016/07/20160703180846-25.jpg" title="1459419660861543.jpg" alt="5.jpg" /></span></p> <p style="text-indent: 2em"><span style="font-size: 14px">备注:因为此处没有使用到update,所以已将[update]字段删除,如有需要可以重新添加指定</span></p> <p style="text-indent: 2em">10、创建CentOS虚拟机</p> <p>[root@localhost ~]# lxc-create -n centos6 -t /usr/share/lxc/templates/lxc-centos</p> <p style="text-indent: 2em">#指定虚拟机的名称为centos6</p> <p style="text-indent: 2em"> <img src="//cto.wang/usr/uploads/2016/07/20160703180846-7.jpg" title="1459419682817036.jpg" alt="6.jpg" /></p> <p style="text-indent: 2em">11、设定root密码</p> <pre class="brush:bash;toolbar:false">[root@localhost ~]# chroot /var/lib/lxc/centos6/rootfs passwd</pre> <p style="text-indent: 2em">12、启动虚拟机</p> <pre class="brush:bash;toolbar:false">[root@localhost mnt]# lxc-start -n centos6</pre> <p style="text-indent: 2em"> <img src="//cto.wang/usr/uploads/2016/07/20160703180846-15.jpg" title="1459419719733149.jpg" alt="7.jpg" /></p> <p style="text-indent: 2em"><span style="font-size: 14px">备注:如果直接这样启用,虚拟机将会占用当前终端,所以可以加 –d 参数,将其在后台启用,当系统启用完成后,可以使用ssh远程连接使用。</span></p> <p style="text-indent: 2em">13、测试</p> <p style="text-indent: 2em"> <img src="//cto.wang/usr/uploads/2016/07/20160703180846-25-1.jpg" title="1459419753698577.jpg" alt="8.jpg" /></p> <p style="text-indent: 2em"><span style="font-size: 14px">此时可以对虚拟机进行操作,比如重启、关机、安装软件等操作。</span></p> <p style="text-align: left;text-indent: 0em"></p> <p style="text-align: left;text-indent: 0em"></p> <p style="text-align: left;text-indent: 0em"></p> <p style="text-align: left;text-indent: 0em"></p> <p style="text-align: left;text-indent: 0em"></p> <p style="text-align: left;text-indent: 0em"></p> <p style="text-align: left;text-indent: 0em"></p> <p style="text-align: left;text-indent: 0em"></p> <p style="text-align: left;text-indent: 0em"></p> <p style="text-align: left;text-indent: 0em"></p> <p style="text-align: left;text-indent: 0em"></p> <p style="text-align: left;text-indent: 0em"></p> <p style="text-align: left;text-indent: 0em"></p> <p style="text-align: left;text-indent: 0em"></p> <p style="text-align: left;text-indent: 0em"></p> <p style="text-align: left;text-indent: 0em"></p> <p style="text-align: left;text-indent: 0em"></p> <p style="text-align: left;text-indent: 0em"></p> <p style="text-align: left;text-indent: 0em"></p> <p style="text-align: left;text-indent: 0em"></p> <p style="text-align: left;text-indent: 0em"></p> <p style="text-align: left;text-indent: 0em"></p> <p style="text-align: left;text-indent: 0em"></p> <p style="text-align: left;text-indent: 0em"></p> <p style="text-align: left;text-indent: 0em"></p> <p style="text-align: left;text-indent: 0em"></p> <p style="text-align: left;text-indent: 0em"></p> <p style="text-align: left;text-indent: 0em"></p> <p style="text-align: left;text-indent: 0em"></p> <p style="text-align: left;text-indent: 0em"></p> <p style="text-align: left;text-indent: 0em"></p> <p><br style="text-align: left" /></p> <p></p> 最后修改:2021 年 12 月 10 日 10 : 53 AM © 允许规范转载 赞赏 如果觉得我的文章对你有用,请随意赞赏 赞赏作者 支付宝微信
1 条评论
1