如何处理虚拟机VNC登录异常

Panda_Master 2015-03-06 05:46:50

【故障类型】:兼容性问题
【关 键 词】:VNC登录异常 CNAnot read byte
【适用版本】:FusionCompute V100R003C00各版本
【问题现象】:
在CSB的用户中心,单击“访问云服务器”按钮,无法弹出VNC界面,VNC访问云服务器失败。错误提示为“连接错误:CNAnot read byte 是否重新连接”。
【告警信息】:无
【问题分析】:
1. 在FusionCompute界面上,通过VNC登录问题虚拟机,可以正常访问,说明虚拟机本身正常运行。
2. 通过mstsc方式远程访问虚拟机,同样可以正常访问,说明目标虚拟机业务网络正常。
3. 在CSB用户中心中访问云服务器时,会经过SSM虚拟机,即访问目标虚拟机A时,虚拟机A发出的报文会经过SSM虚拟机转发后抵达客户端。
4. 登录SSM虚拟机所在的CNA节点,将SSM虚拟机后端网卡的tx-checksumming属性关闭后(关闭方法参见解决方法),再次从CSB用户中心中访问云服务器,可以正常弹出VNC界面,问题消失。
确认问题出现的原因是:CNA节点上的物理网卡聚合方式是frag_list,而这种聚合方式下netback不支持将大包送往虚拟机,会做分片。分片时由于报文的checksum是partial,不计算checksum。虚拟机收到报文后,如果checksum是partial,会把partial改为checksum_unnecessary,并不做checksum。报文转发之后经过CNA节点上的物理网卡,物理网卡发现是unnecessary,也不会做checksum。这样到达客户端的是属性为checksum_unnecessary并且checksum是错误的报文,客户端会视为异常报文,所以出现无法弹出VNC界面的问题。
【解决方法】:
1. 登录SSM虚拟机所在的CNA节点,执行virsh list,查询该节点上虚拟机信息。
本例中可以看到SSM虚拟机对应的Id为4。
图1-106 virsh list


2. 执行virsh dumpxml Id | grep -E "mac address|vif pci"(Id为上一条命令查询到的结果,即数字4),查询到虚拟机mac地址和vif pci的对应关系。
如果虚拟机有多张网卡,会显示多条记录,如图1-108所示,可以根据虚拟机中网卡mac地址信息找到对应的vif pci值,从而得到虚拟机收包网卡的后端网卡名称:vif{Id}.{vif pci},图1-108中虚拟机有vif9.0和vif9.1两个后端网卡。本问题中只有vif4.0一个后端网卡。
图1-107 对应关系

3. 执行ethtool -k vif4.0,查看虚拟机后端网卡的高级属性,可以看到tx-checksumming属性是开启的。
图1-108 开启状态


4. 执行ethtool -K vif4.0 tx off,将转发虚拟机后端网卡的tx-checksumming属性关闭,使虚拟机操作系统对报文做校验,消除checksum异常的问题。
【总结&建议】:无。
...全文
843 1 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
程序员鼓励师 2015-03-08
  • 打赏
  • 举报
回复

926

社区成员

发帖
与我相关
我的任务
社区描述
华为云计算论坛,提供全面深入的云计算前景分析、丰富的技术干货、程序样例,分享华为云前沿资讯动态,方便开发者快速成长与发展,欢迎提问、互动,多方位了解云计算!
社区管理员
  • 华为云计算社区
  • 海洋 之心
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