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是否是問題呢?下一篇咱們用微軟的文章來講明。