XenServer 常见故障处理

XCP-NG 安装系统后需要做的操作:

xe-switch-network-backend bridge
sed  -i 's/^PRODUCT_BRAND=.*$/PRODUCT_BRAND=XenServer/g'  /etc/xensource-inventory
xe-toolstack-restart

提高宿主机网卡性能,由默认的 OpenvSwtich 改为桥接模式

xe-switch-network-backend bridge

重启系统后生效

XenCenter最新版连不上 XCP-NG 主机

解决办法:

  • 使用 XCP-Center 最新版
  • 修改 XCP-ng 的 配置文件,并重启服务。 之后就可以正常连接了。
    将 PRODUCT_BRAND='XCP-ng' 修改为 PRODUCT_BRAND='XenServer'
sed  -i 's/^PRODUCT_BRAND=.*$/PRODUCT_BRAND=XenServer/g'  /etc/xensource-inventory
xe-toolstack-restart

手动创建本地存储

将 sdb 创建为 SSD 标识的本地存储:

host=$(hostname)
disk='/dev/sdb'
uuid=$(xe host-list name-label=$host |grep  uuid | awk '{print $NF}')
xe sr-create host-uuid=$uuid shared=false type=lvm content-type=user device-config:device=$disk name-label="Local storage SSD"

XenServer 无法启动高版本的内核

XenServer 6.5 7.0 无法安装 Ubuntu 18.04 ,启动后在第一屏按F6,选择 edd=on 和 nolapic ,之后可以继续正常启动。

如果是已安装的系统,可以在 /etc/default/grub 文件中 GRUB_CMDLINE_LINUX 这一行加上

edd=on nolapic

不过使用这个参数后,虚拟机将变成单核。

参考:
https://askubuntu.com/questions/1029986/installation-of-18-04-bionic-fails-on-xenserver7

磁盘空间满

常见于 XenServer 6.5 ,Dom0 只有 4G 空间,系统一不小心就写满了。
尤其容易出现在 tapdisk 日志 logrotate 处理时,程序容易卡死,造成空间 100%,从而引起虚拟机 CPU 负载过高等异常。
处理方法:

#!/bin/bash

UUID=`xe host-list name-label=$HOSTNAME params=uuid --minimal`
threshold=78    
diskUsage=`df -h | grep "/$" | head -n 1 | awk {' print $5 '} | sed -n -e "s/%//p"`

