存儲空間存儲分層 數據庫
在談到存儲分層以前,咱們須要瞭解Windows Server存儲空間裏面包含了多少層以及如何定義每個分層。基於讀寫性能快慢的相對值,存儲空間分爲兩個數據存儲層,一個存儲層爲快速層,一般由SSD硬盤提供,用於存儲熱數據,也即常常訪問的數據;另外一個存儲層爲慢速層,一般由HDD硬盤提供,用於存儲冷數據,也即不常常訪問的數據。默認狀況下,存儲空間具備這兩個存儲速率不一樣的存儲層的虛擬磁盤,存儲分層目的在於平衡 SSD性能和硬盤驅動器 (HDD)容量。在存儲層都有可用空間時,新的數據一般往慢速層寫入,而後存儲空間將會根據訪問數據的頻率,以透明方式在兩個層之間移動子文件級的數據。存儲層能夠經過將最經常使用的熱數據移到SSD存儲來知足熱數據的性能要求,將冷數據移動到HDD層來知足普通數據的容量要求。存儲分層工做原理如圖1所示。 緩存
圖1存儲空間分層技術服務器
存儲控制器服務器操做系統Windows Server 2012和Windows 8及後續版本內置了存儲分層管理服務(Storage Tiers Management Service),該服務在安裝Windows Server文件服務器角色後被激活處於運行狀態。存儲分層管理服務能夠自動計算數據熱度並按照默認策略在天天晚上1點啓動冷熱數據移動。要觀察存儲分層任務和行爲,能夠登陸存儲控制器服務器,打開服務器的控制面板裏找到計劃任務程序,在計劃任務程序裏依次展開「計劃任務程序」—「Microsoft」—「Windows」下找到名爲「Storage TiersManagement」的項目,打開Storage Tiers Optimization 屬性,在觸發器選項卡里咱們就能看到存儲分層管理服務在天天凌晨1點觸發冷熱數據遷移的計劃任務,如圖2所示。這個默認設置不是一成不變的,可按照需求和實際狀況修改觸發分層任務的時間。 ide
圖2存儲空間自動分層任務佈局
除了修改分層操做任務的觸發時間,還能夠不依賴計劃任務程序完成存儲分層。爲了找到Storage Tiers Management Service如何實現存儲分層,咱們能夠從預置的計劃任務裏找到分層操做相關的命令和參數。點擊Storage Tiers Optimization 屬性窗口的操做選項卡,在詳細信息欄可看到Storage Tiers Management Service所執行的具體任務和相關參數,事實上存儲分層使用defrage命令和-c -h -g -#這4個參數完成,如圖3所示。性能
圖3存儲空間分層調度操做優化
獲取到分層存儲命令及參數後,咱們就可使用命令手動觸發冷熱數據遷移了,只要在命令提示符裏輸入C:\ Windows\system32\defrag.exe-c -h -g -#便可。spa
若是熟悉Windows裏磁盤優化(碎片整理)會發現作存儲分層移動的命令和磁盤碎片整理的命令同樣,只是參數不一樣。在Windows Server 2012/Windows 8以前的版本里微軟並無引入存儲空間,也沒有存儲分層這個技術,因此使用defrag.exe /? 命令獲取幫助後,在Windows Server2012 R2/Windows 8.1系統裏面會多出-g這個參數。這個參數很是重要,其意義意義在於優化存儲層,按照數據熱度爲數據找到合適的存儲層。操作系統
須要強調的是,存儲分層基於數據的粒度而非文件的粒度,存儲分層服務按照1MB的單位分析和移動數據。若是文件大於1MB,並且只有部分「熱」數據,那麼一個文件只有必定比例的數據會被移動到SSD層,好比有一個虛機虛擬磁盤上面的數據只有20%熱數據,只有這20%的數據會被移動到SSD分區,而不會把整個虛擬磁盤文件移動到SSD分區。舉個實際的例子,一臺虛機的VHDX大小一共100GB,裏面安裝了SQL Server 實例,在實例下20GB的數據庫和日誌文件用於交易系統,該交易系統天天產生過萬條交易,那麼這20GB的數據將會移動到SSD分區,而剩餘的80GB系統文件和其餘文件的數據則不必定會移動到SSD分區。至於存儲空間如何進行數據熱度計算,請參考另一篇博客《Windows Server 軟件定義存儲—存儲空間IO的分發》http://ichbinleo.blog.51cto.com/11948851/1900880 。翻譯
存儲分層是後臺自動運行數據遷移的過程,若是某些特定的虛機須要持續運行在高速的SSD層,或者對性能要求不高的虛機須要固定在大容量的HDD層來爲其餘虛機提供更多的快速SSD層,則能夠考慮使用固定命令將該文件固定到某個磁盤層。固定和分層不一樣的是分層是數據級別操做的,而固定是文件級別操做的。好比要將\\FileServer\Share\VM01.VHDX固定在SSD層,按照以下步驟完成:
(1) 運行PS C:\>Get-StorageTier|ft FriendlyName PowerShell命令獲取已有分層友好名。
(2)返回以下結果,根據MediaType選擇類型爲SSD的層。
FriendlyName MediaType ------------ --------- SSDTier SSD HDDTier HDD
(3)運行如下示例命令將VM01的虛擬磁盤固定到SSD層,使用Clear-FileStorageTier解除將文件固定到某一層。
PS C:\> Set-FileStorageTier -FilePath "\\FileServer\Share\VM01.VHDX " -DesiredStorageTierFriendlyName "SSDTier" SSD
運行固定文件的命令,存儲不會馬上將文件數據移動到指定的分層,而是等待下一次磁盤分層優化運行任務開始纔開始,若是等不及,那麼就按上面提到的方法,在計劃任務程序、命令提示符或者PowerShell裏手動觸發數據移動操做。
存儲空間緩存管理
在傳統存儲中,存儲包含了讀緩存命中和寫緩存,寫緩存又分爲回寫(Write-back)和透寫(Write-through)緩存,在緩存機制中還具有緩存鏡像和緩存保管等技術防止掉電等故障形成緩存數據的丟失。在Windows Server SDS裏咱們一樣具有類似的緩存技術,咱們先看看Windows Server SDS的回寫緩存。
回寫緩存
應用一般都是以小數據隨機寫入到存儲,做爲SSD硬盤重要屬性,回寫緩存能夠將小的隨機寫入緩存到SSD硬盤避免發生過屢次數的磁盤寫入I/O。從Windows Server 2012 R2 開始,存儲空間支持建立回寫式緩存,緩存使用池中SSD上的少許空間來緩衝小規模隨機寫入操做並減少對其餘並行的數據寫入的影響,並經過下降隨機寫入的延遲來提升存儲的寫入性能。常見的工做負載隨機寫入操做將定向到 SSD緩存,稍後再寫入 HDD。回寫緩存另外的用途在於對數據進行掉電保護。存儲空間若是存在SSD硬盤,虛擬磁盤會默認建立大小爲1GB的回寫緩存空間,如圖4所示。
回寫緩存對管理員來講是透明的,存儲空間在有足夠數量的SSD的前提下,新建虛擬磁盤的同時將建立好回寫緩存。磁盤佈局和對SSD數量要求說明以下:
簡單佈局要求具備一塊SSD硬盤;
雙重鏡像和單奇偶校驗要求具備兩塊SSD硬盤;
三重鏡像和雙奇偶校驗要求具備三塊SSD硬盤。
圖4回寫緩存
Journal
咱們在設置硬盤用途的時候硬盤的Usage參數裏有個Journal值,Journal(暫無信達雅的中文翻譯)和回寫緩存有着相似的做用,都是負責處理從新組織路徑上活動的I/O,可是在存儲空間裏,兩者的做用和設置有明顯的區別。Journal只能用於奇偶校驗佈局的存儲空間,回寫緩存適用於全部的存儲空間佈局,並能支持分層存儲。咱們能夠爲奇偶校驗的存儲空間設置專用的Journal硬盤,一般使用快速的SSD硬盤,配置了專用Journal硬盤的奇偶校驗存儲空間能很大程度上提升存儲寫入性能,尤爲是順序寫入的時候,此外,使用兩塊以上的Journal硬盤能夠實現自身的鏡像保證I/O的冗餘。