现在的位置: 首页 > 综合 > 正文

XEN故障与解决方法汇总

2019年05月05日 ⁄ 综合 ⁄ 共 6900字 ⁄ 字号 评论关闭

 

注意事项:
1、稳定的物理硬件环境,由于虚拟机的使用将会使多个系统运行在单个物理设备上,所以保证稳定可靠的物理系统是非常重要的,否则物理硬件的不稳定直接使多个应用受到影响。
2、Xen主机必须保持洁净,也就是说不应该在xen主机上安装任何的应用程序,因为xen上管理器管理着domU,如果xen主机出现故障,那么将直接导致本机上所有的domU受影响。
3、Xen客户机的MAC地址如果不指定的话是由主机随机分配的,此随机的地址是从IEEE分配给XenSource的的范围内选取的。在大的局域网内部应该做好规划,手工分配MAC地址并做好记录,防止随机生成相同的MAC而影响应用的正常。
4、生产环境中压力较大在应用尽量不使用镜像文件来安装系统,因为这样系统的性能会比较差,但是压力小的应用则可以考虑使用文件作为存储介质,这样方便转移数据和备份,在使用文件作为安装介质的过程中发现有时候安装会非常慢,有待进一步确认原因。
5、虚拟客户机的时钟是模拟的,如果出现时间不准确的情况,使用ntpdate前应该先检查物理机器的时间是否准确,校准物理机器的时间后再校正虚拟客户机的时间。同时如果客户机的时间设置得比物理机的内存快,ntpdate可能会不成功,此时需要用date命令将客户机的时间调整为比物理主机慢,则客户机自动会校准时间了。如果客户机的时间快过物理主机的话客户机的时间是不会变的,直到物理主机的时间跟他相同的时候才会继续走。
6、调整虚拟CPU个数的过程中,不能将虚拟CPU个数设置为大于物理CPU核数,也不能将cpu个数调到超过虚拟机初始启动的时候的值,所以在启动虚拟机前应该做好CPU使用的规划。
7、进行在线迁移的时候,源机与目标机器的配置文件应该是相同的
8、虚拟主机的路由应该写在/etc/init.d/xend中,写在/etc/init.d/network文件中将不生效。
9、Xen的配置文件名不应该含义“.”,否则可能导致启动应用的时候起不来
10、64位RHEL5U2系统中XEN主机进行ntpdate校准时间的时候,如果此时有客户机运行并且主机时间与当前准确时间有较大偏差(比如数小时),可能导致客户机停止响应,不能正常关闭或创建虚拟客户机,不能正常安装虚拟客户机等情况,出现此情况暂时未发现较有效的解决方法,只能重启物理服务器。所以在安装客户机前最好进行一次时间校准,防止出现此情况
11、现发现XEN客户机中的时间跟主机时间会存在数秒到数十秒的差距,并且无论如何调整时间都不能调整为相同的情况,对于时间要求非常精确的应用请注意,此问题可能为一个bug,现阶段已有一个临时解决方法,首先手工调整虚拟主机时间,调整为当前时间前或后的几分钟,然后用ntpdate重新同步校正时间,即可让主机时间与客户机时间保持一致,如果此时客户机时间比主机时间偏慢,客户机时间将自动同步为正确时间,如果客户机时间比主机时间偏快,则客户机时间将暂停,直到主机时间与其相同后再继续。
12、默认情况下,xen的客户机跟主机的时间是同步的,如果需要客户机可以随意调整时间,那么可以在客户机上执行下面的命令,就可以让XEN客户机不同步主机时间了
echo 1 > /proc/sys/xen/independent_wallclock
然后就可以自由设置时间了,客户机重启后还是会同步主机时间
要让这个配置开机有效可以将上面的命令加入/etc/rc.local
或添加下面的配置到/etc/sysctl.conf中
xen.independent_wallclock  = 1
1、Hint to configure libvirt without bothering qemu errors in xen
This is not a bug, but annoying
Since I have xen and no kvm the qemu dirvers report errors all the time - This may help everyone with the same setup.
libvir: QEMU error : connect: /usr/local/var/run/libvirt/qemud-sock: No such file or directory 
libvir: warning : Failed to find the network: Is the daemon running ?
libvir: error : library call virConnectNumOfNetworks failed, possibly not supported libvir: error : library call virConnectNumOfDefinedNetworks failed, possibly not supported 
[..]
The last two lines are printed every second!
To "unconfigure" qemu and therefore prevent these message flooding use
./configure --without-qemu
simple but useful ;-)
 
