PVS讓存儲顫抖,系列博文之一:PVS的寫緩存新技術

實現桌面虛擬化的障礙來自於哪裏?你可以列舉出很多因素,包括實施的複雜性,要替換掉前端PCPC使用人員惰性對項目的牴觸等等,但是更重要的是他的成本在首次購置時超出了一臺PC的價格。

桌面虛擬化整體項目的成本不外乎是軟件、硬件以及服務。其中軟件包括虛擬化軟件的License和微軟相關軟件的授權License,硬件一般包括服務器、存儲和網絡交換設備等。一般來說硬件成本佔整個桌面虛擬化成本的超過60%,甚至更高。在硬件成本中存儲的成本又是最高的,有統計數據表明硬件成本中超過一半是共享給了共享存儲。

PVS的技術能顯著降低桌面虛擬化項目的成本已經被無數項目所證實,但是由於PVS是有別於桌面管理控制檯之外的一個單獨的管理服務器,所以以前在很多項目中VMware都對客戶說Citrix的管理平臺太複雜,管理效率低下,對業內不太瞭解的客戶自然就信以爲真,殊不知爲此付出了慘重的代價;最近一段時間很少再聽到VMware公司還對客戶說同樣的話了,原因是他們自己的控制檯越來越多,複雜程度超過了Citrix的桌面虛擬化,不過可惜的是換來的並不是類似Citrix PVS對桌面發佈技術的高效,而是因爲把收購來的不同產品硬性整合所帶來的多產品之間混亂格局,此話題咱們暫且先擱置,有時間再慢慢道來。

今天給大家帶來的是一個PVS的新技術,叫做“Cache in RAM with Disk Overflow”,什麼意思呢?顧名思義,就是把爲每個虛擬機分配的Write Cache寫到Target DeviceRAM中,當RAM寫滿之後,才繼續寫入Target Device的硬盤中。

我們這篇文章將會是第一講,介紹該特性,下一篇博文將會詳細通過實際數據來驗證該特性,以及介紹如何使用該方式。

回顧一下PVS的技術特性

在我們介紹這個新特性之前,你必須對PVS的寫緩存技術有一點的瞭解。好在這幾年都陸陸續續寫過一點心得,有時間的話推薦你去看看我之前寫的幾篇博文:

PVS寫緩存容量設計和部署位置的考慮

http://virtualworld.blog.51cto.com/1412963/1441381

PVS的內存和存儲規劃設

http://virtualworld.blog.51cto.com/1412963/1441391

Cache in RAM with Disk Overflow的由來

如果你曾經使用過PVS 7.1的版本,細心的你就會發現PVS 7.1的版本增加了一個新的Write Cache的存放位置稱之爲“Cache in RAM with Disk Overflow”。見下圖:


wKioL1POa5vBl_jTAAHj3zlLr-Y409.jpg


wKiom1POaoGAj_UjAAFFZPu9GF4367.jpg


wKioL1POa5zxdSLkAAGob5SdDyI096.jpg

在舊的PVS軟件版本上你可是看不到此特性的哦,如下圖6.X版本的PVS

wKioL1POa52ynScZAAHaiyHm6oc646.jpg

實際上在設計之初這個特性是爲了處理在微軟ASLRPVS之間發生的一些應用程序兼容性問題。

當時這個問題其實是出在當我們把Write Cache設置爲“Write Cache on Target Hard Disk”的時候會出現隨機性的應用程序崩潰現象(當然VDI項目的實際案例中我們都是把Write Cache 放在共享存儲上)。在Vista系統發佈之後,微軟引入了一個新的安全機制叫做Address Space LayoutRandomization ,簡稱叫做ASLR,該功能把已知的操作系統的系統模塊隨機的放到內存地址空間中,當我們把WriteCache設置爲“Write Cache on Target Hard Disk”時,就會出現應用程序隨機崩潰的情況,因爲應用程序可能在調用一個操作系統的服務,也可能是一個explorershell

這個問題只要你把Write Cache設置爲放在內存中,又或者是放在服務器的內存中,又或者是私有模式,都不會出現此問題,所以,Citrix的研發部門特意開發了一個新的Write Cache的存放位置稱之爲“Cache in RAM with Disk Overflow”,也就是說Write Cache優先放在TargetDeviceRAM中,當RAM放滿了之後再把不常用的數據放在Target Device的硬盤中。

關於此問題的詳細解釋可以參考Citrix的知識庫文章:

http://support.citrix.com/article/CTX139627

沒想到這個新特性的最大副作用就是帶來了極大的IOPS上的性能提升,大幅度的減少,甚至消除了對物理存儲設備的需求!

Citrix的顧問團隊最近對該新特性做了一些詳細的實驗室測試,同時也在客戶的生產環境中實際測試並捕捉了大量的數據,我已經迫不及待的要把這些數據及時的分享給你了!

PVS Write Cache類型詳解

