SID是个好久远的东西了,最先去了解这个东西,仍是第一次尝试迁移Windows NT 4的域到Windows 2000…开始是知道SID相同加域会报错,后来迁移项目作多了,也就熟悉了SID History…而后是在SCCM/OSD的时候了解Client ID…后来,我给微软发布Windows 2012作全国TTT的时候,开始深刻 VDI,再后来,莫名其妙就作了Citrix和VMware的VDI……windows
扯的有点远了……写段简历,实际上是为了后面分不一样角度来讨论SID在今天的环境中关联的一些问题。之因此把SID和VDI两件事情扯到一块儿,是由于长期以来对于VDI都会有挺多的有意思的细节,固然也由于我常常和伙伴及客户所强调的,VDI的出现,改变了 整个PC桌面管理的方式。因此接下来会讨论一点技术细节,同时也尝试讨论带来技术细节所带来的背景和方向。安全
为何主流VDI的制备方式默认都不使用Sysprep了?服务器
所谓天下大势,分久必合,合久必分,从主机时代走来的PC,带来的是计算的革命。从集中到分散,坐在数据中心维护机器变成了处处帮用户装机器…于是出现了一大批“终端管理”的解决方案,例如AD/GPO,SCCM,Landesk…而到了“近现代”,因为移动互联网的兴起,终端更加的离散,更多的终端节点意味着更多数据失控的可能,因此基于远程访问的VDI忽然就站到风口了。架构
如VDI的全称Virtual Desktop Infrastructure所昭示的,VDI是基于Windows虚拟机、经过远程协议访问虚拟机中的Agent,实现“数据不落地”的桌面使用的架构。因为操做系统和应用程序以及核心的数据再也不位于终端上,而是运行在数据中心,所以带来了安全边界的收缩以实现更高的安全性。正是这样的架构,决定了桌面从之前的分散管理,又变成了集中管理的模式。能够说,从根本上也解决了PCLM类终端管理没法保证覆盖所有终端,维持100%全面配置基线、安全基线的问题。并发
所以,VDI的桌面天生就是集中化的管理模式。那么问题就来了,咱们应该“安装”或完整克隆一堆的VM当成PC来管理,仍是应该经过标准化的制备方式快速得到呢?less
从VDI自己的意义来讲,一方面实现了小而完整的安全边界,另外一方面就是经过虚拟化、云化实现了资源的动态调度,从而提升硬件利用率。实际上因为不少场景下考虑到用户并发上线使用数量,按照接近峰值的资源计算VDI硬件,再加上服务器硬件组件的可靠性及使用强度和寿命的因素,并不会比如今愈来愈便宜的PC便宜多少。若是再使用传统PC的管理模式管理,将会使得本来分散的终端管理问题集中起来而且显得更加尖锐。所以,除非不得已,以我多年的经验,是强烈不建议使用全克隆方式制备出一堆虚拟机,用以往的PC管理方式进行管理的。上VDI项目以前,就应该考虑是否对PC管理进行标准化,并对支持的PC配置标准进行合并裁撤。只有这样,才可以经过VDI项目收获最大的管理效益。至此,前面提出的问题的答案也就呼之欲出了,除非知足特定需求,咱们应该尽量经过标准化来实现对虚拟桌面的批量制备。ide
若是您是一位曾经部署过大量桌面的工程师,或者曾经将经过ghost相似软件复制的桌面加入到AD域中,确定会知道,若是一个桌面的SID和其余桌面相同,加域要么不成功,要么会出现一些奇奇怪怪的问题。因此,有经验的管理员,会使用微软的一个自带的工具,Sysprep来从新为计算机生成新的SID。这个工具是微软官方承认的,解决SID重复固然没有问题。但是放在VDI场景里,问题就来了——Sysprep须要完成后,系统进行一次从新启动方才全面生效。而当咱们启动“复制”标准虚拟机镜像的时候,是不但愿每一个最终用户花费几分钟去完成你们熟悉的、Windows第一次启动时须要好几分钟的那个初始化过程的。更别说,不保留系统变动的“无状态”虚拟桌面“每一次”进入虚拟桌面都要完成这个过程……工具
因此,除了保留系统更改的“有状态”桌面,目前已经不多在VDI部署中看到使用Sysprep进行SID重置初始化的作法了。ui
VDI架构真的都不生成或更新SID了吗?操作系统
关于这一点,咱们能够找到以下的KB文章或者材料进行确认。首先看看VMware的官方知识库文章:
Differences between VMware ClonePrep, QuickPrep and Microsoft Sysprep (2003797)
在这篇KB中,主要针对不一样的VDI桌面预备方式,介绍了不一样的系统准备方式(Sysprep、QuickPrep、ClonePrep)。对于全克隆桌面,比较推荐使用Sysprep;而连接克隆桌面,能够视须要选择QuickPrep或者Sysprep;对于即时克隆,则建议使用ClonePrep为制备大量桌面进行准备。为了便于理解这几个比较陌生的词,咱们对批量制备桌面最为关键的一些要求进行比较:
功能 | ClonePrep | QuickPrep | Sysprep |
---|---|---|---|
修改计算机名 | Yes | Yes | Yes |
使用新实例加域 | Yes | Yes | Yes |
变动安全标识 (SID) | No | No | Yes |
生成新安全标识 SID | No | No | Yes |
重启次数 | 0 | 0 | 1 |
在这个表格里,咱们关心的几个功能都有直接的对比。首先大量制备桌面虚拟机时,确定都要给每一个虚拟机进行命名,而且加入到AD活动目录域中,便于集中管理和提供全局登陆。表中能够看到这个要求三种预备方式都可以支持。那么那些功能对于三种预备方式是有区别的呢?主要在因而否变动SID/生成新的SID以及须要重启的次数。如表格所示,Sysprep可以”严格“按照微软要求,为每个桌面生成新的SID,可是没法避免须要进行一次额外的重启,所以在不少时候咱们会选择非Sysprep的方式来预备桌面。
除了制备阶段,在这篇KB中其实还介绍了整个桌面虚拟机生命周期中不一样阶段对SID的处理方式。对于 连接克隆方式,实际上能够同时支持标准的Sysprep和快速的QuickPrep:
Creation | Refresh | Recompose | Rebalance | |
---|---|---|---|---|
Sysprep | New SIDs are generated for the Desktops | SIDs are preserved | New SIDs are generated for the Desktops | New SIDs are generated for the Desktops |
QuickPrep | Master Image's SID are used for the Desktops | SIDs are preserved | SIDs are preserved unlessMaster Image is changed | SIDs are preserved unless Master Image is changed |
随着产品发展,连接克隆将逐步退出历史舞台,在新的Horizon版本中,即时克隆已经下沉到更低版本,成为批量制备的优先选择。即时克隆与连接克隆机制上有所区别,所以其虚机的生命周期环节也稍有不一样:
Creation | Push Image | On User Logout | |
---|---|---|---|
ClonePrep | Master Image's SID are used for the Desktops | SIDs are preserved unless Master Image is changed | SIDs are preserved unless Master Image is changed |
从以上两种不一样的预备方式,都可以看到,实际批量制备桌面时,并无生成新的SID,跟咱们所熟悉 的“每个加域的计算机都须要使用不一样的的SID”的认知貌似有所不一样。
实际上,不只VMware是这样处理虚拟机的,Citrix也是这样处理的。能够参考Citrix的官方支持文章:
MCS Provisioned VMs Share an Identical Machine SID (CTX226711)
我没有找到关于PVS制备方式对SID处理的官方KB,可是以我对PVS制备方式的了解以及社区文章的描述,PVS也是不会生成和更新桌面虚拟机的SID的。而这篇描述MCS制备方式的KB对与SID问题的描述很是简单:重复的SID不是个问题……不信你去看微软的介绍……
而微软本身其实从Windows Server 2008开始也提供了基于RDS架构的VDI,但是我并无找到有关制备时SID的处理的介绍……
Recommended settings for VDI desktops
到底VDI中使用重复SID是否是问题呢?下一篇咱们用微软的文章来讲明。