VMware虚拟机操作系统日志Error in the RPC receive loop解决


云计算、虚拟化是近几年信息化领域比较流行的概念。随着国内对于这些理念的深入,新一代虚拟机、虚拟化环境已经越来越出现在我们日常环境中。虚拟机灵活和快捷的部署管理方式,也逐渐被运维领域所接受。

在实践领域中,我们在使用虚拟化环境同样面对一些新的问题和故障,需要我们重新进行学习探索,才能跟上发展进程,解决企业中实际问题。

本文记录了笔者在管理维护一台Windows虚拟机(建立在VMware)遇到的小问题,记录下来,留待需要的朋友待查。

1、问题简述

笔者在安装维护一台Windows服务器,运行版本为2008 R2。服务器是建立在VM Ware虚拟机环境下的,资源分配和管理都通过VM Ware控制台进行。由于服务器用途因素,笔者进行了额外的安全加固操作和日志检查操作,结果发现日志中有如下Warning信息。

VMware虚拟机操作系统日志Error in the RPC receive loop解决

与Linux/AIX的文本日志方式不同,Windows的日志都是以二进制方式保存和展现出来的,并且划分为不同的类型进行组织。从上面截图可以看到,在应用程序Application类型中,系统以很高的频度(每秒两条)生成Warning级别的日志信息。Application类型日志一般是应用程序输出写入到操作系统层面的日志内容。

Source列提示内容表示是哪个应用程序写出的日志内容。这列我们确定日志来源于VMWare Tools。

2、问题分析

VMWare Tools是VMWare虚拟机的一个可选件。较新的一些版本中,将VMWare Tools作为虚拟机的一个必装版本。简单的说,VMWare Tools就是一个嵌入到虚拟机操作系统层面插件工具。主要职责是负责改善硬件兼容性、交互方式体验。如果我们将虚拟机比作容器中运行的单位,VMWare Tools就是两者沟通的重要组件。

落实在本次的错误案例,我们可以发现故障日志主要内容如下:

[ warning] [vmusr:vmusr] Error in the RPC receive loop: RpcIn: Unable to send.

笔者对这个错误没有任何经验,从提示内容和故障频率看,好像是vmware tools在持续的连接发送RPC信息。但是这个调用过程没有成功完成。一度笔者怀疑过是不是在加固操作系统过程中将RPC端口封闭,但是事后确认并不是这个问题。

3、问题分析与解决

通过查询资料,从VMWare官方中寻找到了故障分析和原因。这个日志现象在Windows和Linux环境中都有可能出现。官方对于问题的解释如下:

Cause

This issue occurs when the VMware Tools daemon (vmtoolsd) handles more than two Terminal Sessions. When a user connects to a Windows virtual machine, each terminal session should have one vmtoolsd running; however, vmtoolsd is limited to only two sessions running simultaneously.

Thus the Windows Application Event log fills up with warning messages similar to this until the total connection count is >2  per session:

简单地说,这个问题是在同时多个用户连入到虚拟机的情况下出现。每当一个用户使用vmtool连入到虚拟机时候,后台虚拟机都会分配一个后台守护进程vmtoolsd与之匹配。如果多个用户同时连入到系统中,或者使用remote desktop连接时没有正式推出而是简单关闭界面,都会引起这个问题。而vmtoolsd进程的同时运行限制是2个会话。

当出现这种情况的时候,vmtools就会写入操作系统一条warning级别信息。

那么,需要确定当前连接用户数量,以及是不是有多于一个vmtoolsd同时工作的情况。一个偶然的场景,笔者查看了任务管理器,发现了端倪。

VMware虚拟机操作系统日志Error in the RPC receive loop解决

在任务管理器,的确有多于一个vmtoolsd.exe连接,对应着笔者建立的多个系统用户。这个是由于笔者在创建用户的时候,分别使用远程桌面进行测试,之后没有退出造成的。

发现了问题原因,就可以着手解决。VMWare官方解决的思路是:如果出现日志过多过于频繁,可以将warning级别的日志开关关闭,不写入到操作系统中即可。

关闭日志主要通过配置文件完成。在Windows 7、2008平台上,日志配置目录为:C:\ProgramData\VMware\VMware Tools\。而在早期的Windows版本中,目录路径为C:\Documents and Settings\All Users\Application Data\VMware\VMware Tools\。

在Linux平台中,配置目录为:/etc/vmware-tools/tools.conf。

在对应目录上,配置文件名称为tools.conf。如果文件不存在,可以自己创建出一个目录进行配置。笔者在服务器对应目录中没有这个文件,首先创建出来。

[img]http://blog.itpub.net/attachment/201408/30/17203031_1409392070hs9S.jpg[/img]

在文件中写入如下内容:

[logging]

vmusr.level = error

vmsvc.level = error

之后重新启动vmtools services,并且确保多用户连接被断开,配置生效。笔者选择重新启动服务器。之后问题解决。

4、结论

随着虚拟化在运维环境中广泛引用,相信会有越来越多的虚拟化相关故障出现和解决。

VMware虚拟机中调整Linux分区大小——使用GParted 

Ubuntu VMware虚拟机挂载移动设备传数据笔记

Windows 7下用VMware Workstation 10虚拟机安装 Ubuntu 14.04

VMWare下安装CentOS x86_64出现“kernel requires an x86_64 cpu, but only detected ”

VMware Server下安装Linux操作系统

本文永久更新链接地址:

相关内容