當我們決定採用PVS方式來發布虛擬桌面時,一個最爲重要的因素就是通過確認Write Cache的擺放位置來達到最大化性能。雖然上面兩篇博文都已經有所論述,但我們還是做一簡單回顧把。

  1. 緩存到服務器上,就是說放在PVS的服務器上,缺省和vDisk的擺放位置一樣,只不過是不同路徑;和其它方式相比這種方式性能最差,也沒有高可用配置,所以在VDI方式中堅決杜絕使用,只是在Streaming到物理機或者是無盤瘦客戶機時才使用;

  2. 緩存到Target Device的硬盤上。這種方式會在Target Device的硬盤上創建一個寫緩存文件.vdiskcache。所以在Target Device的硬盤是需要NTFS的文件分區別格式來創建這個.vdiskcache文件。到目前爲止這種方式是Citrix最佳實踐的推薦部署方式,雖然並非是性能最好的方式,但是他在成本和性能之間達到了一個平衡,所以在大部分項目中都是採用這種方式部署。

    備註:這種模式下爲了讓寫緩存磁盤達到最高的吞吐量,建議打開Intermediate Buffering(中間緩衝)這個配置選項。默認下該選項是禁用的,如何啓用該選項可以參考CTX126042.

  3. 緩存到RAM(內存)中。這種方式保留Target Device的一部分內存用來存放Write Cache,這部分的RAM操作系統將不能再使用了。這部分保留用於Write Cache的內存在vDisk的屬性中配置。這種方式能提供更高的吞吐率,更好的響應時間,以及爲Write Cache提供比前幾種方式更高的IOPS,比較內存的讀寫速度要遠勝於磁盤的速度。

    不過這種方式還是有一些問題的。首先沒有overflow(暫且翻譯成“溢出”)功能,一旦寫緩存佔滿了被分配的RAM空間,Target Device將不可用了(甚至發生藍屏),因此Target Device必須有足夠多的內存來存放Write Cache,不過這樣一來就會帶來更高昂的成本;其次,如果企業有需求要求儲存永久設置和數據,例如事件日誌等,還是需要保存在Target Device的硬盤介質上。在實際項目中,我們通常會在發佈XenApp成員服務器的時候會使用這個功能,主要是因爲在一臺物理服務器上通常我們不會運行太多的XenApp虛擬機,而VDI方案就不同了,通常數量較多,所以一般來說沒有那麼多可用的內存可供Write Cache使用。

  4. 緩存到RAM並且溢出到硬盤,這是一種新的Write Cache形式,其實就是第二和第三種方式的組合,默認狀態下Write Cache是寫入到Target Device的內存中,當內存寫滿了時在寫入到Target Device的硬盤中。他的工作方式如下。

    1. 在過去版本相同,緩存的大小是在vDisk的屬性中配置,缺省狀態下,緩存的大寫是64MB,並且可以設置爲任何大小。

    2. 該模式並不是像方式“緩存到RAM(內存)中”那樣預留一部分Target Device的內存,“緩存到RAM並且溢出到硬盤”方式的Write Cache是被映射到內存中的非頁面池中,並且按照需求來使用,如果系統不再需要時,內存是可以被釋放到系統的;

    3. Target Device的硬盤上,“緩存到RAM並且溢出到硬盤”方式並不是使用舊方式的.vdiskcache文件,而是使用一個VHDX格式的文件:vdiskdif.vhdx文件。

    4. 在啓動的時候,該VHDX文件的文件頭是4M大小;

    5. 數據是首先寫入到內存中的緩存,一旦緩存滿了,不活動的數據將溢出到磁盤上;

    6. 數據寫入到VHDX時是以2MB一個塊寫入,而不是以前的以4K一個塊寫入。在開始的時候,看起來Write Cache貌似比舊的.vdiskcache這個緩存文件增長的要快,但是隨着時間的推移,新格式的文件所消耗的空間卻不會顯著增大,這是因爲數據最終將會被填充到保留的2M數據塊中;

“緩存到RAM並且溢出到硬盤”方式的注意事項

  1. 最初開始時,Write CacheVHDX文件會比.vdiskcahce文件格式增長的更快。這是由於VHDX格式使用2MB的數據塊而不是4K的數據塊,但是隨着時間的推移,新格式的文件所消耗的空間卻不會顯著增大,這是因爲數據最終將會被填充到保留的2M數據塊中;

  2. Intermediate buffering”選項不適用於這種Write Cache模式,實際上,“緩存到RAM並且溢出到硬盤”這種Write Cache方式其實就是用來取代“Intermediate buffering”方式的;

  3. 系統緩存(System Cache)和vDisk的內存緩存(vDisk RAM Cache)是同時在工作。這句話的意思其實就是說如果有一個塊數據從Target Device的內存緩存中被移動到了磁盤的溢出文件上,這個數據時期實際上還是存在於Windows的系統緩存(System Cache)中,再讀取時它還是從內存中讀取而不是從磁盤中讀取;

  4. “緩存到RAM並且溢出到硬盤”這種Write Cache方式僅適用於Windows 7/Windows 2008 R2以及之後的操作系統版本;

  5. “緩存到RAM並且溢出到硬盤”這種Write Cache方式需要安裝一個PVS 7.1的補丁,請參考:

    http://support.citrix.com/article/CTX140875


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章