您的位置:首页 > 其它

针对VMware View 5.1 虚拟桌面出现 user profile service 问题的深度分析及解决方案

2013-04-05 01:48 501 查看
为什么会有这篇文?往往我们都会发表一些系统安装或者配置一类的文档,但刚好此文不是这个方向,而是一个多系统的Troubleshooting 实战经历。因为我在探索企业虚拟化的过程中遇到的第一个和成熟的生产系统所关联的问题,在这次的麻烦中,我花费了不少时间在互联网上查询各种资料,但一无所获!走了一些弯路,当然最终完美解决这个麻烦的时候,那种成就感是不言而喻的!来~~和我一起分享这个艰苦又愉快的过程,非常期望这篇小文能给你带来一些新的思路!
今天我们要解决的一个问题是“user profile service”错误,这个错误的表面现象是:登录windows系统时报告这个问题,并且无法正常进入窗口,也就是说无法登录windows。





先说说这个错误的意思:用户配置文件是用户的专属文件,记录了用户的界面和桌面设置等等信息,是一个非常重要的个性化文件,不同的用户有不同的用户配置文件,当用户配置文件出现问题,就会直接导致该用户无法登录专属的自定义的桌面。
这个现象出现的软件环境: windows 2008 R2的AD(物理机),VMware vSphere 5.1平台、VMware View 5.1.2 链接克隆的虚拟机 ,AD 是正在生产环境中的。
链接克隆的虚拟桌面,在普通用户第一次登录到域时没有任何问题,当关机或者重启或注销后再次登录,就会出现 UPS 的错误。第一反映肯定是 “百度一下”啦!答案确实不少,但基本就是一种,说是因为注册表问题导致的,需要修改注册表相关项目,我也看了看出现问题的虚拟机注册表,并没有和其文章中相同的地方,说明在我的虚拟桌面环境下的问题和普通物理电脑相同问题不一样。
我通过View Administrator 重置虚拟机,也就是将虚拟机恢复到初始状态,用相同的用户登录域,没有出现问题,正常。但当我再次重新启动虚拟机后问题又出现了。通过N次尝试和验证后,我判定这个问题和用户登录后所产生的内容有关系,那什么内容才会在用户登陆后影响到user profile文件呢?我想到的第一个可能性就是—组策略!我们的AD上有很多条组策略,会不会是其中一条引起的呢? 开始排查。。。。。。。。
又经过经过几天的观察和上百次的重启和测试,最终发现有一条组策略会引起这个问题:





为什么会是这样的组策略导致UPS错误?这个组策略不是禁止移动磁盘的吗?比如USB,移动硬盘之类的东西?和我们的UPS有什么关系呢?我们的UPS是保存在系统的USER文件夹下的,比如这个路径: C:\Users\,和移动磁盘有什么关系呢?
首先要知道这么一个事,VMware View的链接克隆中的永久磁盘就是保存个人资料的,包括UPS的文件。所以,在链接克隆的桌面上,我的UPS文件实际路径是 D:\Users\,是D: 不是C: 。好啦,那这个D和C又和移动磁盘的关系是什么呢?因为我们创建虚拟机时默认的磁盘控制器不是IDE,而是 SCSI




链接克隆自动产生的虚拟磁盘也是SCSI控制器上的SCSI磁盘:





而SCSI设备是具备热插拔特点的,而且速度快性能好,客户机中可安装多达近50个磁盘,这些都是IDE设备不具备的,所以默认是SCSI 。
但这样的磁盘在windows7中归属于移动存储设备!
从虚拟桌面的右下角可插拔移动设备的图标中我们也可以看出这个特点:





红框里我的几个虚拟磁盘全部是SCSI磁盘,这些磁盘是用户无法弹出的,当你尝试弹出会有相关提示:





OK,问题已经搞清楚了,就是因为AD上用户策略中的禁止移动存储设备组策略导致D:\Users\ 这个用户配置文件无法访问造成的,那我们怎么来解决这个问题?
首先,我最希望是通过另外的方法来解决禁止移动存储设备。于是我查阅了所有WIN7禁止USB设备的方法,发现很多方法都不怎么样,不是修改注册表就是修改某个windows文件,还有阻止安装驱动的组策略。很明显和现在这个用户组策略相比来说都缺乏灵活性,实施性也比较差。那UPS问题怎么解决?
思路再次回到组策略上,认真研究相关组策略,发现这么一个内容:





自定义类别,没错,现在我们的组策略是禁止所有移动存储设备,那我们能不能有针对的来禁止呢?比如我就只禁止USB方式的移动存储设备?答案是可以!
首先,我们要清楚这个组策略应该怎么配置才是正确的,看下图:





我们很清楚的看见它是通过定义GUID来实现对具体设备的管控。
那什么是GUID?
GUID的概念。

全球唯一标识符 (GUID) 是一个字母数字标识符,用于指示产品的唯一性安装。在许多流行软件应用程序(例如 Web 浏览器和媒体播放器)中,都使用 GUID。

GUID 的格式为“xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx”,其中每个 x 是 0-9 或 a-f 范围内的一个十六进制的数字。例如:6F9619FF-8B86-D011-B42D-00C04FC964FF 即为有效的 GUID 值。

好,有了这个概念,那我们来查一下USB和SCSI控制器的GUID吧,经过一番搜索,得到一下结果:
Disk Drives

Class = DiskDrive

ClassGuid = {4d36e967-e325-11ce-bfc1-08002be10318}

This class includes drivers of hard disk drives. See also the HDC and SCSIAdapter classes.

USB

Class = USB

ClassGuid = {36fc9e60-c465-11cf-8056-444553540000}

This class includes system-supplied (bus) drivers of USB host controllers and drivers of USB hubs, but not drivers of USB peripherals.

未了避免上当受骗,在我们虚拟机中验证一下这些参数是否正确:
(当然,大家也可以在你的物理机上来验证一下,因为我们的域控组策略不光要应用在虚拟机里,还有物理机,要保证他们都是可行的!)





SCSI适配器的GUID和搜索到的结果是匹配的,没有错!





OK,USB 属性也是正确的,没有错,那我们要禁止的就是这个设备,而不是SCSI控制器!

好了,最后一步,优化组策略:
在组策略中导航到: 用户配置-----管理模版-----系统-----可移动存储访问







在这个自定义的拒绝方案中点击“显示”,将USB的GUID输入:



好了,完成两个自定义组策略后,发布新的GPO链接 ~~大功告成!!
这个解决方案既满足了我们WIN7环境下USB的灵活管理,也解决了令人心烦的 user profile service问题,我对此非常满意!!

信息中心

王茂樨

本文出自 “西哥” 博客,请务必保留此出处http://wangmaoxi.blog.51cto.com/4427520/1171267
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