Submitted by admin on 2010, December 14, 12:13 AM
下面的这篇翻译自hostingfu.com,Observer进行了翻译,本人进一步加了注释。
一、Openvz和Xen的技术规格分析
1.Xen与Openvz的区别
Xen和Openvz同样是虚拟化主机技术,区别在于Xen是半虚拟化技术,它并不是一个真正的虚拟机,而是相当于自己运行了一个内核的实例,可以自由的加载内核模块,虚拟的内存和IO,稳定而且可预测。Openvz则是操作系统级别的虚拟化技术,是底层操作系统上的一层应用,这意味着易于理解和低权重开销,一般来说也意味着更优的性能。
这里有一个问题,可以看到实际上openvz因为免去了大量的公共开销,理论上来说性能会比xen更好。为什么大家都会认为openvz过分压榨性能呢?我认为是因为openvz配置起来比较灵活,给黑心 openvz服务商改低限制的机会。
比如mediatemple,号称512M内存的dv方案,kmemsize才12M,不了解的人看了512M觉得很哈皮啊,可是使用的时候一般这512M能分到你手里一半就不错了。此消彼长,所以才会有xen 能更好地利用机器性能的错觉。
2.Openvz的内核模型
首先当OpenVZ的主机说”256MB的保证”,它实际上意味着约232MB的”privvmpages”,14M的”kmemsize”和其他杂项资源。当应用程序调用 malloc()分配的内存将被添加到”privvmpages”。
当”privvmpages”超过限制,malloc()将失败并返回一个NULL。当主机服务器内存用光了,然后虚拟环境下的进程超过 “oomguarpages”的将被终止。
OpenVZ的内存管理方法既有问题也有优势。最大的问题之一是内存容量的应用程序使用的内存和应用程序实际上分配到的内存是不同的,不同的应用程序他们的差别可能会很大。以Java为例,它通常分配一大块的内存,但是,它可能只使用一小部分分配的内存。如果privvmpages受限,java会立即停止运行。调整参数可以解决一部分问题,但它处理得绝对没有Xen来得干净利落。事实上,几乎所有使用内存分配的应用程序都会受OpenVZ这个问题的影响。
/proc/meminfo 本身也有问题。虽然OpenVZ的已经为内存进行了虚拟,但是用”free”命令依然会返回主机的内存。这样就会使小内存的openvz的vps无法运行诸如java或者gcc编译这样的程序。
OpenVZ的内存模型的优点是, 它容易理解: 你几乎就只有privvmpages受限。与专用的服务器或Xen的服务器不一样的是,你的磁盘高速缓存和页面缓存并不计入您的总内存使用情况。因此,在一个没有过度销售的openvz主机上,由于拥有较大冗余的公共资源,它实际上可能会比同类规格的Xen的VPS表现更佳。
3.Xen的内存模型
Xen的系统模型更容易解释。256MB的Xen的VPS是就像一个256MB的专用服务器-该内存段是预留作VPS专用,没有其他VPS能够使用这部分内存,这就像一个真正的专用服务器。
此外,当内存不足时,VPS会使用Swap。一般每个VPS带有两倍大小的交换分区,当您的应用需要更多的内存,不常使用的页面从内存中被换出到交换分区,从而腾出使更多的房间。因此,256MB的Xen的VPS系统实际上共有768MB内存(256MB内存+ 512MB的交换空间),请相信我,交换空间是非常有用的,特别是处理突发的需求高峰时。
这么说来,Xen是永远远优于OpenVZ?不然,你的256MB的VPS理论可以使用高达768MB内存,而实际上内核,高速缓存,缓冲,他们都占用内存。这部分系统开销也是可观的。另外,Swap会严重降低性能。
4.稳定性和可预测性
当内存耗尽时,xen和openvz表现大相径庭。xen会把不常用的内存页面换入Swap,这将大大降低性能,当Swap也用尽,那么xen的系统会响应得越来越慢,就像一台真实的服务器一样。
而openvz一旦内存用尽,则会突然死亡:开不出新的程序,只能等待系统资源可用。更有甚者,本来运行的好好的程序也可能因为不断增长而超过限制,然后突然死亡。这就像开车开到70码,然后突然撞墙上了,一般会死得很惨。
毫无疑问这点上我倾向于xen技术,可预测,稳定。
5.结论
如果xen和openvz一样贵,我肯定选xen,因为可预测性,即使openvz打8折,我还是追求稳定。
上面的话总结一下,得出几个结论:
1、XEN比openvz主机对买家更有利,比如分配给你512M内存后,这一部分内存就从服务器上专门划给你了,别人将无法使用,而openvz则是共用内存,比如分配给你512M内存是指最大你能使用512M内存,比如你占用了200M内存,那么就只从物体内存中分配200M给你,所以卖家非常容易在服务器上面超卖!
2、openvz更高效,xen是硬件底层虚拟,更接近真实服务器,而openvz是操作系统虚拟,虚拟服务自身占用内存少,同样的程序执行效率更高!
3、如果购买openvz应看卖家是否会超卖,应选择良好声誉明确申明不会超卖的
4、如果购买xen主机,应同时关注swap大小
5、测试VPS主机性能使用Unixbench(很多人不知道),国外非常流行这个东西!
这是它的一些参数说明:
dhry2reg 内存的register性能
whetstone-double 双精度浮点性能
execl execl call性能
fstime 文件系统性能
fsbuffer 文件系统性能
fsdisk 文件系统性能
pipe 管道(pipe)的性能
context1 管道上下文切换的性能
spawn 创建进程的性能
shell shell并发性能
syscall 系统调用性能
6、VPS用途:服务器、软交换、代理和反向代理、离线BT下载等等
7、通常一般的使用条件下,两者性能应该相差不大。
同时VM类似openvz,共用内存,超卖的情况很是严重,在安全和性能的稳定方面要比xen的差一些,选购的时候这些一定要注意的,要相信在这个世界上,一分价钱一分货的道理在那都是通用的。
VPS推荐:
Openvz:
ramhost.us 介于牛A和牛C之间的一家VPS提供商,价格非常便宜,速度飞快,不过经常卖完了买不到,唯一一家在自家网站上提供服务器状态的厂家
Xen:
Hellohost 国内的一家,口碑不错,同时提供Openvz和Xen的VPS,512M 内存20G 硬盘1000G 月流量2 个 IP 地址OpenVZ 虚拟化只要49,虽然Xen主机只有一款512M 内存5000M 硬盘1000G 月流量1 个 IP 地址Xen主机也只要109,最重要的swap达到1G(你可以理解为有1.5G内存,尽管这么理解是不对的),Xen是不能超卖的,所以绝对的物美价廉!
英文原文:http://hostingfu.com/article/xen-or-openvz
虚拟化 | 评论:0
| Trackbacks:0
| 阅读:863
Submitted by admin on 2010, December 13, 4:26 PM
首先要说一说OpenVZ的安装
cd /etc/yum.repos.d
wget http://download.openvz.org/openvz.repo
yum install ovzkernel
即可完成安装。重启后,从http://download.lxlabs.com/?software=hypervm选择下载需要的安装脚本(master的地址为http://download.lxlabs.com/download/hypervm/production/hypervm-install-master.sh),在服务器上运行sh ./hypervm-install-master.sh –-virtualization-type=openvz
安装过程是会自动完成的,安装完HyperVM后init 6重启,然后通过浏览器访问http://<server address>:8888就能操作虚拟机了。
最后,推荐个关于OpenVZ安装的页面http://linux.chinaunix.net/docs/2006-11-13/3187.shtml
虚拟化 | 评论:0
| Trackbacks:0
| 阅读:907
Submitted by admin on 2010, December 13, 4:13 PM
OpenVZ 是唯一可用于unibilling生产用的服务器虚拟技术。目前全球有多套unibilling运行于OpenVZ container。经过3年多的VOIP连续运营生产,证实绝对可靠稳定。
在新的服务器上用如下步骤安装openVZ:
导入 OpenVZ yum源
cd /etc/yum.repos.d
wget http://download.openvz.org/openvz.repo
rpm –import http://download.openvz.org/RPM-GPG-Key-OpenVZ
下载openVZ内核及头文件安装包
mkdir -p /usr/src/files
cd /usr/src/files
wget http://download.openvz.org/kernel/branches/rhel5-2.6.18/028stab068.3/ovzkernel-2.6.18-164.11.1.el5.028stab068.3.i686.rpm
wget http://download.openvz.org/kernel/branches/rhel5-2.6.18/028stab068.3/ovzkernel-devel-2.6.18-164.11.1.el5.028stab068.3.i686.rpm
安装openVZ内核及头文件
rpm -ihv ovzkernel*.rpm
配置boot loader确保使用openVZ的内核启动
vi /etc/grub.conf
配置 sysctl
确保 /etc/sysctl.conf 文件中包含如下信息:
# On Hardware Node we generally need
# packet forwarding enabled and proxy arp disabled
net.ipv4.ip_forward = 1
net.ipv6.conf.default.forwarding = 1
net.ipv6.conf.all.forwarding = 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
# We do not want all our interfaces to send redirects
net.ipv4.conf.default.send_redirects = 1
net.ipv4.conf.all.send_redirects = 0
编辑完毕保存,运行如下命令使之生效:
sysctl -p
禁用 SELinux
修改 /etc/sysconfig/selinux
文件,使其包含信息:
SELINUX=disabled
重新启动linux
shutdown -r now
机器重新启动后,运行 uname -r检查是否已经是openVZ的内核
安装openvz工具集
yum install vzquota
yum install vzctl-lib
yum install vzctl
yum install vzyum
yum install vzpkg
yum install vzrpm43-python
yum install vzrpm44-python
启动OpenVZ服务
/sbin/service vz start
安装操作系统模板文件
查找系统中可用的操作系统模板
yum search vztmpl
[root@tpd620 /]# yum search vztmpl
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* addons: mirror.ii.uib.no
* base: mirror.ii.uib.no
* extras: mirror.ii.uib.no
* openvz-kernel-rhel5: openvz.proserve.nl
* openvz-utils: openvz.proserve.nl
* updates: mirror.ii.uib.no
====================== Matched: vztmpl =======================
vztmpl-centos-4.i386 : OpenVZ template metadata for centos-4 i386.
vztmpl-fedora-7.i386 : OpenVZ template metadata for fedora-7 i386.
vztmpl-fedora-core-3.i386 : OpenVZ template metadata for fedora-core-3 i386.
vztmpl-fedora-core-4.i386 : OpenVZ template metadata for fedora-core-4 i386.
vztmpl-fedora-core-5.i386 : OpenVZ template metadata for fedora-core-5 i386.
vztmpl-fedora-core-6.i386 : OpenVZ template metadata for fedora-core-6 i386.
[root@tpd620 /]#
安装centos linux操作系统模板
yum install vztmpl-centos-4
为操作系统模板建立缓存
vzpkgcache
该命令将建立 centos-4-i386-minimal.tar.gz 和 centos-4-i386-default.tar.gz
vzpkgcache centos-4-i386-minimal 将只建立 centos-4-i386-minimal.tar.gz
vzpkgcache centos-4-i386-default 将只建立 centos-4-i386-default.tar.gz
查看系统中存在的操作系统缓存:
[root@c8 ~]# vzpkgls
centos-4-i386-default
centos-4-i386-minimal
建立OpenVZ节点container
准备配置文件
为方便起见,平分Host机器的内存和CPU
cd /etc/sysconfig/vz-scripts/
vzsplit -n 3 -f vps.mytest
上述命令将均分系统资源为3等份,产生一个例子配置文件
验证该文件的有效性:vzcfgvalidate ve-vps.mytest.conf-sample
创建节点VPS
vzctl create 112 --ostemplate centos-4-i386-minimal --config vps.mytest
配置该VPS
vzctl set 112 --hostname unibillingsrv1 --save
vzctl set 112 --ipadd 207.182.xxx.xxx --save
vzctl set 112 --userpasswd root:xxxxxxxxx
vzctl set 112 --nameserver 209.190.xxx.xxx --save
vzctl set 112 --onboot yes --save
vzctl start 112
vzctl exec 112 service sshd start
vzctl enter 112
vzctl stop 112
配置VPS硬盘容量等参数
grep DISK_QUOTA /etc/sysconfig/vz
df /vz
vi /etc/sysconfig/vz-scripts/112.conf
在该文件中添加 DISK_QUOTA=no
grep DISK_QUOTA /etc/sysconfig/vz-scripts/112.conf
vzctl stop 112
vzctl start 112
vzctl exec 112 df
vzctl set 112 --diskinodes 75000000:79000000 --save
vzctl set 112 --quotatime 600 --save
vzctl exec 112 df
vzctl exec 112 stat -f /
vzctl set 112 --quotaugidlimit 100 --save
vzctl stop 112
vzctl start 112
vzctl exec 112 rpm -q quota
vzyum 112 install quota
vzquota stat 112 -t
向新建的vps中安装yum等工具
vzyum 112 install yum
vzyum 112 install diffutils
错误处理
若vzctl enter进入节点时出现错误,或ssh无法进入节点,需要运行如下命令:
vzctl exec 112 "cd /dev; /sbin/MAKEDEV pty; /sbin/MAKEDEV tty; /sbin/MAKEDEV generic"
虚拟化 | 评论:0
| Trackbacks:0
| 阅读:1671
Submitted by admin on 2010, December 10, 4:15 PM
虚拟化 | 评论:0
| Trackbacks:0
| 阅读:875
Submitted by admin on 2010, December 9, 11:42 PM
wget http://download.lxlabs.com/download/hypervm/production/hypervm-install-master.sh
sh hypervm-install-master.sh --install-type=slave --virtualization-type=xen --skip-ostemplate=true
可选
--virtualization-type=xen/openvz/NONE
--install-type=master/slave
不下载模板
--skip-ostemplate=true
-------------
cd /usr/local/lxlabs/kloxo/httpdocs
#lphp.exe ../bin/common/resetpassword.php master new_password
虚拟化 | 评论:0
| Trackbacks:0
| 阅读:949
Submitted by admin on 2010, December 9, 8:00 PM
XEN虚拟机在CentOS5下的安装和配置,本文默认使用root用户权限执行安装和配置有关命令参数的含义请使用—help的方式查看,对应参数请修改至合适自己的,主要是名字、网络和文件等参数。
一、安装xen
# yum –y install xen*
安装XEN需要的服务
# yum -y install kernel-xen*
安装XEN的相关内核
二、检查启动选项是否使用xen内核启动
1、检查xen内核文件
安装是否正常:文件位于/boot
# ls –lh /boot
total 9.5M
-rw-r–r– 1 root root 61K Mar 16 08:19 config-2.6.18-8.el5
-rw-r–r– 1 root root 60K Mar 16 09:27 config-2.6.18-8.el5xen
drwxr-xr-x 2 root root 1.0K Aug 15 14:47 grub
-rw——- 1 root root 1.5M Aug 13 17:18 initrd-2.6.18-8.el5.img
-rw——- 1 root root 1.5M Aug 15 14:47 initrd-2.6.18-8.el5xen.img
drwx—— 2 root root 12K Aug 13 17:15 lost+found
-rw-r–r– 1 root root 79K Apr 1 22:49 message
-rw-r–r– 1 root root 82K Mar 16 08:20 symvers-2.6.18-8.el5.gz
-rw-r–r– 1 root root 83K Mar 16 09:28 symvers-2.6.18-8.el5xen.gz
-rw-r–r– 1 root root 865K Mar 16 08:19 System.map-2.6.18-8.el5
-rw-r–r– 1 root root 848K Mar 16 09:27 System.map-2.6.18-8.el5xen
-rw-r–r– 1 root root 1.7M Mar 16 08:19 vmlinuz-2.6.18-8.el5
-rw-r–r– 1 root root 2.0M Mar 16 09:27 vmlinuz-2.6.18-8.el5xen
-rw-r–r– 1 root root 269K Mar 16 07:51 xen.gz-2.6.18-8.el5
-rwxr-xr-x 1 root root 595K Mar 16 09:43 xen-syms-2.6.18-8.el5
2、检查grub配置
# cat /boot/grub/grub.conf
# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE: You have a /boot partition. This means that
# all kernel and initrd paths are relative to /boot/, eg.
# root (hd0,0)
# kernel /vmlinuz-version ro root=/dev/sda3
# initrd /initrd-version.img
#boot=/dev/sda
default=1
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title CentOS (2.6.18-8.el5xen)
root (hd0,0)
kernel /xen.gz-2.6.18-8.el5
module /vmlinuz-2.6.18-8.el5xen ro root=LABEL=/
module /initrd-2.6.18-8.el5xen.img
title CentOS (2.6.18-8.el5)
root (hd0,0)
kernel /vmlinuz-2.6.18-8.el5 ro root=LABEL=/
initrd /initrd-2.6.18-8.el5.img
修改其中的default=1为default=0,启用xen内核
3、重新启动计算机
4、重启后登录系统,检查XEN是否正常
4.1 执行# xm list
Name ID Mem(MiB) VCPUs State Time(s)
Domain-0 0 3919 4 r—– 16.9
出现上述结果表示xen启动正常
4.2 检查log:
#ls -lh /var/log/xen
total 8.0K
-rwxr-xr-x 1 root root 36 Aug 15 15:43 xend-debug.log
-rw-r–r– 1 root root 1.8K Aug 15 15:43 xend.log
# cat /var/log/xen/xend-debug.log
Nothing to flush.
Nothing to flush.
表示一切正常,我们的CentOS5中的XEN服务已经成功启动。至此,我们的CentOS5的宿主机已经安装就绪。
三、安装XEN的Linux客户机系统—CentOS 5.x
1、制作镜像文件
1.1 使用dd创建
#dd if=/dev/zero of=centos5.img bs=2k seek=4096k count=1
制作客户机主要磁盘
# dd if=/dev/zero of=swap.img bs=2k seek=512k count=1
制作客户机交换磁盘
2、创建配置文件
2.1 安装必须的工具
由于以前的安装是基于最小化安装,此时需要增加一个用于安装客户机系统的软件virt-manager,现在安装:
#yum –y install virt-manager
请注意由于此软件包为gnome下的图形管理程序,所以需要安装大量依赖包
此处流泪若干……忘记了这个包的名字,耽误时间2个小时……
2.2 开始安装客户机
# virt-install -n centos5 -r 512 –vcpus=2 –file=centos5.img –file=swap.img –nographics -l http://192.168.0.11/yum/ba…
此时如果机器CPU支持VT技术会询问是否需要开启VT支持,一般选择no,如果支持的话选择yes,此时会要求输入光驱或光盘之类。
Would you like a fully virtualized guest (yes or no)? This will allow you to run unmodified operating systems. no
Starting install…
2.3 启动客户机的安装程序
安装由于为远程的,文本方式,部分ssh客户端下可能会有一些乱,请尝试,此部分和一般网络安装操作系统无异,在此不再详细描述。
建议分区是swap用于交换分区,主分区一个boot一个根分区
2.4 补充说明安装源的制作(最简单的方法)
在一台安装了CentOS5的服务器上开启httpd服务,把CentOS5的DVD整盘复制到/var/www/html/yum/base下即可
2.5 配置文件
安装客户机完毕后会在/etc/xen下产生一个centos5的文件就是配置文件
参考配置文件centos5:
name = “centos5″
memory = “768″
disk = [ 'tap:aio:/opt/xen/centos5/centos5.img,xvda,w', 'tap:aio:/opt/xen/centos5/swap.img,xvdb,w', ]
vif = [ 'bridge=xenbr0', ]
bootloader=”/usr/bin/pygrub”
vcpus=2
on_reboot = ‘restart’
on_crash = ‘restart’
四、安装XEN的Windows客户机
前提:宿主计算机的CPU支持intel的VT或者AMD的amd-v,并且在BIOS中开启了对应的选项。
1、检查是否支持VT:
#xm info |grep xen_cap
xen_caps : xen-3.0-x86_32p hvm-3.0-x86_32 hvm-3.0-x86_32p
# xm dmesg |grep -i vmxon
(XEN) VMXON is done
(XEN) VMXON is done
如果出现上述字段则计算机支持VT,否则很有可能是不支持或者BIOS禁用了。
也可以通过 xm dmesg或者cpuinfo等等方式查询,这里就不详细描述了。
2、为实现图形化远程安装开启vnc
#yum –y install vnc*
#vi /etc/xen/xend-config.sxp
编辑下列内容(请根据自己情况修改):
(vnc-listen ’192.168.0.xxx’)
(vncpasswd ‘password’)
此处的修改也可以在对应客户端的文件中修改,参后文。
3、重启计算机
其实应该不需要重启计算机,只需要重启xend的服务即可,但是很难重启服务成功,所以干脆重启:)
4、安装windows
安装前述步骤准备好磁盘镜像文件,传输win的iso文件后执行
#virt-install -n mini -r 768 –vcpus=2 –file=mini.img –vnc -v -c /opt/yum/pwinxp.iso
应该出现以下提示:
Starting install…
Unable to connect to graphical console; DISPLAY is not set. Please connect to localhost:5900
Domain installation still in progress. You can reconnect to the console to complete the installation process.
!!请注意此种方式比较适合宿主机开启xwin图形系统并且在宿主机上操作。
4.1 检查vnc的监听
# netstat -anp |grep 5900
tcp 0 0 192.168.0.xxx:5900 0.0.0.0:* LISTEN 2748/qemu-dm
出现上述结果表明vnc已经开启(此时远程宿主机不需要开启xwin)。
此处监听端口可能有所改变,默认为590X。
4.2 使用vnc客户端连接
建议使用realvnc客户端连接!ultravnc在连接后会出现刷屏的情况,几乎无法操作。密码为在第二步设置的密码或者在配置文件中设置的密码。
4.3安装windows
安装过程中如果停止在如下画面或者不断重启:
画面主要停止在starting windows…的蓝色界面上
此种问题一般是由于ACPI的问题,请在引导光盘启动后提示按F2或者F6的时候按下F7,禁用ACPI,或者使用以下配置文件mini.hvm直接强制 关闭:
import os, re
arch = os.uname()[4]
if re.search(’64′, arch):
arch_libdir = ‘lib64′
else:
arch_libdir = ‘lib’
kernel = “/usr/lib/xen/boot/hvmloader”
name = “mini”
builder = “hvm”
memory = “768″
shadow_memory = 8
disk = [ 'file:/opt/xen/mini/mini.img,hda,w', 'file:/opt/yum/pwinxp.iso,hdc:cdrom,r', ]
vif = [ 'type=ioemu,bridge=xenbr0', ]
device_model = “/usr/lib/xen/bin/qemu-dm”
kernel = “/usr/lib/xen/boot/hvmloader”
vnc=1
vnclisten=”192.168.0.xxx”
vncdisplay=1
vncpasswd=’password’
vncunused=1
apic=0
acpi=0
pae=1
boot=”dc”
vcpus=2
serial = “pty” # enable serial console
on_reboot = ‘restart’
on_crash = ‘restart’
请注意cdrom我们没有使用单独的
cdrom=”/opt/yum/en2003entsp2.iso”来配置,使用此会出现以下错误:
错误为cdrom启动错误,错误代码0002
快速启动vnc客户端查看启动信息(修改配置文件),请注意在第一次修改配置文件后安装会重启,请在重启前修正启动顺序为
boot=”c”
此时进入正常安装模式。以后可以去掉disk里面的cdrom选项或者修改,也可以添加删除磁盘信息。
5、其它说明
此种情况也可以用于安装linux类带xwin的系统;开启vnc仅仅是安装需求,一般情况下建议关闭!
Windows安装完毕后在客户机中安装远程控制软件如vnc或者radmin之类后关闭配置文件中的vnc选项,确保宿主机的安全。
虚拟化 | 评论:0
| Trackbacks:0
| 阅读:932
Submitted by admin on 2010, December 8, 6:56 PM
xen系统剖析
xen系统是redhat最早支持的虚拟化技术,后来redhat收入了KVM并将KVM集合到内核中,但这不表明xen过时了,这只是redhat的对市场的策略问题,这里我不详细说明。之前我已经写过了关于redhat下如何安装xen,本文档详细对xen的工作原理进行分析。
1、xen虚拟机的生成
name = “boottest”
uuid = “134acb0b-ebad-9620-98ef-a86e12bb94ba”
maxmem = 512
memory = 512
vcpus = 1
builder = “hvm”
kernel = “/usr/lib/xen/boot/hvmloader”
boot = “n”
pae = 1
acpi = 1
apic = 1
localtime = 0
on_poweroff = “destroy”
on_reboot = “restart”
on_crash = “restart”
device_model = “/usr/lib64/xen/bin/qemu-dm”
sdl = 0
vnc = 1
vncunused = 1
keymap = “en-us”
disk = [ "file:/opt/boottest.img,hda,w" ]
vif = [ "mac=00:16:36:53:d5:6c,bridge=xenbr0,script=vif-bridge" ]
parallel = “none”
serial = “pty”
以上为一个简单的xm完全虚拟化配置选项。细细分析可以发现其实这个配置文件中有许多参数的定义就像写一个bios的选项。简单的就不详细说明了,我来说一下配置文件中的重要项目,对于初次使用xen的用户来说见意使用 virt-manager 图型工具.
xen配置文件其实就是相当于一台主机的bios配置文件:
kernel = “/usr/lib/xen/boot/hvmloader”
kernel参数用来指定虚拟机引导程序,在使用完全虚拟化时指定为以上值,hvmloader是一个二进制程序,他的内部封装了一个引导虚拟机的内核.但是在准虚拟化时使用virt-manager创建虚拟机后我们会看到kernel的参数不存在了,多了一个bootloader = ‘/usr/bin/pygrub’.因为准虚拟化使用了IO桥接,它需要使用本地的kernel,而pygrub并不是一个像hvmloader一样的带有内核引导程序,它是一个使用python编写的grub引导脚本.之后我会提到这个程序.
boot = “n”
boot参数用来指定虚拟机的启动设备常用的选项为[cdn],c代表使用虚拟磁盘引导也就是后面file:/opt/boottest.img文件,d代表使用虚拟光驱引导,n代表使用pxe引导,当然有用户在机器启动时按下f12键启动pxe,但在实际应用中我们发现虚拟的引导过程是很快的F12的操作机会很短.
pae =1
acpi =1
apic =1
usb =1
这四项和bios中控制非常相似,上面的配置文件中并没有usb项,因为上面的虚拟机不支持usb设备。pae,apic是重要的参数,这两个参数不打开直接影响你的虚拟机不能安装64x系统,这里不详述原因了,大家可以google一下这两个cpu参数的作用。
详细的xenconfig的配置项大家可以参考xen官方文档。
http://www.xen.org/files/Support/XenConfigurationDetails.pdf
xen的配置与你将来要装的系统没有关系,你可以完全把它看成你组状的一台物理机。但有一点需要注意准虚拟化只支持linux.而windows的io桥接是通过加入到windows的xen驱动实现的。
2、虚拟机的磁盘设备
在虚拟机中磁盘是一个文件,它是如何产生的呢?
testboot1.img: data
它是有virt-image工具生成的, virt-image –name example –vnc -i image.xml,那image.xml是什么呢?它是一个有libvirt定义的虚拟磁盘配置文件.
在这里我要说明一下virt-manager,libvirt,xen的关系
virt-manager其实是由redhat支持维护的一个开源项目它提供了图型化和shell工具管理xen和kvm,在使用redhat安装虚拟化时redhat建议安装yum install virt-manager libvirt libvirt-python python-virtinstyum,在安装完成后我们发现了两种管理虚拟机的方法,xm和virt*,那么libvirt是什么呢?它是虚拟化管理接口.
virt-manager ->用户cgi程序
libvirt ->接口程序
xen ->虚拟化核
这样我们就很清楚了。
详细的内容大家可以查阅以下网站
xen -> xen.org
libvirt ->libvirt.org
virt-manager ->virt-manager.org
xen正常生成这个文件后如果我们发现虚拟磁盘不能正常工作,我们如何检查这个磁盘的情况呢?
如果是一个新的磁盘文件,我们可以试着格式化一下。
[root@localhost opt]# mkfs.ext3 -jF testboot1.img
mke2fs 1.39 (29-May-2006)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
512000 inodes, 1024000 blocks
51200 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=1048576000
32 block groups
32768 blocks per group, 32768 fragments per group
16000 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736
Writing inode tables: done
Creating journal (16384 blocks): done
Writing superblocks and filesystem accounting information:
done
This filesystem will be automatically checked every 28 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.
[root@localhost opt]# file testboot1.img
testboot1.img: Linux rev 1.0 ext3 filesystem data (large files)
它是一个好的数据文件,如果是一个已经安装好系统的虚拟磁盘,
[root@localhost vm_disks]# file wv33.disk.xm
wv33.disk.xm: x86 boot sector, Microsoft Windows XP MBR, Serial 0x4b5f4b5f; partition 1: ID=0×7, active, starthead 1, startsector 63, 20450682 sectors
[root@localhost vm_disks]# file pvend999.disk.xm
pvend999.disk.xm: x86 boot sector; partition 1: ID=0×83, active, starthead 1, startsector 63, 208782 sectors; partition 2: ID=0x8e, starthead 0, startsector 208845, 10024560 sectors, code offset 0×48
我们通过file命令可以看到磁盘信息,看它是不是完整,如果完整正明分区信息正常,我们可以在linux下对磁盘文件进行fsck。
在虚拟化后的磁盘文件不要把它看成文件,可以把它看成一设备块,所有的磁盘命令对它都适用。
3、pygrub分析
准虚拟化技术使虚拟机实现了真正的上线应用,其主要的技术在io桥接,io桥接在之前已经与大家分享了。这次主要是说明一pygrub,在刚刚接初虚拟化时主要为实现我们的需求,并没有太过细的去分析这个文件,导至后来测试集中管理xen软件convirture2.0时出现了许多问题,pygrub是一个python编的一个grub软件,grub的功能不在详述,它只是为了读取虚拟磁盘中的boot信息,它与hvmloader完全不同,当我们创建手工创建一个准虚拟化系统时,我们手工生成了一个磁盘文件,这个磁盘文件并没有安装任何linux系统,当我们使用xm create testvm时会发生错误:
[root@localhost opt]# pygrub testboot1.img
Traceback (most recent call last):
File “/usr/bin/pygrub”, line 682, in ?
chosencfg = run_grub(file, entry, fs)
File “/usr/bin/pygrub”, line 536, in run_grub
g = Grub(file, fs)
File “/usr/bin/pygrub”, line 203, in __init__
self.read_config(file, fs)
File “/usr/bin/pygrub”, line 397, in read_config
raise RuntimeError, “couldn’t find bootloader config file in the image provided.”
RuntimeError: couldn’t find bootloader config file in the image provided.
pygrub无法正常读取到boot config,这是因为这个磁盘还是一个空磁盘。为什么我们使用virt-manager创建准虚拟化时不会出现这样的问题呢?
因为virt-manager替我们多做一个操作,我们使用virt-manager创建准虚拟化虚机时virt-manager只能选择从http/nfs/ftp来安装,这个目录都被指定到了http://xxx/pub/os/Linux/RedHat/enterprise/x86_64/5ASU4/install/ 但其实virt-manager又替我们做了一步,它把kernerl和ramdisk参数帮我们设置install/images/xen/vmlinux 与install/images/xen/initrd.img。由vmlinux引导虚拟机启动进行安装,完成后virt-manager重新生成了一个虚拟机配置文件放在/etc/xen目录,并把它的kernerl和ramdisk参数取消,加入了bootloader = ‘/usr/bin/pygrub’。所以我们在virt0manager创建准虚拟化时是看不到config文件的。
[root@localhost opt]# pygrub testboot1.img
pyGRUB version 0.6
谀哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪目
硾[10m Red Hat Enterprise Linux Server (2.6.18-164.el5) 硾[10m
硾[10m 硾[10m
硾[10m 硾[10m
硾[10m 硾[10m
硾[10m 硾[10m
硾[10m 硾[10m
硾[10m 硾[10m
硾[10m 硾[10m
滥哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪馁
Use the ?and ?keys to select which entry is highlighted.
Press enter to boot the selected OS, ‘e’ to edit the
commands before booting, ‘a’ to modify the kernel arguments
before booting, or ‘c’ for a command line.
Will boot selected entry in 1 seconds
dd if=/dev/zero of=bigfile bs=1024k count=1 seek=10000
/sbin/mkfs.ext3 bigfile
sudo mount -o loop /home/admin/dayu-postcheck/postcheck/bigfile /home/admin/dayu-postcheck/postcheck/yangtmp/
虚拟化 | 评论:0
| Trackbacks:0
| 阅读:1932
Submitted by admin on 2010, December 8, 6:30 PM
OpenVZ是我一直在使用的虚拟机软件,之前曾介绍过基于Web管理的Vtonf工具。Vtonf部署和管理都比较方便,适合单台服务器的环 境。而今天我要介绍的工具,也是基于Web管理OpenVZ的,名称叫:HyperVM。它是一个支持多平台、Xen/OpenVZ虚拟、多服务器集群的 管理平台环境,特别适合于对大规模的虚拟机进行统一管理。
一、准备工作
操作系统平台:红旗 Asianux 3.0 for x86_64 SP1
1、获取软件
HyperVM的官方网站:
http://lxlabs.com/
根据官网上的安装说明,HyperVM可以在一台裸系统的系统上,通过其脚本来进行部署。安装时,会把OpenVZ、HyperVM都全部安装完成。但实际使用中,全部用脚本来部署会有两个问题:
引用
a、脚本下载时都是连接到国外的网站,速度很慢;
b、不知道是因为使用红旗平台,还是x86_64等的原因,使用脚本部署完毕后,发现OpenVZ仍未正确安装。
所以,我决定先配置OpenVZ,然后再安装HyperVM。
2、配置OpenVZ
安装和下载:
# wget http://mirror.centos.org/centos-5/5.2/os/i386/CentOS/yum-fastestmirror-1.1.10-9.el5.centos.noarch.rpm
# rpm -ivh yum-fastestmirror-1.1.10-9.el5.centos.noarch.rpm
# cd /etc/yum.repos.d/
# wget http://download.openvz.org/openvz.repo
# yum install ovzkernel-devel.x86_64
# yum install ovzkernel.x86_64
# yum install vzctl vzquota
关闭selinux:
引用
# setenforce 0
setenforce: SELinux is disabled
修改/etc/sysconfig/selinux文件为selinux=disabled。
在/etc/sysctl.conf最后加入:
引用
net.ipv4.ip_forward = 1
net.ipv4.conf.default.proxy_arp = 0
net.ipv4.conf.all.rp_filter = 1
kernel.sysrq = 1
net.ipv4.conf.default.send_redirects = 1
net.ipv4.conf.all.send_redirects = 0
net.ipv4.icmp_echo_ignore_broadcasts=1
net.ipv4.conf.default.forwarding=1
然后,修改/boot/grub/menu.lst,设置为从OpenVZ的核心启动。重启服务器后,查看vz服务是否正常即可。
3、准备HyperVM软件包
由于HyperVM的脚本在安装时,需要从官网下载大量的软件包,特别是OpenVZ的OSTemplate模板,数据量大,但传输速率又特别慢。为此,我在本地模拟了一个
download.lxlabs.com
的环境,把必要的软件包先预存放在服务器上。内容如下:
引用
# cd /var/www/html/
# tree download/
download/
|-- hypervm
| `-- production
| `-- hypervm
| `-- hypervm-current.zip
|-- hypervm-thirdparty.2008.zip
|-- program-install.zip
|-- update
| |-- lxgeneral
| | `-- repodata
| | |-- filelists.xml.gz
| | |-- other.xml.gz
| | |-- primary.xml.gz
| | `-- repomd.xml
| `-- rhel-5.2
| `-- x86_64
| |-- lxphp
| | `-- lxphp-5.2.1-200.i386.rpm
| |-- lxprg
| | |-- lxlighttpd-1.4.18-5.i386.rpm
| | `-- lxzend-3.3-100lxa.i386.rpm
| `-- repodata
| |-- filelists.xml.gz
| |-- other.xml.gz
| |-- primary.xml.gz
| `-- repomd.xml
`-- vpstemplate
`-- centos-5-i386-afull.tar.gz
除了vpstemplate下的文件外,其他软件都是必须的。其中,repodata的内容,可以使用createrepo命令自动生成。
本地下载:

下载文件
然后在/etc/hosts中加入本地到download.lxlabs.com的指向,并启动httpd服务:
# echo "192.168.228.30 download.lxlabs.com" >> /etc/hosts
# service httpd start
三、正式安装
1、mysql的问题
HyperVM在安装时,需要在mysql中创建库和导入数据,所以,mysql应为默认安装,不要设置任何密码,否则请先删除后重装mysql:
# rm -rf /var/lib/mysql
# rpm -e mysql-server
# rm /var/log/mysqld.log.rpmsave
# yum install mysql-server
※ 注意,若您的服务器上已有mysql的数据,请注意备份。或参考网上的资料,清空mysql的管理员密码。
2、修改系统版本
HyperVM随着RHEL 5.2的发布,修改了网上链接的路径,但却没有了5.1的目录。若你仍在使用RHEL 5.1,请修改:
引用
# cat /etc/redhat-release
Red Hat Enterprise Linux Server release 5.1 (Tikanga)
改为:
引用
Red Hat Enterprise Linux Server release 5.2 (Tikanga)
3、安装HyperVM
HyperVM的安装过程好简单:
# wget http://download.lxlabs.com/download/hypervm/production/hypervm-install-master.sh
# sh ./hypervm-install-master.sh --virtualization-type=NONE --skipostemplate
◎ 注意:
选项--virtualization-type供选择的参数有三个:xen/openvz/NONE,分别对应部署xen环境、部署openvz环境和不用部署虚拟机环境,若在已经部署好虚拟机环境的服务器上安装,则应使用NONE模式。
另外,安装官网论坛上的说法,可以使用--skipostemplate跳过VPS模板的下载,但在我的实际测试中,似乎没作用。暂时没找到原因,不过,反正我已经部署了download.lxlabs.com的环境,问题也不大了。
安装到最后,会提示:
引用
......
17:26:08 (65.4 MB/s) - `index.html?C=D;O=D' saved [960/960]
FINISHED --17:26:08--
Downloaded: 9 files, 8.4K in 0s (58.4 MB/s)
Executing Update Cleanup... Will take a long time to finish....
Congratuations. hyperVM has been installed succesfully on your server as master
You can connect to the server at https://<ip-address>:8887 or http://<ip-address>:8888
Please note that first is secure ssl connection, while the second is normal one.
The login and password are 'admin' 'admin'. After Logging in, you will have to change your password to something more secure
Thanks for choosing hyperVM to manage your Server, and allowing us to be of service
***There is one more step you have to do to make this complete. Open /etc/grub.conf, and change the 'default=1' line to 'default=0', and reboot this machine. You will be rebooted into the openvz kernel and will able to manage vpses from the hyperVM interface
启动hypervm服务:
引用
# service hypervm start
/usr/local/lxlabs/hypervm/httpdocs
Starting hypervm: mysqld (pid 8554) 正在运行...
Started hypervm
访问https://<ip-address>:8887 或 http://<ip-address>:8888:
虚拟化 | 评论:0
| Trackbacks:0
| 阅读:875