聊聊VDI虛擬桌面的重複SID問題(上)

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

相關文章
相關標籤/搜索