原创 sesame.qian 2017-07-06 11:53 评论(2) 1538人阅读

平时做桌面项目的时候,很多工程师都在问我一个问题,为什么有些项目的桌面那个启动、登录速度很快,他的PPT播放、3D的效果比我这个好?但对比下他的硬件配置还不如我。

这类很明显带有最终用户使用体验的问题,我相信无论是做哪家桌面的工程技术人员其实都有遇到,当然这里面其实牵涉到的技术面有不少,从系统优化、链路优化、个人数据访问、AD系统集成、认证等等不一而足,今天我主要想来说在虚拟桌面中每个用户、工程师都会用到的Windows系统本身。今天讨论的VDA或者我们叫做虚拟桌面/云桌面,这里主要是说交付给最终用户使用的那个“东西”,不过多涉及到后台的各种交付、策略配置组件、客户端等等。

在现在的虚拟桌面市场中,大家用的最多的是Windows 7,其次是Windows Server 2008 R/2012 R2,以及现在慢慢开始被大家接受的Windows 10。

其实无论是哪个版本的操作系统,我们在交付给最终用户之前一定要对这个VDA系统做一次定制/优化。否则在我看来这就是对于客户的不尊重和不专业。

为什么这么说呢?其实稍稍了解Windows系统的朋友都知道,微软的Windows产品每一个大版本出来之后,RTM版基本没太多人上生产环境,一般都要等到出SP1之后才会逐步在市场中推广开来。做微软的圈子的人肯定都知道一句玩笑话:MS东西没出SP1你敢用吗?

这个也从一个侧面Service Pack/hotfix这种东西对于系统稳定性提升有多重要。那我们就来看看我们常用的Windows 7的发布历程:

微软于2009年10月22日正式发布了Windows 7;2011年2月22日发布了Windows 7 SP1


不查不知道,突然发觉Windows 7都已经发布8年了,SP1版本都6年半了。大家可以自己感受一下过去10年IT的变化之快速,如果今天拿着一个2011年出版的Windows 7 SP1上生产,您觉得这个符合时代的发展吗?

就好比上个月发生的“WannCry”勒索病毒,病毒发生后其实最正确的方法就是按照MS的要求和建议安装MS17-010的补丁(关于这个病毒和防护措施说明,请见MS MVP浩哥的说明,抵抗勒索病毒的正确姿势)。不少非IT圈的朋友问我,为啥这个最简单有效的办法,平时我们的IT都不去做。我当时的回复就是:这个太low。

君不见现在做IT的公司如果说自己不是做云计算、大数据、iot、ML真是都不好意思出门见人。但是IT系统维护这些最基础的事情缺往往被人所忽视。其实微软的补丁更新系统可以说独步整个IT界,别的厂商在这个层面上基本不能望其项背。

#可能有人会说这是Windows系统写的差,所以很多漏洞。其实无论是Linux,MAC,Android系统都有漏洞,而且数量一点都不少,千万不要以为用了MAC,用了iPhone就可以高枕无忧,该升级的时候一定要升级。

补丁对于系统到底能带来哪些改变呢:

  1. 如上所述的安全漏洞。在这个IT安全越来越严峻的世界,这个可以说是最廉价而又十分有效的终端系统防护方案之一。

  2. 功能增强,这里包含了很多我们普通用户可能平时留意不到的内容。比如:网络性能、根证书链、特定传输协议优化(比如SMB)等等,这些看着不明显但却对用户最终使用会有明显改观的底层内容。

  3. 新功能、新版本,比如.net framework升级,以及现在MS还会推送硬件驱动。

    备注:目前Windows Update可以推送XenServer 7.x的Guest tools驱动

所以我们现在一台Windows 7SP1安装完成后如果使用Windows Update来更新补丁会发现得有差不多200个补丁需要去安装。

这就是这么多年历史积累下的各种组件的增强,可以说今天安装完成所有补丁的Windows 7 SP1和当年发布的Windows 7 SP1简直是天壤之别的两个产品。


