CentOS 5.5 上升级 Xen 后遇到的一个问题
2011年01月17日 | 标签: xen | 作者:vpsee
前几天用 CentOS 5.5 官方源升级我们的一台 Xen 服务器的时候发现一个问题,升级后的 xen 内核和 xend 服务都能正常启动,但是 xm 这类工具用不了:
# uname -a Linux n46.xen.vpsee.com 2.6.18-194.32.1.el5xen #1 SMP Wed Jan 5 18:44:24 EST 2011 x86_64 x86_64 x86_64 GNU/Linux # /etc/init.d/xend status xend is running # xm list Error: Unable to connect to xend: No such file or directory. Is xend running?
检查 xen 日志报错如下:
# vi /var/log/xen/xend.log [2011-01-14 09:54:38 4664] INFO (SrvDaemon:332) Xend Daemon started [2011-01-14 09:54:38 4664] INFO (SrvDaemon:336) Xend changeset: unavailable. [2011-01-14 09:54:38 4664] ERROR (SrvDaemon:349) Exception starting xend ((13, 'Permission denied')) Traceback (most recent call last): File "/usr/lib64/python2.4/site-packages/xen/xend/server/SrvDaemon.py", line 341, in run ... File "/usr/lib64/python2.4/site-packages/xen/xend/XendNode.py", line 871, in xenschedinfo sched_id = self.xc.sched_id_get() Error: (13, 'Permission denied')
这种 xen/xend 正常,xm 不能用的情况很明显是 xen hypervisor 和 xen tools 之间的匹配问题。这是因为 VPSee 以前用 CentOS 的非官方源升级到了 Xen 3.4.3,造成以前升级的 xen tools 和上面刚刚官方升级的 xen hypervisor 不匹配,所以需要把 /boot/grub/menu.lst 里面刚升级成功的的 kernel /xen.gz-2.6.18-194.32.1.el5 换成原来的 kernel /xen.gz-3.4.3,然后重启一下就可以了:
# vi /boot/grub/menu.lst title CentOS (2.6.18-194.32.1.el5xen) root (hd0,0) kernel /xen.gz-3.4.3 module /vmlinuz-2.6.18-194.32.1.el5xen ro root=LABEL=/ module /initrd-2.6.18-194.32.1.el5xen.img
XEN不是一般的难装,从网上的各种教程的源码安装我就没成功过,后来没办法,只能用第三方源直接安装了。
到后来有了KVM,我们就直接不用XEN了,全部转到KVM上了。
博主我刚用了你的VPS。确实不错,啥时候推出个KVM的VPS啊?
@18988
我们在 Xen 上有多年的企业生产环境运营经验,对 KVM 还不够熟悉,目前还没有找到切换到 KVM 的理由。
昨天下午一台生产机器yum update了一下
升级到了kernel-xen-2.6.18-194.32.1.el5.x86_64
重启机器提示
[root@server4 log]# uname -a
Linux server4.miphost.com 2.6.18-194.el5 #1 SMP Fri Apr 2 14:58:14 EDT 2010 x86_
[root@server4 log]# xm top
ERROR Internal error: Could not obtain handle on privileged command interface (2 = No such file or directory)
ERROR Internal error: Could not obtain handle on privileged command interface (2 = No such file or directory)
xc_interface_open: No such file or directory
Failed to initialize xenstat library
照着博主配置修改后无法启动了…
求助
你的内核显示 2.6.18-194.el5,应该是 2.6.18-194.32.1.el5xen,你可能因为升级修改了 grub 默认启动的顺序进入了非 xen 内核,修改 grub 配置的默认启动顺序进入 xen 内核就可以了。
最开始用xen就是看了您的《在debain上装xen》之后,现在有一个问题困扰了很久,想请教您。
正如您在《Xen 性能对比:Native,Dom0 和 DomU》中提到的Xen的Dom0的性能是比较差的,所以我只是用它作管理用。但是Dom0和DomU的CPU数量该如何分配?有什么原则吗?特别是对于DomU处理IO密集应用时,比如一个4Core,4G的主机,应怎样为装了CentOS的Dom0和DomU分配资源,能最大优化DomU的网络IO性能?
谢谢!
@xener
如果你对性能有较高的要求的话,建议单独分配1个 cpu core 给 dom0 独享,然后把剩下的3个 cpu core 分配给 domU.
哥 救命阿 我快崩溃了 xen上安装不上虚拟机 什么时候有时间向你请教下 能给个联系方式吗
您好 我使用的是 centos5 xen已经安装上了 但是怎么装也装不上虚拟机。下面使我的安装步骤 麻烦抽时间看下
我是初学者,清多多包涵。
使用配置文件centos5.cfg安装 内容如下
kernel = “/boot/vmlinuz-xen-centos5”
ramdisk = “/boot/initrd-xen-centos5”
name = “centos5-vm”
memory = “512”
disk = [ ‘tap:aio:/home/cnc/domains/centos5/disk.img,xvda,w’, ]
vif = [ ‘bridge=xenbr0’, ]
vcpus=1
on_reboot = ‘destroy’
on_crash = ‘destroy’
然后使用命令 xm create -c centos5.cfg
在安装过程中需要选择 local cd
hard disk
nfs
http
ftp
选择http
输入 mirror.centos.org
centos/5/os/i386
然后 显示 can’t retrive http://mirror.centos.org/centos/5/os/i386/images/stage2.img.
但是使用 firefox可以访问。
安装到这里就进行不下去了,请多多帮忙。
@同甫
你看看 Xen 的日志 /var/log/xen/xend.log,日志信息能帮助排错。
您好,我的centOs5.4由xen3.1.2升级了xen3.4.3,通过如下方式:
# cd /etc/yum.repos.d/
# wget http://www.gitco.de/repo/GITCO-XEN3.4.3_x86_64.repo
# yum groupupdate xen 关联xen的相关包
# reboot
xen升级成功,但是创建好的虚拟机,执行ruby脚本查询虚拟机cpu,内存等信息出错了(该脚本来源自OpenNebula云计算管理工具中)。如下错误:
[root@node150 images]# /var/tmp/one/vmm/xen/poll one-0
Error executing sudo /usr/sbin/xentop -bi2
/var/tmp/one/vmm/xen/poll:186:in `get_vm_info’: undefined method `[]’ for nil:NilClass (NoMethodError)
from /var/tmp/one/vmm/xen/poll:310:in `print_one_vm_info’
from /var/tmp/one/vmm/xen/poll:344
请教下是什么原因呢?多谢啦!
注:在xen3.1.2下测试是没有问题的
以下是poll脚本(ruby)
module XEN
CONF={
‘XM_POLL’ => ‘sudo /usr/sbin/xentop -bi2’
}
def self.get_vm_info(vm_id)
data = get_all_vm_info[vm_id]
if !data
return {:STATE => ‘d’}
else
return data
end
end
def self.get_all_vm_info
begin
text=`#{CONF[‘XM_POLL’]}`
lines=text.strip.split(“\n”)
block_size=lines.length/2
valid_lines=lines.last(block_size)
domain_lines=valid_lines[4..-1]
domains=Hash.new
domain_lines.each do |dom|
dom_data=dom.gsub(‘no limit’, ‘no-limit’).strip.split
dom_hash=Hash.new
dom_hash[:name]=dom_data[0]
dom_hash[:state]=get_state(dom_data[1])
dom_hash[:usedcpu]=dom_data[3]
dom_hash[:usedmemory]=dom_data[4]
dom_hash[:nettx]=dom_data[10]
dom_hash[:netrx]=dom_data[11]
domains[dom_hash[:name]]=dom_hash
end
domains
rescue
STDERR.puts “Error executing #{CONF[‘XM_POLL’]}”
nil
end
end
def self.get_state(state)
case state.gsub(‘-‘, ”)[-1..-1]
when *%w{r b s d}
‘a’
when ‘p’
‘p’
when ‘c’
‘e’
else
‘-‘
end
end
end
def select_hypervisor
hypervisor=nil
params=ARGV.clone
params.each_with_index do |param, index|
case param
when ‘–kvm’
hypervisor=KVM
ARGV.delete_at(index)
when ‘–xen’
hypervisor=XEN
ARGV.delete_at(index)
end
end
if !hypervisor
case $0
when %r{/vmm\/kvm/}
hypervisor=KVM
when %r{/vmm\/xen/}
hypervisor=XEN
end
end
hypervisor
end
def load_vars(hypervisor)
case hypervisor.name
when ‘XEN’
file=’xenrc’
vars=%w{XM_POLL}
when ‘KVM’
file=’kvmrc’
vars=%w{LIBVIRT_URI}
else
return
end
begin
env=`. #{File.dirname($0)+”/#{file}”};env`
lines=env.split(“\n”)
vars.each do |var|
lines.each do |line|
if a=line.match(/^(#{var})=(.*)$/)
hypervisor::CONF[var]=a[2]
break
end
end
end
rescue
end
end
def print_data(name, value)
if value
“#{name.to_s.upcase}=#{value}”
else
nil
end
end
def print_one_vm_info(hypervisor, vm_id)
info=hypervisor.get_vm_info(vm_id)
exit(-1) if !info
#info.merge!(get_interface_statistics(vm_id))
values=info.map do |key, value|
print_data(key, value)
end
puts values.zip.join(‘ ‘)
end
def print_all_vm_info(hypervisor)
require ‘yaml’
require ‘base64’
vms=hypervisor.get_all_vm_info
puts Base64.encode64(vms.to_yaml).delete(“\n”)
end
hypervisor=select_hypervisor
if !hypervisor
STDERR.puts “Could not detect hypervisor”
exit(-1)
end
load_vars(hypervisor)
vm_id=ARGV[0]
if vm_id
print_one_vm_info(hypervisor, vm_id)
else
print_all_vm_info(hypervisor)
end
紧急求助!
VPSEE,有一台服务器,建议客户使用64G内存,安装XEN3.0.4做虚拟化。
结果发现只能识别出32G内存!!!
查了半天也没发现任何解决办法,求救啊!~~~~
补充:安装的是64位系统,理论上识别64G内存没有任何问题!
@Brooks
和 xen hypervisor 能支持多少内存有关(当然也需要 dom0 的 Linux 是64位的)。你查一下 xen 文档,好像 xen 3.0.2 最大支持 32GB,xen 3.0.4 可以支持 128GB,我不太记得了。
centos 64G内存,安装XEN3.0做虚拟化。
结果发现只能识别出32G内存!!! 同求!