Linux容器虚拟技术LXC简明手册
2011-06-15 10:04
453 查看
LXC容器虚拟化
经过一些折腾,初步在自己的工作笔记本上部署了LXC虚拟。这是一个非常轻量级的虚拟解决方案,特别适合硬件有限的测试环境,也是我们系统管理员技术锻练的良好环境。一些介绍信息,请参考 Linux容器虚拟化技术介绍
安装
以下安装实践是在Gentoo x86_64平台上实现的,如果采用Red Hat系统或Debian,应该只是在软件安装上有区别,但使用配置方法应该相同。安装lxc用户工具
同步portage树LXC
软件包被masked
(尚不成熟),所以需要手工去除屏蔽。
完整的内核要求如下
# namespaces CONFIG_NAMESPACES / "Namespaces" CONFIG_UTS_NS / "Utsname namespace" CONFIG_IPC_NS / "Ipc namespace" CONFIG_PID_NS / "Pid namespace" CONFIG_USER_NS / "User namespace" CONFIG_NET_NS / "Network namespace" DEVPTS_MULTIPLE_INSTANCES / "Multiple /dev/pts instances" # control groups CONFIG_CGROUPS / "Cgroup" CONFIG_CGROUP_NS / "Cgroup namespace" CONFIG_CGROUP_DEVICE / "Cgroup device" CONFIG_CGROUP_SCHED / "Cgroup sched" CONFIG_CGROUP_CPUACCT / "Cgroup cpu account" CONFIG_CGROUP_MEM_RES_CTLR / "Cgroup memory controller" CONFIG_CPUSETS / "Cgroup cpuset" # misc CONFIG_VETH / "Veth pair device" CONFIG_MACVLAN / "Macvlan" CONFIG_VLAN_8021Q / "Vlan"
将以上配置添加到内核编译配置文件中重新编译内核。Red Hat 和 Debian尚没有实践,不过发行版本通常会通过模块方式或预编译支持这些参数,可能不需要调整。
安装Guest操作系统
在网络配置上,是将虚拟机的虚拟交换机br0
和虚拟网卡
dummy0
绑定,这样可以不占用公司网络资源作为虚拟内网运行。如果要将虚拟机对外提供服务,则绑定实际物理网卡如
eth0
。
设置网络
配置
/etc/conf.d/net
cgroup挂载设置
设置cgroup
挂载(参考 http://lxc.teegra.net/
)
/etc/fstab
中添加
案例安装
https://www.granite-mtn.net/xwiki/bin/view/Howto/Linux+Containers提供了各种guest安装的案例,比较简单易用。
https://www.ibm.com/developerworks/linux/library/l-lxc-containers/
是IBM发起的LXC项目,详细介绍了如何build一个debian系统
安装debian虚拟机
安装debootstrap
工具
sid
是debian的unstable版本代号,不过debian的unstable相比较很多其他发行版本,已经是很稳定的版本了。只不过debian质量
控制要求很高,stable版本往往选择“久经考验”的软件版本所以不能尝试最新的开源技术,采用debian的unstable版本可以使用最前沿的开
源技术,对于我们日常应用已经足够稳定。对于服务器部署,可以采用stable版本。
/etc/lxc/lxc-debian.conf
/lxc/debian/fstab
这个问题我尚未解决,应该和我的Gentoo主机系统的内核有关,我自己的VPS系统也存在这样的问题,还需要查找一下原因。
根据 http://lxc.teegra.net/
说明,
udev
是不能在lxc虚拟容器中工作的。参考 http://wiki.debian.org/udev
,在debian中,
udevd
服务,是由于初始化脚本
/etc/rcS.d/udev
启动的,配置文件为
/etc/udev/udev.conf
。
lrwxrwxrwx 1 root root 14 Sep 12 21:34 S02udev -> ../init.d/udev
删除这个启动脚本
有关debian/ubuntu虚拟机安装
http://sourceforge.net/projects/lxc-provider/提供了debian和ubuntu的基础container包,可以下载作为debian系列的基础虚拟容器,并进一步安装调试。
安装fedora虚拟机
http://people.redhat.com/~rjones/febootstrap/提供了类似Debian debootstrap的工具 febootstrap,可以用来生成fedora基本安装的虚拟机,不过和debootstrap相比,当前尚有一些限制。
根据”About febootstrap”说明有:
febootstrap是一个创建Fedora启动文件系统的工具,类似debootstrap
,不需要以root用户身份运行。
febootstrap提供了工具来直接创建
initrd.img
映像(
initramfs
),并且通过删除一些不需要的文件来减小系统空间占用。
依赖软件:
fakeroot
fakechroot >= 2.9
yum
perldoc 只用于生成文档
bash
gcc
libext2fs
/sbin/mke2fs 是e2fsprogs的一部分
我使用的是Gentto操作系统,采用如下方法安装依赖
perldoc
、
libext2fs
、
mke2fs
在常规的Gentoo安装中已经具备。
我这里安装的是fedora 13 x86_64
采用vserver的虚拟机作为LXC的虚拟机
我以前一直使用VServer作为容器虚拟机,现在转到LXC平台后,准备继承使用以往已经构建好的VServer虚拟机。在网上,已经有人提出可以使用OpenVZ虚拟机(也是一种容器虚拟机技术)作为LXC的虚拟机,以此类推,我相信也能够使用VServer虚拟机来转换为LXC虚拟机。
经过一些摸索,通过修改启动
sysinit
脚本,实现了VServer虚拟机的转换。
原本VServer采用的init脚本和标准的Redhat init脚本不同,我查看了虚拟机中的
/etc/inittab
,依样画葫芦,先复制标准init脚本到LXC的init脚本
说明,
udev
是不能在lxc虚拟容器中工作的。)
/lxc/centos/etc/inittab
,将启动脚本指向
rc.sysinit.lxc
其他需要解决的问题
解决LXC虚拟机无法使用df
命令
实际上,在LXC虚拟机中,是不需要挂载任何文件系统的,所有的文件系统都已经在Host主机上挂载了,在LXC主机中是没有挂载外部设备的权限的。
但是,为了能够在guest中也能使用
df
,可以采用手工生成guest虚拟机中的
/etc/mtab
文件来反映内核挂载。实际上,可以参考Host主机的
/etc/mtab
,将对应希望在guest虚拟机中看到的内容复制过去。例如,在guest中也添加
df
命令显示磁盘空间。
Filesystem Size Used Avail Use% Mounted on rootfs 108G 99G 4.1G 97% /
这个命令可以存放在启动脚本中执行,并且可以添加其他内容
Filesystem Size Used Avail Use% Mounted on rootfs 108G 99G 4.1G 97% /
shm 10M 172K 9.9M 2% /dev/shm
LXC和VServer不同,可以在guest虚拟机中设置路由,所以在虚拟机中,可以手工设置缺省网关
Kernel IP routing table Destination Gateway Genmask Flags MSS Window irtt Iface 10.1.11.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0 0.0.0.0 10.1.11.1 0.0.0.0 UG 0 0 0 eth0
LXC和VServer不同,可以在guest虚拟机中设置内核参数,可以修改
proc
内核映像系统,以符合安装Oracle数据库。
以下命令添加在
/etc/rc.local
中:
复制虚拟机
复制centos
虚拟机
/lxc/oradb1/fstab
(修改路径)
/etc/lxc/lxc-oradb1.conf
/etc/lxc/lxc-oradb1.conf
(修改主机名和IP)
相关文章推荐
- Linux容器虚拟技术LXC简明手册
- linux容器技术-lxc创建虚拟机的执行过程分析
- linux容器技术-LXC相关技术知识介绍
- [Linux]Apache下服务器虚拟主机设置技术深入解析[1]
- Linux 中的 XEN 虚拟化技术(三)创建 Xen 虚拟系统
- 网站控制台directadmin中文手册 Linux下虚拟主机管理
- Linux 容器技术史话:从 chroot 到未来
- linux bash script简明手册(持续更新)
- 《UNIX/Linux 系统管理技术手册(第四版)》样章试读
- [Linux]Apache下服务器虚拟主机设置技术深入解析[2]
- [虚拟技术]Linux KVM与Xen,QEMU的性能比较
- Cgroup maintainer李泽帆:解剖Linux内核容器技术
- Linux简明系统维护手册-1
- Linux 容器技术史话:从 chroot 到未来
- linux技术手册
- Linux容器技术史话:从chroot到未来
- Linux简明系统维护手册
- WebLogic Server (UNIX/LINUX平台)简明安装手册
- Manual | BSD手册| Linux手册 | 数据库手册 | 编程开发手册 | WEB开发手册 | 软件应用手册 | 网络技术手册 | GNU手册