2、系统日志中大量如下警告:
Dec  2 16:11:08 gamebbs2 snmpd[1056]: Received SNMP packet(s) from UDP: [192.168.239.93]:-13093
Dec  2 16:11:08 gamebbs2 kernel: audit(1228205468.528:120): avc:  denied  { read append } for  pid=1056 comm="snmpd" name="snmpd.log" dev=dm-0 ino=3717987 scontext=system_u:system_r:snmpd_t:s0 tcontext=user_u:object_r:var_log_t:s0 tclass=file
Dec  2 16:11:08 gamebbs2 snmpd[1056]: Received SNMP packet(s) from UDP: [192.168.239.93]:-13092
Dec  2 16:11:08 gamebbs2 kernel: audit(1228205468.940:121): avc:  denied  { read append } for  pid=1056 comm="snmpd" name="snmpd.log" dev=dm-0 ino=3717987 scontext=system_u:system_r:snmpd_t:s0 tcontext=user_u:object_r:var_log_t:s0 tclass=file
Dec  2 16:16:15 gamebbs2 snmpd[1056]: Received SNMP packet(s) from UDP: [192.168.239.93]:-12384
原因是开启了selinux,snmp的日志文件因受selinux保护,snmp不能正常写入,解决方法有几种:
(1)停止snmpd,删除snmpd日志文件,再启动snmpd即可恢复,不过此方法处理后可能在下次重启系统后仍然会出现这个情况。
(2)直接关闭selinux(setenforce 0)
(3)修改selinux的策略(selinux不熟,哪位高手提供一下方法)
 
3、网卡lo流量很高
   初步估计与IPv6有关,关闭IPv6支持,重启系统后恢复
   vi /etc/modprobe.conf  加入下面两行
alias net-pf-10 off
alias ipv6 off
 
4、ssh远程连接到服务器后进行操作会停顿,在控制台相接操作没有此情况
   初步估计与IPv6有关,关闭IPv6支持,重启系统后恢复
   vi /etc/modprobe.conf  加入下面两行
alias net-pf-10 off
alias ipv6 off
   另可能与网卡流量限制有关,查看网卡流量限制
tc qdisc show dev eth0
 
5、在rh5u2前的系统上安装Fedora10作为DomU不成功
   可能是python-virtinst包版本过低,可以尝试更新此包再安装。
 
6、在XEN主机上,写在/etc/init.d/network上的路由不生效,但是改为非虚拟系统的时候正常
   因XEN系统中启动网络的方法与非虚拟主机系统有些不同,具体可以参考XEN相关文档,将路由写到/etc/init.d/xend中即可正常生效
 
7、ssh连接domU可以正常连接,使用xm console domname连接domU的控制台的时候报如下错误:
xenconsole: Could not read tty from store: No such file or directory
某些客户机还可能出现无法启动的现象。
可能是xend进程有问题,可以考虑重启xend进程:
/etc/init.d/xend restart
 
8、安装domU过程中,在输入客户机IP后不能获取到安装源的数据,使用DHCP获取不到地址
查看dom0中网络配置情况,检查是否domU连接到了错误的网桥上
brctl show
如果是,修正vif连接到的网桥,用brctl命令进行删除和添加
例如:
#brctl show   #查看网络连接情况
#xm list   #查看该DomU所的ID来确定vif号码(ID号与vif号相同)
#brctl delif virbr0 vifx.0 #从错误的网桥中删除vifx.0(x.0中x为ID编号,0表示第一块网卡,下同)
#brctl addif xenbr0 vifx.0 #在正确的网桥中加入vifx.0
#brctl show   #检查最终结果
 
9、安装客户机过程中跨网段安装失败
   首先检查安装客户机的时候配置的网络,客户机网络与主机网络应该相同,同时主机与安装服务器够连通,并且客户机设置的网关应该为该客户机所配置网段连通安装服务器的路由网关,可能不是默认网关,对于系统安装服务器与xen主机之间跨网段的情况网关设置非常重要。如果使用DHCP来安装客户机,通常可能会遇到此情况。
 
