标签 XenServer 下的文章

xenserver平台,centos7的vm,在更新完5.14内核后重启会提示如下错误:

[ OK ] Reached target Basic System.
dracut-initqueue[227]: Warning: Counld not boot.
dracut-initqueue[227]: Warning: /dev/mapper/centos-root does not exist
dracut-initqueue[227]: Warning: /dev/centos/root does not exist
dracut-initqueue[227]: Warning: /dev/centos/swap does not exist
             Starting Dracut Emergency Shell ...
Warning: /dev/mapper/centos-root does not exist
Warning: /dev/centos/root does not exist
Warning: /dev/centos/swap does not exist 

但是,在5.12之前的内核是没有问题的,这是因为在新的内核里xen平台的两个模块没有加入到启动镜像里,重新生成一下启动镜像即可。

cd /boot/
dracut -v -f -H -k /usr/lib/modules/5.15.11-1.el8.elrepo.x86_64/ --add-drivers "xen-blkfront xen-netfront dm-mod" initramfs-5.15.11-1.el8.elrepo.x86_64.img 5.15.11-1.el8.elrepo.x86_64

注意:更新内核后,网卡名称会变成espXX这样的名字,如果之前是用ethX这样命名网卡,那就需要添加net.ifnames=0 biosdevname=0参数,否则,这两个参数就不需要添加。在GRUB_CMDLINE_LINUX=后面添加 net.ifnames=0 biosdevname=0
修改后的应该如下

GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet net.ifnames=0 biosdevname=0"

一、前期概述
典型的BS架构应用,搭在Ctrix XenServer7.5的平台上,项目共有4台物理机做虚拟化平台,没有做pool,都是独立服务器,共同连接一个光纤存储。在虚拟化平台上开了若干个应用服务器,一个文件服务器,应用前端用负载均衡设备做分发,文件服务器的数据盘挂载在光纤存储上。
二、故障
故障发生在虚拟化平台上,4台虚拟化平台中的一台机器主板损坏,导致其与光纤存储的连接中断,由于给文件服务器的数据盘划分了1.8T的空间,单个存储的LUN为16T,管理员对文件服务器做了多次快照,导致该存储上的虚拟磁盘较多。正好赶上服务器主板损坏,造成了存储上的虚拟磁盘混乱,具体表现为:在其他三台服务器上重新扫描该存储失败,提示:SM has thrown a generic python exception,只有一台可以正常扫描。因为事发紧急,没有及时处理该问题,更换服务器主板后,重新上线,仍然无法连接该存储。经过2周左右,唯一可以正常连接存储的那台服务器也无法连接了,存储与服务器彻底断开了。忘记该存储SR后重新创建,提示错误。
lun-unplug.png
三、解决方案
网上找到了https://blog.51cto.com/zhangyu/1184910 这篇文章,找到了解决问题的思路。
ssh到xenserver的主机上,查看pv、vg、lv,该16T的磁盘都可以看到,但是所在vg没有激活,所在vg的lv很多,其中有几个inflate_开始的lv,看起来比较奇怪。删除这些异常的lv后,应该就可以了。

vgchange -ay VG_XenStorage-0c405034-a99e-68d8-523e-c061097b7d3f --config global{metadata_read_only=0}

激活该vg,这时候就可以对该vg的lv进行操作了

lvremove /dev/VG_XenStorage-0c405034-a99e-68d8-523e-c061097b7d3f/inflate_* --config global{metadata_read_only=0}

删除这些异常的lv后再重新创建SR,就可以顺利通过了。
操作完成后,重启一下所有xenserver服务器,就可以全部正常挂载了。

一、设置Xenserver的pool开机自动启动

[root@leeyc ~]# xe pool-list
uuid ( RO)                : 6540abd5-70c3-8fd5-f553-50e40222545d
          name-label ( RW): 
    name-description ( RW): 
              master ( RO): 0fee7db4-2457-42dd-8535-b66a56c28b7b
          default-SR ( RW): a3db85aa-4f52-b5f4-c690-aa155684f7ca

[root@leeyc ~]# xe pool-param-set uuid=6540abd5-70c3-8fd5-f553-50e40222545d other-config:auto_poweron=true
[root@leeyc ~]#

二、设置虚拟机VM开机自动启动

[root@leeyc ~]# xe vm-list
uuid ( RO)           : 23f7044a-c95c-7b36-a9b8-d858fbadd94b
     name-label ( RW): brctl
    power-state ( RO): running


uuid ( RO)           : a033d4c1-82d2-4915-eb5b-d092f06b897b
     name-label ( RW): pfsense
    power-state ( RO): halted
[root@leeyc ~]# xe vm-param-set uuid=23f7044a-c95c-7b36-a9b8-d858fbadd94b other-config:auto_poweron=true
[root@leeyc ~]# 

三、取消虚拟机开机自动启动

[root@leeyc ~]# xe vm-param-remove uuid=23f7044a-c95c-7b36-a9b8-d858fbadd94b param-name=other-config param-key=auto_poweron
[root@leeyc ~]# 

注意:即使是单台主机,也必须执行第一步,设置pool自动启动,否则,VM不能自动启动。以上设置在XenServer7.5上执行通过。