这个时候就有朋友会说了,我现在如果真的把一个干净的Windows 7 SP1进行补丁升级,可能几天都不能完成,下载补丁过程很慢。其实这个原因很简单,因为你的系统太旧了、底层部分组件太老了。Windows 7 SP1中,系统自带的Windows Updage Agent已经不匹配现在的Windows Update系统,导致其遍历补丁速度非常慢(曾经我等过2天,说多了都是泪)所以为了加速这个过程,我们需要先手动在的系统上安装如下两个补丁:

3020369

3172605 

#请先安装3020369,3020369是3172605的前序补丁。

这两补丁安装好了以后,通过Windows Update就会非常快的检索、遍历出需要安装的补丁,后续的下载速度就完全看网速了。

当然环境里面如果有WSUS/SCCM之类的管理软件就更为简单了,直接用其推送。所以在企业级环境中,强烈推荐管理员部署这类平台。其中WUSU是MS一个免费组件,简单好用。


那么说完补丁,这个只是完成了一个基础,那么接下来就需要对Windows系统进行优化。其实说是优化(这里不存在什么加速这种事情),在我看来更准确的描述其实是对于Windows系统的“裁剪”,意思就是说把Windows系统在虚拟桌面体系中不需要的组件、服务、策略给删除、停用、调整。

#这个动作其实没有一个标准值,很多是基于不同用户应用再来不断调整优化。这里只是列出个人一些经验。


从我个人来说,我的基础镜像会做如下几个操作:

  1. 添加删除组件里面,删除除了: .net framework 3.5,Windows Media Player, IE 之外的所有其他组件

  2. 设定Pagefile大小(特别是在物理内存大于4G以上的场景中)

  3. 停用没有必要使用的Service,

  4. 停用没有必要使用的Schedule Task,

  5. 停用包括Aero、鼠标在内的特效等,


停用的Service、Schedule Task这个确实是个技术活,过去这个操作都是需要靠经验或者参考一些KB来设定。我曾经也做个一个PSH脚本,来完成相应工作。现在Citrix提供了一个叫Citrix Optimizer的VDA镜像优化工具,这样可以极大的方便我们一线人员的使用。(期盼好久啊。。。)

https://support.citrix.com/article/CTX224676

wKioL1ldryvgukM3AAAgCjMib5U707.png-wh_50

wKiom1ldryyg5zpGAABZpwLsWoo832.png-wh_50

目前此工具支持Windows7,10, Server 2012, 2016。默认自带了相关模板,后续相信会不断完善给予更好的支持。

#Tools不是万能的,请根据实际情况调整。


完成这个之后,对于常规使用来说,VDA的母镜像就已经可以交付使用了。但是我们都知道一般情况下我们会给用户都是Administrator即管理员权限。其实在任何系统中,当你拥有了系统管理员这个权限,控制就会变的很难做,为什么大家都说Linux系统稳定,其实有一个很重要原因是在Linux设计中,其管理体系在默认情况下,用户是没有Root即超管权限的,那么其核心的系统就不会受到用户侧的各种操作的影响,进而减少系统的不稳定性。

可是在Windows体系中,无论是从系统的设计逻辑、用户使用习惯和应用的特点,我们是很难不给予用户Administrators的权限,那么就导致由于用户的误操作、应用相互干扰导致虚拟桌面无法正常工作。比如说有用户自己修改IP地址,自行删除一些桌面Agent,胡乱修改系统变量等等不一而足。

而过去,为了限制用户的操作,一般都需要借助GPO来完成这种操作,但是对于很多非MS背景的同学来说这个太复杂了。


所以Citrix通过一个叫WEM(Workspace Environment Management)来实现对于系统环境的设定。

比如,我通过设定限制用户不能使用Windows Update,Help这些功能。

#补丁应该在交付给用户前就安装好,而不是让用户去安装各种补丁。

wKioL1ldsHmh2nnAAAIZ78MnQb4373.png-wh_50

wKiom1ldsHmSmGQaAAAhZ7QRPW4889.png-wh_50


限制用户不能使用控制面板或者面板中的一些特定组件。

wKioL1ldsHuCWUP6AADVgWjhbJg040.png-wh_50