kill_hang_and_free_disk() {
  ls -l /proc/[0-9]*/fd/* | grep -oP '(?<=/proc/).+(?=/fd/.+tapdisk.+deleted)' | xargs kill
  rm -rf /var/log/*.gz
}

clean_old_patches() {
  PATCHLIST=`xe patch-list | grep "uuid ( RO) " | awk '{print $5}'`
  for UUID in $PATCHLIST; do echo "Cleanup patch $UUID"; xe patch-pool-clean uuid=$UUID; done
}

if [ $diskUsage -gt 75 ]; then
    rm -rf /var/log/*.gz
    clean_old_patches
fi

if [ $diskUsage -gt $threshold ]; then
    kill_hang_and_free_disk
    clean_old_patches
    xe message-create host-uuid=$UUID name="ROOT DISK USAGE" body="Disk space use has exceeded $diskUsage on `echo $HOSTNAME` " priority="1"
fi

把此脚本加入到 crontab ,每 10 分钟检测一次 。

xen 6.5 还可以删除 iso 文件,进一步释放空间

rm -rf /opt/xensource/packages/iso/*.iso

虚拟机无法关闭,也无法强制关闭

检查 dom0 的磁盘空间,如果发现磁盘空间满,清理磁盘空间。
执行 xe-toolstack-restart 命令重启服务。

异常关闭虚拟机,再次启动报错: the uuid you supplied was invalid

解决办法: xe-toolstack-restart 无效,重启物理机后,虚拟机正常启动。

死活关不掉虚拟机,以上办法都不管用

解决办法: list_domains 命令,根据 uuid 查到 虚拟机对应的 id编号, 再执行
/opt/xensource/debug/destroy_domain -domid 编号

vm 的 uuid 为 7a437137-d9a9-af48-a29c-eea847988911
[root@srv ~]# list_domains
id |                                 uuid |  state
 0 | df6e45ba-99dc-4acd-b1f1-7b1a88394677 |     R
 1 | 38ba0dcc-90f6-3a8d-bcd6-563124f23d58 |    B
 2 | 0704c80f-3082-5a04-a643-317dee21c86e |    B
72 | 45ec465c-9975-ceaf-6441-6fb83473fd71 |    B H
91 | 6c478abb-8643-c257-a502-e980ccd63c11 |    B H
92 | 7a437137-d9a9-af48-a29c-eea847988911 |  S   H
[root@srv ~]#/opt/xensource/debug/destroy_domain -domid 92

Xen dom0 swap 使用量偏高

xe-toolstack-restart

执行此命令不影响正在运行的虚拟机

XenServer 7.3 和以后的版本,免费版只支持 3 台物理机

解决办法:

  • 使用 7.2 版本
  • 购买授权
  • 考虑迁移到 XCP-ng 7.4.1+
  • 考虑迁移到 Ovirt、OpenStack、ProxmoxVE

宿主机只接两根网线做成绑定+ trunk 的高可用

(需 XenServer 7.4 或 XCP-ng 7.4.1 及以上版本)
宿主机接两跟网线,做成绑定,同时打 trunk,接入到交换机,这样的好处可以做成网络高可用,同时节省布线。
在可用性要求不高或是测试环境中,可以只接入eth0 一根网线,操作步骤不变。

实施步骤:

1. 统一规划宿主主机的eth0 和 eth1 接入交换机,打 trunk。假设管理网段为 vlan 2 。
2. 在每一台宿主机正常安装系统,每台网络配置IP地址的时候,选择 eth0,vlan 2。
3. 临时将Master节点的管理网口接入 eth3,并通过 XenCenter 远程管理。
将Master的 eth0 和 eth1 做成 bond0+1,并在 bond0+1 上增加vlan2 的网络。
4. 在 XenCenter 上将Master的管理口从eth3 改到  bond0+1 的 vlan2。
此时会导致Master 短暂连接不上。操作成功后不再需要 eth3 的网线。
5. XenCenter 重新连接Master后,把其他从节点拖到此集群中。
加入之后,所有从节点网络短暂不可用,需要逐台重启系统。

以上步骤理论上通过命令行也可以实现,具体方法如下:

xe network-create name-label=”Bond0”
xe network-list name-label=”Bond0”
xe bond-create mode=balance-slb network-uuid= pif-uuids=,,

参考

https://support.citrix.com/article/CTX230616

PV 模式的虚拟机转化为 HVM

老的系统为 PV 模式,如下命令可以转化成 HVM 模式
https://xen-orchestra.com/forum/topic/260/convert-xen-orchestra-appliance-pv-to-hvm/3

name=centos-vm
xe vm-list name-label=$name params=uuid

uuid=c22396a2-9544-51d8-697b-b76a11378447
xe vm-param-set uuid=$uuid HVM-boot-policy="BIOS order"
xe vm-param-set uuid=$uuid PV-bootloader=""
xe vm-param-set uuid=$uuid PV-args=""

xe vm-disk-list uuid=$uuid

xe vm-disk-list uuid=$uuid | grep VBD -A1 | grep ^uuid| awk '{print $NF}'


# 系统盘的 vdb-uuid
xe vbd-param-set uuid= bootable=true


拯救无法启动的 CentOS6

CentOS 6 系统是 PV 模式,先转化成 HVM模式,再挂载安装盘的iso镜像,属性里面选择优先从光盘启动,进入 rescure 模式。
将系统只读挂载到 /mnt/sysimage 目录, 检查磁盘问题。

chroot /mnt/sysimage
umount /dev/mapper/VolGroup_lv_root

# 只读挂载时,可以不卸载也可以 fsck
fsck -fy /dev/mapper/VolGroup_lv_root
exit
reboot

如果重启后还是无法启动,则可以通过resucre 模式, 设置网络,chroot 进系统,把文件rsync 到远程服务器中。

你可能感兴趣的:(XenServer 常见故障处理)