找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 8810|回复: 1

虚拟桌面无法启动

[复制链接]

10

主题

15

帖子

106

积分

注册会员

Rank: 2

积分
106
发表于 2015-7-17 14:02:03 | 显示全部楼层 |阅读模式
本帖最后由 sungirl 于 2015-7-17 14:05 编辑

故障原因
虚拟桌面无法正常启动的故障,启动报错为“The VDI is not available”,导致部分办公人员无法正常使用虚拟桌面。经过排查主要原因为虚拟机非正常关闭或虚拟机故障重启,服务器虚拟化底层XAPI服务Hung住导致XenServer重启也是其中一方面原因。
故障过程
本次桌面虚拟化无法启动故障持续了一天的时间,由于虚拟机故障数量较多,所以寻求Citrix专家进行远程修复,以下批量处理方法为Citrix专家提供。
解决方法
1 单台解决方法
1.1     找到故障虚拟机的VBD
xe vbd-list vm-uuid=故障虚拟机UUID
1.2     卸载磁盘 VDI
xe vdi-forget uuid=VDI UUID
注意:如有两块磁盘需要卸载另一块磁盘的VDI UUID
1.3     重新scanVDI所在的存储
xe sr-scan uuid=LUN UUID
1.4     将原来的VDI重新挂载到故障虚拟机
xe vbd-create vdi-uuid=XXXXXX vm-uuid= XXXXXXXX bootable=true device=0 type=Disk mode=RW
注:将此VDI重新挂载到VM
         Bootable=yes:从此VDI启动
         Device=0:第一个磁盘,如果有第二个,过程同上
         Mode=RW:此磁盘可以读写

2      多台批量处理解决方法
2.1     检索虚拟机UUID到一个文本
cat XXX.txt |grep VDI -A 2|grep uuid|awk '{print $5}' > vdi2
2.2     运行以下脚本进行批量处理有故障的虚拟机
#!/bin/bash
#the script is fixed to "The VDI is not available"
#read -p "please input your vm name:" name
for name in `cat  BZZS_vm`
do
echo "start $name -----"
export vmuuid=`xe vm-list name-label=$name|awk '/uuid/ {print $5}'|sed '/^$/d'`
export vdiuuid=`xe vbd-list vm-uuid=$vmuuid params=vdi-uuid|awk '/uuid/ {print $5}'|grep -v \< |sed '/^$/d'`
for  i in $vdiuuid
     do(
        sruuid=`xe vdi-list uuid=$i  params=sr-uuid|awk '/uuid/ {print $5}'|grep -v \< |sed '/^$/d'`;
        vbduuid=`xe vdi-list uuid=$i  params=vbd-uuids|awk '/vbd-uuids/ {print $4}'|sed '/^$/d'`;
        devicelabel=`xe vbd-list params=all uuid=$vbduuid |awk '/userdevice/ {print $4}'`;
                namelabel=`xe vdi-list uuid=$i |awk '/name-label/ {print $4}'`;
if [ -z $devicelabel ]
then
     echo "device can't empty";
     break;
else
     xe vdi-forget uuid=$i;
     xe sr-scan uuid=$sruuid;
     k=0
         while [[ `xe vbd-list uuid=$vbduuid|awk '/vm-uuid/ {print $4}'` == $vmuuid ]];do
           sleep 1s;
           ((k++));
           echo "$k"s;
         done;
     xe vdi-param-set name-label=$namelabel uuid=$i
     xe vbd-create device=$devicelabel  vdi-uuid=$i vm-uuid=$vmuuid bootable=true type=Disk mode=RW
fi
)
echo "$name finished!"
done
done
echo All VDI recovered!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表