wKiom1ldsHzDXW1aAAAVr4H9iWo553.png-wh_50


这样来说,在给予用户超级管理员权限情况下,也能合理控制用户,可以使用整个桌面,以及定制化后的系统,这样才是最适合每个不同客户的系统。

其实从我个人的角度来说,虚拟桌面这种产品他还是需要和用户的管理体系对接,完全开放、完全不受控、不考虑标准化,也许初期使用没问题,到了中后期,越多不受控的虚拟桌面,对于用户方的运维压力将是史无前例。太多的用户跟我们反馈过,如果初期不受控,后面的运维工作真是一夜回到解放前。

#在这里其实要澄清一个观点,很多人说做标准化桌面一定要用标准/池化/Non-persistent桌面,其实我个人观点倒是不一定。你可以通过技术手段来做这种重启即还原的桌面,也可以给用户完全自控的专有/Persistent桌面,但是配套上企业的管理体系,比如:运行安装的软件是公司统一规定好的,安装非此清单中的软件就是违规,通过管理体系来进行控制与管理。

从我个人来说,我非常推崇虚拟桌面对于IT前端运维的管理、控制特性。操作层面推崇的是一种技术+管理融通的方式,而不是死板的只使用技术来达到最终结果。


以上这些信息对于Windows 7 SP1, Windows Server 2012都是适用的,但是对于Windows 10却不完全适用。这个主要的区别还是在Windows 10系统自身的版本更新的体系有关。

相信大家都知道,过去无论是Windows 客户端系统,7,8/8.1还是服务器系统2008R2, 2012R2都是通过Service Pack+hotfix方式来更新系统。

但是到了Windows 10,基本上每半年到一年,都会有一个完整的版本分发出来。每次新的版本发布都会带来大量的新功能、新组件、新服务。其实这也是MS为了规避过去那种Service Pack+hotfix的更新带来对于新功能的不能快速迭代的一种新时代的新方法。毕竟当前的IT发展,敏捷开发、快速迭代是一个大趋势。


wKioL1ldtfbjQnu3AAAlvfCsjIc353.png-wh_50

从这张图我们可以看出目前发布的3个主要的Windows 10版本,其Schedule Task,Service,Default App的数量都是会有一些不同,那么进而导致其对于CPU/RAM等系统资源消耗量的不同。

wKioL1ldtnuysYsOAADfuPPBJnc774.png

wKioL1ldtnvA7yMqAAAssQIE5V4176.png


那么问题来了,如果我们要使用Windows 10作为VDA的时候,我们应该选择哪个版本,RTM,Anniversary 或者Creator版本。(具体版本号请大家自行检索)


其实MS在设计Windows 10体系的时候就有考虑过这个问题,所以除了过去我们熟识的专业版、企业版之外,他还引入新的Service options,

https://blogs.technet.microsoft.com/enterprisemobility/2016/01/06/navigating-the-windows-10-servicing-options/

wKioL1lduEqSz-dNAAAPrKLWM6g908.png-wh_50

其中Inside Program类似于BETA版,CB就是最新版本,CBB是一个稳定版本分支,LTSB则是以稳定为主。

所以MS推荐在企业级场景中,是使用CBB和LTSB这两种版本,个人用户推荐Inside和CB版本。比如我个人电脑目前就是使用最新的CB版本1703。


那么在当下,哪些版本是CBB和LTSB版本呢。在如下的MS网站,MS给出了每个版本的状态,

https://technet.microsoft.com/en-us/windows/release-info.aspx

wKioL1lduLzgIuOgAABVlt3Jbsc423.png

#请注意,这里Microsoft Recommend推荐的1703是其最新的版本,这个主要是对于个人用户使用。但是在VDA/虚拟桌面场景中,我们需要参考MS推荐优先选择CBB/LTSB版本。


所以个人建议在虚拟桌面场景中,目前比较合适的选择是:1607,1511,1507这三个版本。


以上信息,仅代表个人观点,供参考。

版权声明:原创作品,如需转载,请注明出处。否则将追究法律责任