10、64位的RHEL5U2机器,安装客户机,重启客户机等都会卡住,在check image附近
初步估计为在有客户机运行期间,主机的时间跟实际时间有较大的差距的情况下运行了ntpdate的原因,如果已经运行了该命令,暂时未发现较好的解决方法,只能重启物理服务器。
如果还未运行客户机,可考虑先关闭客户机,再运行ntpdate校准,然后再启动客户机。
 
11、在单台物理XEN主机上同时进行两个虚拟客户机的安装可能会出现冲突,导致系统无响应
 
12、用virt-install安装客户机的时候报如下错误:
virDomainCreateLinux() failed XML description for domain is not well formed or invalid
Domain installation may not have been
 successful.  If it was, you can restart your domain
 by running 'virsh start new216'; otherwise, please
 restart your installation.
Mon, 09 Mar 2009 14:57:22 ERROR    virDomainCreateLinux() failed XML description for domain is not well formed or invalid
Traceback (most recent call last):
  File "/usr/sbin/virt-install", line 502, in ?
    main()
  File "/usr/sbin/virt-install", line 462, in main
    dom = guest.start_install(conscb,progresscb)
  File "/usr/lib/python2.4/site-packages/virtinst/Guest.py", line 813, in start_install
    return self._do_install(consolecb, meter)
  File "/usr/lib/python2.4/site-packages/virtinst/Guest.py", line 834, in _do_install
    self.domain = self.conn.createLinux(install_xml, 0)
  File "/usr/lib64/python2.4/site-packages/libvirt.py", line 573, in createLinux
    if ret is None:raise libvirtError('virDomainCreateLinux() failed', conn=self)
libvirtError: virDomainCreateLinux() failed XML description for domain is not well formed or invalid
出现此报错应该是主机系统在启动的时候有起libvirtd服务,但是后来关闭了,而virt-install工具在进行客户机系统安装的时候错误地将客户机的网卡连接到libvirtd服务起的网桥virbr0上,此时libvirtd是关闭的,所以virbr0也不存在了,就出现了上面的错误信息。
解决方法有两个:
(1)、启动libvirtd服务后重新用原来的virt-install命令安装客户机操作系统;
#/etc/init.d/libvirtd start
(2)、在原来的virt-install命令后面加-b参数指定需要连接的网桥,如果未调整网络,一般默认的网桥应该为xenbr0
要查看网桥的名称可以使用brctl命令查看
#brctl show
[root@XenHost ~]# brctl show
bridge name     bridge id               STP enabled     interfaces
xenbr0          8000.feffffffffff       no              vif5.0
                                                        vif4.0
                                                        vif3.0
                                                        vif2.0
                                                        peth0
                                                        vif0.0
  此处我们已经关闭了libvirtd服务,剩下的网桥的名称为xenbr0(如果创建了多个网桥,选择自己需要的网桥名称)
#virt-install -n kiro-test -r 256 --vcpus=1 -f /data/rh5 --nographics -p -d -l "http://192.168.0.1"  -b xenbr0
 
13、虚拟客户机关闭后内存不能自动回收
只要在主机上执行下面的命令即可:
xm mem-set 0 mem-value #其中mem-value为大于或等于实际空余内存的值,此时,系统将回收全部可用的内存
 
14、虚拟主机跟虚拟客户机的时间对不上,主机的可以校正,客户机无论用ntpdate怎么调时间都调不准确
 
临时解决方法,首先手工调整虚拟主机时间,不管此时主机时间是否准确,只管用date命令将主机时间调整一下,随便调整为什么时间,但是最好就不要跟主机时间相差太远,然后用ntpdate重新同步校正主机时间,即可让主机时间与客户机时间保持一致并且准确了。主机时间同步完成后,如果此时客户机时间比主机时间偏慢,客户机时间将自动同步为正确时间,如果客户机时间比主机时间偏快,则客户机时间将暂停,直到主机时间与其相同后再继续。其实我们只需要用date命令修改一下主机时间即可让主机和客户机的时间达到同步,后面进行ntpdate是为了校准主机和客户机的时间而已。
 
长效解决方法,在客户机上执行下面的命令让XEN客户机不同步主机时间
echo 1 > /proc/sys/xen/independent_wallclock
然后就可以自由设置时间了,客户机重启后还是会同步主机时间
要让这个配置开机有效可以将上面的命令加入/etc/rc.local
或添加下面的配置到/etc/sysctl.conf中
xen.independent_wallclock  = 1
然后ntpdate校正客户机时间,执行此操作后客户机时间将独立于主机时间

 

抱歉!评论已关闭.