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 到远程服务器中。