平时做桌面项目的时候,很多工程师都在问我一个问题,为什么有些项目的桌面那个启动、登录速度很快,为什么3D的效果比我这个好?但对比下他的硬件配置还不如我。
这个问题我相信无论是做哪家桌面的工程技术人员其实都有遇到,当然这里面其实牵涉到的技术面有不少,今天我们主要来说说对Windows VDA这个本身的优化、定制部分。
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就可以高枕无忧,该升级的时候千万不要不升。
补丁对于系统到底能带来哪些改变呢:
- 如上所述的安全漏洞。在这个IT安全越来越严峻的世界,这个可以说是最廉价而又是否有效的终端系统防护方案之一。
- 功能增强,这里包含了很多我们普通用户可能平时留意不到的,比如:网络性能、证书链、特定传输协议优化(比如SMB),但却对最终使用有明显改观的部分。
- 新功能、新版本,比如.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 Updage Agent已经不匹配现在的Windows Update系统,导致遍历补丁速度非常慢(曾经我等过2天,说多了都是泪)所以为了加速这个过程,我们需要先手动在的系统上安装如下两个补丁:
#请先安装3020369,3020369是3172605的前序补丁。
这两补丁安装好了以后,通过Windows Update就会非常快的检索、遍历出需要安装的补丁,后续的下载速度就完全看网速了。
当然环境里面如果有WSUS/SCCM之类的管理软件就更为简单了。
那么说完补丁,这个只是完成了一个基础,那么接下来就需要对Windows系统进行优化。其实说是优化,这里不存在什么加速这种事情。在我看了优化其实就是对于Windows系统的“裁剪”。裁剪的意思就是把Windows系统在虚拟桌面体系中不需要的组件、服务、策略给删除、停用、调整。
#这个动作其实没有一个标准值,很多是基于不同用户应用再来不断调整优化。
从我个人来说,我的基础镜像会做如下几个操作:
- 添加删除组件里面,删除除了: .net framework 3.5,Windows Media Player, IE 之外的所有其他组件
- 设定Pagefile大小(特别是在物理内存大于4G以上的场景中)
- 停用没有必要使用的Service,
- 停用没有必要使用的Schedule Task,
- 停用包括Aero在内的特效等,
停用的Service、Schedule Task这个确实是个技术活,过去这个操作都是需要靠经验来设定。我曾经也做个一个PSH脚本,部分设定通过PSH来实现。现在Citrix提供了一个叫Citrix Optimizer的VDA镜像优化工具,这样可以极大的方便我们一线人员的使用。(期盼好久啊。。。)
https://support.citrix.com/article/CTX224676
目前此工具支持Windows7,10, Server 2012, 2016。默认自带了很多模板,后续相信会不断完善给予更多的支持。
#Tools不是万能的,请根据事情情况调整。
完成这个之后,对于常规使用来说,VDA的母镜像已经可以使用了。但是我们都知道一般情况下我们会给用户都是Administrator及管理员权限。其实在任何系统中,当你拥有了Windows系统管理员这个控制就很难做,为什么大家都说Linux系统稳定,其实有一个很重要的管理体系是默认情况下,用户在Linux是没有Root及超管权限,那么很多核心的系统就不会受到影响。
那么在Windows里面,因为设计的逻辑,很难把用户管理员权限移除,那么就导致前端用户会由于误操作导致虚拟桌面无法正常工作。比如有用户自己修改IP地址,自行删除一些桌面Agent等等不一而足。
过去我们一般都需要借助GPO来完成这种操作,但是对于很多非MS背景的同学来说这个太复杂了。
所以Citrix通过一个叫WEM(Workspace Environment Management)来实现对于系统环境的设定。
比如,我通过设定限制用户不能使用Windows Update,Help这些功能
限制用户不能使用控制面板或者面板中的一些特定组件。
这样来说,在给予用户管理员权限情况下,合理控制用户可以使用整个桌面,整个定制化的系统才是最适合每个不同客户、企业的系统。
其实从我个人的角度来说,虚拟桌面这种产品他还是需要和用户的管理体系对接,完全开放、完全不受控、不考虑标准化,也许初期使用没问题。到了中后期,越多不受控的虚拟桌面,对于用户方的运维压力将是史无前例。
以上这些信息对于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的更新带来对于新功能的不能快速迭代的劣势。
从这种图我们可以看出每个版本的Windows 10,其Schedule Task,Service,Default App的数量,那么进而导致其对于CPU/RAM消耗量的不同。
那么问题来了,如果我们要使用Windows 10作为VDA的时候,我们应该选择哪个版本,RTM,Anniversary 或者Creator版本。(具体版本号请大家自行检索)
其实MS在设计Windows 10体系的时候就有考虑过这个问题,所以他除了过去我们熟识的专业版、企业版之外,他还引入新的Service options,
其中Inside Programe类似于BETA版,CB就是最新版本,CBB是一个稳定版本分支,LTSB则是以稳定为主。
所以MS推荐在企业级场景中,我们是使用CBB和LTSB这两种版本。
那么在当下,哪些版本是CBB和LTSB版本呢。在如下的MS网站,MS给出了每个版本的状态,
https://technet.microsoft.com/en-us/windows/release-info.aspx
#请注意,这里Microsoft Recommend推荐的1703是其最新的版本,这个主要是给到个人用户使用。但是在VDA/虚拟桌面场景中,我们需要参考MS推荐优先选择CBB/LTSB版本。
所以目前比较合适的应该选择:1607,1511,1507这三个版本。
以上信息,仅代表个人观点,供参考。