提到虚拟机,相信大部分人第一个想到的就是Vmware或Xen。Vmware因为使用方便、简单,可支持操作系统众多,配置灵活,所以得到了广泛的应用。但正因为Vmware采用完全虚拟化技术,其开销很大,虚拟机效率比较低。而下面需要介绍的是OpenVZ虚拟环境,OpenVZ是SWsoft公司Virtuozzo的Linux开源版本。其突出的特点是:多个虚拟服务器在一个内核上运行。虚拟服务器可以使用不同的Linux发行版本,但都基于同一个系统内核。VPS在OpenVZ下的性能相当出众,大多数情况下,开销不到3%。VPS所有的软件安装都基于rpm包管理方式进行,多个虚拟机之间软件安装非常方便。
从Asianux 3.0开始,红旗和SWsoft合作,可以完整支持Virtuozzo软件。商业版本的Virtuozzo拥有优秀的管理工具,是免费的OpenVZ所缺少的。而且Virtuozzo还支持Windows核心的虚拟支持版本。
一、原理
OpenVZ是基于在Virtuozzo上的,但缺少了可视化管理工具,操作都是基于命令行的方式进行。
OpenVZ基于在自己修改的核心上提供虚拟环境:
1、安装有OpenVZ核心的系统叫:Hardware Node,简称HW;
2、每个虚拟主机称:VE或VPS。
目前OpenVZ提供从2.6.9到2.6.22核心的修改版本,并可以支持Fedora、CentOS、Asianux、OpenSuse、Gentoo、Debian、Mandriva等的配置模版,而直接用于产生最终的虚拟主机环境。
OpenVZ官方网站:http://www.openvz.org/
Virtuozzo介绍:http://www.swsoft.com.cn/cn/products/virtuozzo/new/new.php
二、应用平台
操作系统:红旗DC Server 5.0 for x86 SP2
虚拟主机环境:CentOS 4.x版本
根据DC Server 5.0的核心版本,建议使用RHEL4的修改核心。
三、安装HW
HW上安装红旗DC Server 5.0 for sp2版本。
OpenVZ的安装可以使用rpm或yum方式进行。为了今后虚拟机的安装、更新和管理方便,我建议采用yum的方式。
1、分区
在准备HW环境时,由于今后所有的VE环境、OpenVZ管理工具、软件包管理、磁盘空间配额限制等都会是基于/VZ分区上的,从方便管理的角度出发,应尽可能保证把/VZ分区单独的划分出来。
2、准备yum环境
红旗上默认没有使用yum更新环境,请参考以前的日志安装对应的套件环境:yum套件
然后是下载OpenVZ更新yum模版:
# cd /etc/yum.repos.d
# wget http://download.openvz.org/openvz.repo
根据当前系统上的核心版本,选择需要使用的openvz核心:
# vi /etc/yum.repos.d/openvz.repo
[openvz-kernel-rhel5]
enabled=0
[openvz-kernel-rhel4]
enabled=1
※当前系统使用的核心是2.6.9-42.7AXsmp,与RHEL4类似。
3、安装HW核心
32bit环境下,OpenVZ提供多个核心:
ovzkernel-smp 支持多CPU
ovzkernel-enterprise 超过4G以上内存
ovzkernel 单CPU普通核心
安装:
# yum install ovzkernel-smp
4、修改Grub启动环境
修改/boot/grub/menu.lst,把启动标识以及默认启动选项改动一下:
default=0
title OpenVZ (2.6.9-023stab044.4-smp)
root (hd0,1)
kernel /boot/vmlinuz-2.6.9-023stab044.4-smp ro root=LABEL=/
initrd /boot/initrd-2.6.9-023stab044.4-smp.img
5、修改sysctl.conf
因为HW需要为PE提供网络、内存等系统环境,所以,请修改/etc/sysctl.conf文件为:
# On Hardware Node we generally need
# packet forwarding enabled and proxy arp disabled
# 打开IP路由支持
net.ipv4.ip_forward = 1
net.ipv4.conf.default.proxy_arp = 0
# Enables source route verification
net.ipv4.conf.all.rp_filter = 1
# Enables the magic-sysrq key
kernel.sysrq = 1
# TCP Explict Congestion Notification
#net.ipv4.tcp_ecn = 0
# we do not want all our interfaces to send redirects
net.ipv4.conf.default.send_redirects = 1
net.ipv4.conf.all.send_redirects = 0
6、关闭防火墙和Selinux支持
为避免iptables和selinux对HW的影响,请关闭它们:
# chkconfig iptables off
# vi /etc/sysconfig/selinux
SELINUX=disabled
重启服务器,选择OpenVZ核心启动。若启动正常,则HW环境准备完成。
四、安装OpenVZ套件和模版
1、安装OpenVZ套件
# yum install vzctl vzquota
2、启动VZ服务
# /sbin/service vz start
3、安装模版及模版生成工具
# yum install vzpkg vzyum vzrpm43-python vzrpm44-python
4、安装系统模版的metadata
查找:
# yum search vztmpl
安装:
# yum install vztmpl-centos-4.i386
修改模版中yum的更新路径:
# vi /vz/template/centos/4/i386/config/yum.conf
#baseurl=http://mirror.centos.org/centos/4/os/i386/
baseurl=http://mirror.be10.com/centos/4/os/i386/
5、生成操作系统模板
# vzpkgcache
该命令会使用yum从上述网站下载需要的rpm包,然后根据规则生成对应的操作系统模版。
但因为模版比较大,使用该方法耗时比较长,建议用手工下载的方式代替:
a、下载系统模版
# cd /vz/template/cache
# wget http://download.openvz.org/template/precreated/centos-4-i386-minimal.tar.gz
# wget http://download.openvz.org/template/precreated/centos-4-i386-default.tar.gz
b、显示已经cache的模版
# vzpkgls --cached
centos-4-i386-minimal
centos-4-i386-default
五、使用VE
1、创建VPS
# vzctl create 112 --ostemplate centos-4-i386-default
其中112是VE ID。根据OpenVZ的说明书,0是HW使用的,1-100作为系统保留的,所以,VE ID应大于100。
--ostemplate 是指定用于生成VE的系统模版,必须是已经安装并已经缓存好的。
2、设置VPS
# vzctl set 112 --ipadd 192.168.100.100 --save
为VE设置IP地址,并保存到配置文件中。
# vzctl set 112 --userpasswd root:123456
为VE的root管理员用户密码,在未设置密码的情况下,VE中的root是被屏蔽的。该命令设置后马上生效,不用保存到配置文件中。
为安全起见,VE中的root密码是保存在VE中的,而非HW上。
# vzctl set 112 --hostname 112 --save
设置112 VE的主机名为112,方便识别。
# vzctl set 112 --onboot yes --save
把VE设置为HW启动后自动激活。
# vzctl start 112
启动112 VE。
3、从HW使用VE
在HW上可以对VE进行直接操作:
# vzctl exec 112 service sshd start
启动112 VE上的SSH服务。
该服务启动后,即可从其他机器通过ssh远程登陆到112 VE中进行操作。
# vzctl enter 112
entered into VE 112
[root@112 /]#
从HW进入到112 VE中,exit退出。
# vzyum 112 install mysql* http* php*
为112 VE安装对应的软件包。
4、进入VE运行
进入VE后,所执行的操作与处理独立计算机无异。
# vzctl enter 112
entered into VE 112
[root@112 /]# uptime
08:02:09 up 21:41, 0 users, load average: 0.00, 0.00, 0.00
[root@112 /]# free -m
total used free shared buffers cached
Mem: 192 144 47 0 0 0
-/+ buffers/cache: 144 47
Swap: 0 0 0
[root@112 /]# df -h
Filesystem Size Used Avail Use% Mounted on
simfs 1.0G 434M 591M 43% /
5、停止VE
# vzctl stop 112
VE关闭的超时时间为2分钟,超过则会强制关闭。
VE的启动和关闭会根据使用的Linux发行版本过程进行,例如CentOS上则会根据chkconfig中的顺序启动和关闭。
6、删除VE
# vzctl destroy 112
删除前,需先停止VE。删除会清空该VE使用的空间,但保留配置文件。配置文件需要手动清除。
六、附录
OpenVZ创建的虚拟机VE环境,可以根据具体的情况配置可用的CPU unit单元、可用最少内存范围,以及可用磁盘空间、inodes点等。该部分留待后续日志介绍,下面把一些描述部分重要的文件及目录:
1、全局配置文件
# ll /etc/sysconfig/vz
lrwxrwxrwx 1 root root 13 Sep 27 15:39 /etc/sysconfig/vz -> ../vz/vz.conf
该文件中的内容为VPS的全局配置。
2、单独VE配置文件
# ll /etc/sysconfig/vz-scripts/
total 20
-rw-r--r-- 1 root root 228 Jul 6 15:47 0.conf <-HW节点配置
-rw-r--r-- 1 root root 1717 Oct 11 11:54 112.conf <-VE节点配置
-rw-r--r-- 1 root root 1539 Jul 6 15:47 ve-light.conf-sample <-样版配置
-rw-r--r-- 1 root root 1558 Jul 6 15:47 ve-vps.basic.conf-sample <-样版配置
vzctl使用--save后,即保存到上述VE配置文件中。而样本配置文件可供在创建VE的时候直接使用。
3、VE的私有目录
/vz/private/$VEID
该目录在创建VE的时候,由对应的模版解压而生成。
启动VE的时候,会把该目录挂载到虚拟根目录中使用,停止时,卸载。
备份或拷贝该目录,配合新的VE配置文件,即可实现对整个VE的拷贝或备份工作。
4、VE的虚拟根目录
/vz/root/$VEID
VE的根目录在配置文件中决定,而默认为上述路径。即:
/vz/root/112 ==112 VE's /
VE启动后,会把其私有目录挂载到该虚拟目录中,作为根目录。
5、系统模版和更新缓存目录
/vz/template
/vz/template/cache <-系统模版,.tar.gz压缩
/vz/template/centos/4/i386 <-根据模版缓存的软件包存放路径
/vz/template/centos/4/i386/config <-特定模版yum更新路径
/vz/template/centos/4/i386/vz-addons <-vz更新包
/vz/template/centos/4/i386/yum-cache <-该模版yum更新包及cached包
通过对/vz/template/centos/4/i386/config/yum.conf文件的配置,以及yum仓库的设置等。可以在本地搭建yum仓库,以方便所有VE的更新工作。
6、手动搭建yum仓库
一般情况下,在HW使用vzyum时,会根据上述yum.conf中的更新路径下载更新包。而我们可以通过预下载cached打包文件,以减少该下载的数量:
# cd /vz/template
# wget http://download.openvz.org/template/repocache/yum-cache-centos-4-i386.tar.bz2
# tar jxvf yum-cache-centos-4-i386.tar.bz2
这是一个可选的工作。如果该软件包已经比较旧的情况下,更新的量还是比较多的。
不过,如果对一个VE进行了vzyum update或install的工作后,即可利用该cached数据更新其他使用相同系统模版的VE。适合于多VE或跨HW的VE之间的更新工作。
jackzh 于 2008-07-19 11:46:45发表:
超强啊 顶!!!