CentOS 6 使用 LXC

LXC 自kernel 2.6.27 加入linux 内核,依赖内核的cgroup和namespace功能而实现,非常轻量级,设计用于操作系统内部应用级别的隔离。

与传统的HAL(硬件抽象层)层次的虚拟化技术相比有以下优势:

a、更小的虚拟化开销(LXC的诸多特性基本由内核特供,而内核实现这些特性只有极少的花费,具体分析有时间再说)

b、快速部署。利用LXC来隔离特定应用,只需要安装LXC,即可使用LXC相关命令来创建并启动容器来为应用提供虚拟执行环境。传统的虚拟化技术则需要先创建虚拟机,然后安装系统,再部署应用。

LXC 目前已经比较成熟,目前最新版为0.9,官方计划2014年2月推出1.0版本并进行长期维护,希望将LXC投入生产的同学建议观望,CentOS 从6.5 开始支持LXC技术。

不同于vmware,kvm等虚拟化技术,它是一种类似chroot的容器技术,非常的轻量级。LXC 还可以轻松解决单机上一个应用多实例的问题。

环境CentOS 6.5 x64

1、安装LXC

yum install libcgroup lxc lxc-templates –enablerepo=epel/etc/init.d/cgconfig start

2、检查环境

lxc-checkconfig

输出如下即是OK

Kernel configuration not found at /proc/config.gz; searching…Kernel configuration found at /boot/config-2.6.32-431.1.2.0.1.el6.x86_64— Namespaces —Namespaces: enabledUtsname namespace: enabledIpc namespace: enabledPid namespace: enabledUser namespace: enabledNetwork namespace: enabledMultiple /dev/ptsinstances: enabled— Control groups—Cgroup: enabledCgroup namespace: enabledCgroup device: enabledCgroup sched: enabledCgroup cpu account: enabledCgroup memory controller: enabledCgroup cpuset: enabled— Misc —Veth pair device: enabledMacvlan: enabledVlan: enabledFile capabilities: enabledNote : Before booting a new kernel, you can check its configurationusage : CONFIG=/path/to/config/usr/bin/lxc-checkconfig

/usr/share/lxc/templates/ 下有好几个模板可供选择,

# ls /usr/share/lxc/templates/lxc-alpine lxc-busybox lxc-centos lxc-debian lxc-fedora lxc-oracle lxc-sshd lxc-ubuntu

github上有一个现成的centos的模板 ,https://github.com/fajarnugraha/lxc/blob/centos-template/templates/lxc-centos.in

或者下载本文的附件lxc-centos(需解压),放入/usr/share/lxc/templates/,权限755

3、使用模板安装一个centos 虚拟机

lxc-create -n centos -t centos

安装后,虚拟机默认位于/var/lib/lxc/centos/

4、打开虚拟机并进入开机console,

lxc-start -n centos

在后台运行虚拟机,并通过console连接过去

lxc-start -n centos -dlxc-console -n centos

5、配置虚拟机网络,

这里偷了个懒,直接利用libvirt创建出的virbr0,也可以自己手动创建桥接。

如果上面新创建的虚拟机启动失败,很可能是网络没有配置好。

编辑文件/var/lib/lxc/centos/config,确保文件包含一下内容

lxc.network.type= vethlxc.network.link = virbr0lxc.network.flags = uplxc.network.name = eth0lxc.network.ipv4 = 192.168.122.65/24lxc.network.ipv4.gateway = 192.168.122.1

虚拟机网络完全由外部控制,编辑虚拟机内部是无效的。

6、控制虚拟机的资源

虚拟机默认与宿主机共享硬件资源,CPU,内存,IO等,也可以实现资源隔离。

#查看虚拟机的cpu使用lxc-cgroup -n centos cpuset.cpus#设置虚拟机只使用0,1两个CPU核心lxc-cgroup -n centos cpuset.cpus 0,1#设置虚拟机可用内存,软限制为256M,硬限制为512Mlxc-cgroup -n centos memory.soft_limit_in_bytes 268435456lxc-cgroup -n centos memory.limit_in_bytes 53687091#设置虚拟机消耗的CPU时间和IO权重 lxc-cgroup -n centos cpu.shares 256 lxc-cgroup -n centos blkio.weight 500

如果将LXC虚拟机放在LVM或者btrfs文件系统上,还会有一些神奇的效果。

本文出自 “Purple_Grape的博客” 博客,请务必保留此出处

,感悟了不同的人生。凌晨,随着滑轮接触地面,

CentOS 6 使用 LXC

相关文章:

你感兴趣的文章:

标签云: