您的位置:首页 > 其它

LXC 虚拟化技术

2016-06-27 14:01 204 查看
Linux Container
是一个操作系统层的轻量级虚拟化技术,百度、腾讯等互联网公司的PaaS平台大多都采用了这项新技术。和XEN,VMware和KVM等硬件抽象层的虚拟化技术相比,LXC更像是加强版的chroot。因为Linux Containers不但没有对硬件设备进行仿真(指令集模拟),还可以使用主机的目录和文件等资源。容器可以在核心 CPU 本地运行指令,而不需要任何专门的解释机制。所以,与传统的HAL(硬件抽象层)层次的虚拟化技术相比有以下优势:
a). 更小的虚拟化开销。LXC的诸多特性基本由内核特供,相当于一个加强版的chroot,开销相比HAL的虚拟化小了很多。
b). 快速部署。利用LXC来隔离特定应用,只需要安装LXC,即可使用LXC相关命令来创建并启动容器来为应用提供虚拟执行环境。传统的虚拟化技术则需要先创建虚拟机,然后安装系统,再部署应用。
LXC项目本身只是一个用户空间的工具集(Userspace tools for the Linux Kernel containers),用来使用和管理LXC容器。LXC在资源管理方面依赖与Linux内核的cgroups子系统,cgroups子系统是Linux内核提供的一个基于进程组的资源管理的框架(参见我之前的一篇文章之前的cgroup简介),可以为特定的进程组限定可以使用的资源。LXC在隔离控制方面依赖于Linux内核的namespace特性,具体而言就是在clone时加入相应的flag(NEWNS NEWPID等等)。
LXC与Docker关系:http://www.tiejiang.org/4883.html
CentOS 6 安装使用 LXC http://windchasereric.blog.51cto.com/5419433/1759052 环境:CentOS 6.5 x64
##安装rpel
rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm ##安装LXC
yum install libcgroup lxc lxc-libs lxc-templates bridge-utils --enablerepo=epel
##配置LXC桥接方式
cp /etc/sysconfig/network-scripts/ifcfg-eth0 /etc/sysconfig/network-scripts/ifcfg-br0
vim /etc/sysconfig/network-scripts/ifcfg-br0
[root@localhost network-scripts]# cat ifcfg-br0
DEVICE=eth0
HWADDR=00:0C:29:F5:79:81
TYPE=Ethernet
UUID=edcf6721-480c-4433-af68-e20d783aea1c
ONBOOT=yes
NM_CONTROLLED=no
BRIDGE=br0
BOOTPROTO=static
USERCTL=no
[root@localhost network-scripts]# cat ifcfg-eth0
DEVICE=eth0
HWADDR=00:0C:29:F5:79:81
TYPE=Ethernet
UUID=edcf6721-480c-4433-af68-e20d783aea1c
ONBOOT=yes
NM_CONTROLLED=no
BRIDGE=br0
BOOTPROTO=static
USERCTL=no
##修改LXC网络默认配置信息
[root@localhost templates]# cat /etc/lxc/default.conf
lxc.network.type = veth
lxc.network.link = br0 #这个要和先前创建的网桥的名称对应
lxc.network.flags = up
##启动LXC
/etc/init.d/cgconfig start
/etc/init.d/lxc start
##检查环境
lxc-checkconfig
##使用模板安装一个centos 6 虚拟机
##/usr/share/lxc/templates/ 自带了常用的模板可供选择,debian/ubuntu,centos/redhat 都有。
XXXXXX 错误:lxc-create -n vm01 -t centos XXXXXX
lxc-create -n centos6 -t /usr/share/lxc/templates/lxc-centos
##-n:指定虚拟机的名称
## -t:指定创建虚拟机使用的模块,LXC其他目标如下
[root@localhost templates]# ll /usr/share/lxc/templates
total 328
-rwxr-xr-x 1 root root 10789 Aug 30 2014 lxc-alpine
-rwxr-xr-x 1 root root 13366 Aug 30 2014 lxc-altlinux
-rwxr-xr-x 1 root root 10251 Aug 30 2014 lxc-archlinux
-rwxr-xr-x 1 root root 9446 Aug 30 2014 lxc-busybox
-rwxr-xr-x 1 root root 28387 Jun 23 18:06 lxc-centos
-rwxr-xr-x 1 root root 10177 Aug 30 2014 lxc-cirros
-rwxr-xr-x 1 root root 12158 Aug 30 2014 lxc-debian
-rwxr-xr-x 1 root root 17213 Aug 30 2014 lxc-download
-rwxr-xr-x 1 root root 47196 Aug 30 2014 lxc-fedora
-rwxr-xr-x 1 root root 27422 Aug 30 2014 lxc-gentoo
-rwxr-xr-x 1 root root 13961 Aug 30 2014 lxc-openmandriva
-rwxr-xr-x 1 root root 13705 Aug 30 2014 lxc-opensuse
-rwxr-xr-x 1 root root 35445 Aug 30 2014 lxc-oracle
-rwxr-xr-x 1 root root 11749 Aug 30 2014 lxc-plamo
-rwxr-xr-x 1 root root 6848 Aug 30 2014 lxc-sshd
-rwxr-xr-x 1 root root 24183 Aug 30 2014 lxc-ubuntu
-rwxr-xr-x 1 root root 12427 Aug 30 2014 lxc-ubuntu-cloud
##临时密码在
/var/lib/lxc/vm01/tmp_root_pass
##修改密码执行以下命令
chroot /var/lib/lxc/vm01/rootfs passwd
###安装后,虚拟机默认位于/var/lib/lxc/vm01/rootfs,
###配置文件为/var/lib/lxc/vm01/config
##在CentOS中,LXC的几个默认的路径如下:
##lxc默认配置文件:/etc/lxc/default.conf
##模版脚本所在目录:/usr/share/lxc/templates
##容器实例目录:/var/lib/lxc/

##启动打开lxc容器并进入开机console,
lxc-start -n vm01
###遇到问题:failed to attach 'vethMA5FN1' to the bridge 'virbr0' : No such device,必须yum安装bridge-utils
###打开上面网址配置虚拟机网络类型解决
lxc.network.type = macvlan
lxc.network.macvlan.mode = bridge
lxc.network.flags = up
lxc.network.link = eth0
##在后台运行虚拟机,并通过console连接过去 (使用ctrl+a+q退出console)
lxc-start -n vm01 -d
lxc-console -n vm01
##查看lxc容器相关信息(名称、是否在运行、PID,CPU使用、IO使用、内存使用、IP地址、网络吞吐量)
lxc-info -n vm01
##监视lxc容器的资源使用
lxc-top
##容器克隆
lxc-clone vm01 webserver01 -B lvm
##如果你想节约空间,克隆时带上 -s (--snapshot) 参数,可以创建一个源容器的可读写快照
lxc-clone vm01 webserver01 -s -B lvm
##修改虚拟机的root密码: http://www.178linux.com/5351 [root@localhost ~]# chroot /var/lib/lxc/vm01/rootfs passwd
##关闭或删除容器
lxc-stop -n vm01
lxc-destroy -n vm01
##配置容器的cgroup
##设置容器只使用0,1两个CPU核心
lxc-cgroup -n centos cpuset.cpus 0-1
##设置容器使用的CPU时间
##设置虚拟机可用内存为512M
lxc-cgroup -n centos memory.limit_in_bytes 53687091
##设置虚拟机消耗的IO权重
lxc-cgroup -n centos blkio.weight 500
##或者直接写入容器的配置文件config中
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: