網管人雜誌
本文刊載於 網管人雜誌第 109 期 - 2015 年 2 月 1 日出刊,NetAdmin 網管人雜誌 為一本介紹 Trend Learning 趨勢觀念、Solution Learning 解決方案、Technology Learning 技術應用的雜誌,下列筆記為本站投稿網管人雜誌獲得刊登的文章,網管人雜誌於每月份 1 日出刊您可於各大書店中看到它或透過下列圖示連結至博客來網路書店訂閱它。文章目錄
1、前言2、實作環境
3、儲存空間主機 - 硬體需求
JBOD 機箱
磁碟陣列卡(RAID Card)
硬碟類型
4、部署儲存空間
步驟 1、建立儲存集區
步驟 2、建立虛擬磁碟
步驟 3、建立磁碟區
5、測試資料可用性
6、修復存放集區
7、結語
1、前言
在新一代的 Windows Server 2012 R2 雲端作業系統當中,已經內建由 VMI 所開發的儲存管理 API(Windows Storage Management API,SMAPI),以及相對應的 PowerShell Cmdlet 指令集。此一儲存管理 API 是由 VMI 物件模型,以及其它相應方法及相關屬性所組合而成,儲存合作夥伴便能透過 全球網路儲存工業協會(SNIA)、儲存管理介面規範(SMI-S)、儲存管理提供程式(SMP)等方式加入新的 API 規範,現在已經有許多儲存設備都已經支援儲存管理介面規範(SMI-S)。事實上,從 Windows Server 2012 版本開始,只要使用 SMAPI 便可以直接操作儲存設備而不需要安裝其它軟體。
圖 1、Windows Server 2012 R2 儲存管理架構
圖片來源: Microsoft TechEd 2013 MDC-B333 – Storage and Availability Improvements in Windows Server 2012 R2
以往舊版本 Windows 作業系統當中,針對儲存設備或實體主機當中的「實體硬碟」管理方面,通常會交由儲存設備控制器(Storage Controller),或實體伺服器上的磁碟陣列卡(RAID Card)來進行管理。現在,您可以只購買單純的 JBOD(Just a Bunch Of Disks)儲存設備即可,其它實體硬碟的管理作業就交給 Windows Server 2012 R2 來處理即可。
圖 2、Unified Storage Management Architecture
因此,您可以透過 Windows Server 2012 R2 內建的「儲存資源池(Storage Pool)」機制,將 JBOD 儲存設備機箱當中,所有的實體硬碟組合成一個非常巨大的儲存池,例如 將 14 顆 Near Line SAS 4 TB 硬碟,組合成一個 56 TB 空間大小的儲存資源池。
當然,在組合儲存資源池的過程中,您也可以採取混用的方式如 SAS、Near Line SAS、SATA、SCSI 混合使用,接著再以「儲存空間(Storage Space)」機制將儲存資源池所建立的硬碟空間,依照您所選擇的 RAID 等級進行劃分。在 RAID 等級劃分上支援三種分別是「RAID-0(Simple)、RAID-1(Mirror)、RAID-5(Parity)」,甚至連「熱備援(Hot Spare)」功能也都有支援,最後則是指定採用「固定(Fixed)、精簡(Thin)」磁碟格式,以及配置多少磁碟空間便完成設定。
此外,您也可以加入 SSD 固態硬碟後啟用「儲存分層(Tiered Storage)」機制,自動將經常存取的資料(稱之為 Hot Data),存放到存取速度最快的 SSD 固態硬碟中,而不常存取的資料(稱之為 Cold Data),則存放到存取速度較普通的 SAS 或 SATA 硬碟中,並且配合啟用「寫入快取(Write-Back Cache)」機制後,更能加快資料寫入的速度有效提升 IOPS 工作負載。
圖 3、儲存空間(Storage Space)、儲存分層(Tiered Storage)、寫入快取(Write-Back Cache) 示意圖
2、實作環境
- 發行公司: Microsoft
- 官方網址: http://aka.ms/ws2012r2
- 軟體版本: Windows Server 2012 R2
- 評估下載: http://aka.ms/2012r2
圖 4、下載 Windows Server 2012 R2 安裝映象檔
3、儲存空間主機 - 硬體需求
JBOD 機箱
原則上,您只要採用單純的「JBOD 機箱(JBOD Enclosures)」,並且安裝 Windows Server 2012 R2 作業系統,那麼便可以依靠內建的「儲存空間(Storage Space)」機制,將 JBOD 機箱搖身一變為多功能的儲存設備。原則上,您可以向所採購的 JBOD 機箱供應商,確認所採購的 JBOD 機箱是否支援儲存空間功能。此外,當您想要判斷 JBOD 機箱是否支援,實體硬碟機箱及插槽的識別功能時,可以採用「Get-PhysicalDisk」的 PowerShell 指令進行判斷,指令輸出結果中「EnclosureNumber、SlotNumber」欄位若有值,便表示該 JBOD 機箱支援識別功能。
圖 5、此實作環境為虛擬主機,因此不支援 JBOD 機箱識別功能
磁碟陣列卡(RAID Card)
事實上,並不建議您採用磁碟陣列卡在儲存空間主機上,而是改為採用單純的「HBA卡(Host Bus Adapters)」之後,與每一顆實體硬碟進行連接即可。如果,您採用磁碟陣列卡的話,那麼建議您將磁碟陣列卡所有的特色功能「停用(Disable)」,舉例來說 應該要將「快取資料(Cache Data)」功能關閉,也就是僅採用「JBOD(Just a Bunch Of Disks)」功能,去連接每一顆實體硬碟即可。硬碟類型
在實體硬碟的類型方面,儲存空間機制支援採用主流的「SAS(Serial Attached SCSI)」、「NL-SAS(Near-Line SAS)」、「SATA(Serial Advanced Technology Attachment)」介面硬碟。原則上,並不建議使用 USB 介面硬碟在儲存空間機制中,倘若需要採用的話那麼請採用高效能的「USB 3.0」介面,並且連接至不同的 USB 控制器(不要使用 USB 集線器)。此外,每顆實體硬碟的儲存空間應至少為「4 GB」以上,並且必須為空白為格式化過的硬碟。
4、部署儲存空間
確認 JBOD 機箱或實體伺服器,符合部署儲存空間的要求之後,只要三個操作步驟即可建立儲存空間,整個建立流程為「建立儲存集區 > 建立虛擬磁碟 > 建立磁碟區」。
圖 6、儲存空間的建立流程
步驟 1、建立儲存集區
在建立「儲存集區(Storage Pool)」的步驟中,便是將所有實體硬碟進行「串連組合」的動作,也就是將一堆實體硬碟集合成一個大的儲存資源池。此次實作環境當中,為了讓讀者比較容易了解相關虛擬磁碟的功能性,因此我們將會建立三個不同的儲存集區,以搭配後續不同容錯等級的虛擬磁碟。下列為三個儲存集區的名稱,以及所組成的實體硬碟空間及顆數資訊:
- SimplePool: 50GB *1顆、100GB *1顆
- 2MirrorPool: 200GB *2顆
- 3MirrorPool: 300GB *5顆
順利登入 Windows Server 2012 R2 之後,請開啟伺服器管理員後,依序點選「檔案和存放服務 > 磁碟區 > 存放集區」項目,預設情況下在「儲存集區」設定區塊當中,已經存在「Primordial」的原始集區,點選該項目後在右下角視窗中,將會顯示此台主機所連接的實體硬碟資訊。
圖 7、此台主機所連接的所有實體硬碟資訊
首先,我們來建立第一個存放集區,請配合 Ctrl 鍵點選「50GB、100GB」硬碟後,在右鍵選單中選擇「新增存放集區」項目。
圖 8、準備建立第一個存放集區
在彈出的新增存放集區精靈視窗中,請按下一步鈕繼續。在指令存放集區和子系統頁面中,請輸入此次實作的第一個存放集區名稱「SimplePool」後,按下一步鈕繼續新增存放集區流程。
圖 9、指定存放集區名稱
在指定要加到存放集區的實體磁碟頁面中,可以看到自動勾選剛才所選取的 50GB 及 100GB 二顆硬碟。值得注意的部份為「配置」欄位,此下拉式選單預設值為「自動」,當您將該顆硬碟設定為「熱備援(Hot Spares)」時,表示該顆硬碟並不會加入到存放集區當中而是通電備援狀態,一旦發現有硬碟發生故障損壞的情況時,便會立即加入存放集區進行修復作業。
圖 10、指定要加入存放集區的硬碟及配置模式
在確認選取項目頁面中,再次檢視剛才存放集區的設定,以及指定的硬碟及配置模式是否正確,確認無誤後按下「建立」鈕即可。當存放集區建立完畢後,回到伺服器管理員視窗中,可以看到「存放集區」設定區塊內,新增了剛才所建立的存放集區 SimplePool,同時在右下方的實體磁碟區塊中,可以發現剛才的 50GB、100GB 硬碟已經「消失」。
圖 11、SimplePool 存放集區建立完成
同樣的存放集區建立方式,請為二顆 200GB 硬碟建立名稱為「2MirrorPool」的存放集區,以及五顆 300GB 硬碟建立名稱為「3MirrorPool」的存放集區。當三個存放集區都建立完畢後,您可以發現 Primordial 原始集區已經「消失」不見(因為已經沒有可用硬碟)。
圖 12、三個存放集區都建立完畢
步驟 2、建立虛擬磁碟
順利建立好存放集區後,接著便是進行第二個步驟也就是建立「虛擬磁碟(Virtual Disk)」的動作。請於伺服器管理員視窗中,在虛擬磁碟設定區塊內,點選「工作 > 新增虛擬磁碟」項目,準備在剛才建立的存放集區中建立虛擬磁碟。
圖 13、準備新增虛擬磁碟
在彈出的新增虛擬磁碟精靈視窗中,請直接按下一步鈕繼續。在選取儲存集區頁面中,請先選擇要在哪個存放集區中建立虛擬磁碟,我們先選擇在 SimplePool 存放集區中建立,點選後請按下一步鈕。
圖 14、點選要建立虛擬磁碟的存放集區
在指定虛擬磁碟名稱頁面中,請填入虛擬磁碟的名稱此實作為「SimpleDisk」。此外,因為實作環境當中並沒有 SSD 固態硬碟,因此可以看到並無法勾選「在此虛擬磁碟上建立儲存層」選項,也就是無法啟用「儲存分層(Multi-Tiered Storage Spaces)」機制。
圖 15、指定虛擬磁碟名稱
在選取儲存配置頁面中,便是選擇要賦予虛擬磁碟怎樣的容錯等級,一共有「簡單(Simple)、鏡像(Mirror)、同位元檢查(Parity)」三種類型,此實作中請為 SimpleDisk 選擇採用 Simple 容錯模式。下列將針對這三種類型進行詳細說明:
- 簡單(Simple): 至少需要「1 顆」實體硬碟,類似於 RAID-0 的運作概念。優點是會將資料等量的分散在不同的實體硬碟當中,因此資料的讀取及寫入效能優於其它二種類型,所以適合存放應用程式高效能暫存區,或者容易重新建立及不需要復原的應用程式資料。但是,主要的缺點便是無法提供容錯保護機制,一旦其中 1 顆實體硬碟損壞,那麼整個存放集區便會損毀。
- 鏡像(Mirror): 類似於 RAID-1 的運作概念,但是又細分為「雙向鏡像(2-Way Mirror)」及「三向鏡像(3-Way Mirror)」二種類型,當採用雙向鏡像時至少需要「2 顆」實體硬碟,而採用三向鏡像時至少需要「5 顆」實體硬碟。優點是具有資料可靠性,在每次進行資料寫入作業時,透過鏡像機制將資料複寫出第二份或第三份複本,其中雙向鏡像可允許實體硬碟損壞1顆,而三向鏡像則允許實體硬碟損壞2顆仍能正常運作。此容錯模式用於大多數的部署方案,例如 適合用於一般用途的檔案共用,或是儲存虛擬硬碟(VHD / VHDX)的程式庫,此外,透過「DRT(Dirty Region Tracking)」機制,可以預防非計畫性停機事件發生時,有效維持資料的一致性。缺點則是因為要複寫多份複本,因此會降低整體的可用儲存空間,但是與同位元檢查模式相比除了較多的可用空間之外,更擁有「較低的存取延遲(Lower Access Latency)」。
- 同位元檢查(Parity): 至少需要「3 顆」實體硬碟,類似於 RAID-5 的運作概念。優點是具有資料可靠性,在資料寫入過程中會自動將資料及同位元資訊,分散在不同顆實體硬碟當中,因此可允許實體硬碟損壞1顆仍能正常運作。一般來說,會將此容錯模式部署於需要高度「循序寫入(Sequential Write)」的工作負載,舉例來說 「封存(Archive)」日誌檔、備份(Backup)...等作業就很適合。同時,透過「日誌記錄(Journaling)」機制,能夠預防非計畫性停機事件發生時,有效維持資料的一致性。缺點則是需要同位元檢查機制保持資料可用性,因此會降低整體的可用儲存空間。
圖 16、為 SimpleDisk 選擇採用 Simple 容錯模式
請注意!! 當實作環境當中,有採用 SSD 固態硬碟並啟用儲存分層機制後,在儲存配置頁面當中,將看不到「同位元檢查(Parity)」項目,因為儲存分層機制與此容錯模式並不相容。
在指定佈建類型頁面中,可以看到有「精簡(Thin)、固定式(Fixed)」二種佈建類型,此實作中為SimpleDisk採用固定式佈建類型。下列將針對這二種佈建類型進行詳細說明:
- 精簡(Thin): 儲存空間採「動態成長」的運作方式,舉例來說 當您配置虛擬磁碟採用精簡佈建的方式後,若配置的儲存空間為 1 TB 但實際上僅使用 50 GB 空間時,那麼對於儲存空間管理上便僅佔用 50GB 的儲存空間。雖然,採用此佈建方式擁有「超量使用(Over-Commit)」的優點,例如 儲存空間僅有 100GB,卻可以先建立採用精簡佈方式的 500 GB 儲存空間,但也正因為如此管理者必須要注意儲存空間的真實使用情況,以避免真的發生儲存空間不敷使用的情形。
- 固定式(Fixed): 儲存空間採「一次佔用」的運作方式,舉例來說 當您為虛擬磁碟採用固定式的佈建方式後,便會一次佔用所有的運作方式,所以您若配置儲存空間為 1TB 的話,那麼底層便需要真的擁有大於 1TB 的儲存資源,否則便會發生佈建錯誤的情況。此外,在「同一個」存放集區當中,是可以「同時」使用精簡及固定式來佈建虛擬磁碟,舉例來說 您可以使用精簡佈建的虛擬磁碟來儲存資料庫,以及使用固定式佈建的虛擬磁碟來儲存資料庫記錄檔。
圖 17、為 SimpleDisk 選擇採用固定式佈建類型
請注意!! 當實作環境當中,採用 SSD 固態硬碟並啟用儲存分層機制後,在佈建類型頁面當中,將會發現「精簡(Thin)」選項會呈現灰色無法點選,因為儲存分層機制與此佈建類型並不相容。
在指定虛擬磁碟的大小頁面中,便可以選擇「指定大小」項目後,輸入儲存空間數值及儲存單位,或者點選「大小上限」項目直接採用所有可用空間。
圖 18、指定虛擬磁碟空間大小
你可能會覺得很奇怪? 明明是 50GB + 100GB 組合而成的存放集區,為何當選擇固定大小佈建模式後,只能建立 98GB 的虛擬磁碟空間? 因為我們採用 Simple 的容錯模式,且組合的存放集區其中一顆實體硬碟最大可用空間為 49GB,所以採用 Simple 分散式存放的概念各佔用 49GB,便只能建立最大 98GB 的虛擬磁碟空間,倘若採用的是精簡佈建模式,那麼便可以使用所有的實體硬碟空間。
再次確認後按下「建立」鈕,便會立即建立虛擬磁碟。此時在「虛擬磁碟」設定區塊中,便會出現所建立的 SimpleDisk 虛擬磁碟。
圖 19、SimpleDisk 建立完成
同樣的虛擬磁碟建立方式,請為 2MirrorPool 存放集區建立固定佈建模式,名稱為「2MirrorDisk」的虛擬磁碟,其儲存空間大小為 198GB。以及 3MirrorPool 存放集區建立固定佈建模式,名稱為「3MirrorDisk」的虛擬磁碟,其儲存空間大小為 497GB。將虛擬磁碟都建立完成後,切換到「磁碟」項目便能看到有三顆磁碟,並採用預設的 GPT 磁碟分割格式。
圖 20、三顆虛擬磁碟都建立完畢
步驟 3、建立磁碟區
最後,只要點選虛擬磁碟並在右鍵選單中選擇「新增磁碟區」項目,準備格式化並給予磁碟機代號即可使用。在彈出的新增磁碟區精靈頁面中,請直接按下一步鈕繼續。此實作環境中,我們針對 SimpleDisk 虛擬磁碟,格式化為 NTFS 檔案系統並給予磁碟區標籤「SimpleVolume」,以及磁碟機代號「S 槽」。
圖 21、將 SimpleDisk 虛擬磁碟格式化,並給予磁碟區標籤及代號
同樣的格式化方式,將 2MirrorDisk 虛擬磁碟,格式化為 NTFS 檔案系統並給予磁碟區標籤「2MirrorVolume」,以及磁碟機代號「M 槽」。以及,將 3MirrorDisk 虛擬磁碟,格式化為 NTFS 檔案系統並給予磁碟區標籤「3MirrorVolume」,以及磁碟機代號「W 槽」。完畢格式化的動作之後,此時開啟檔案總管便能看到所建立的三個磁碟區。
圖 22、三個磁碟區格式化完成後,便能開始存放資料
5、測試資料可用性
接著,我們著手測試在資料寫入途中,三種不同的容錯模式其資料可用性為何? 請開啟三個命令提示字元視窗,並分別切換到「S :、M :、W :」三個磁碟區後,鍵入指令「for /l %i in(1,1,10000)do fsutil file createnew %i 1024」但先不要執行,此指令稍後按下 Enter 鍵之後,便會依序建立「1 ~ 10,000」個 1KB 大小的檔案。
圖 23、準備測試資料可用性
當按下 Enter 鍵之後,在1萬個檔案建立期間我們分別將 50GB 硬碟,以及 200GB、300GB 硬碟各移除一顆,以便測試及觀察資料可用性。當您將三顆硬碟移除後,可以發現採用Simple容錯模式的「S 槽」消失,所以命令提示字元顯示「工作目錄不正確」,而採用 2-Way / 3-Way 鏡像容錯模式的「M 槽、W 槽」則持續建立檔案當中。
圖 24、Simple 容錯模式無法承受硬碟損壞
請注意!! 移除實體硬碟後,便會觸發 Event ID 157 的錯誤事件識別碼,說明「磁碟已被意外移除」。若實體硬碟真的發生故障損壞事件,則會觸發 Event ID 154 的錯誤事件識別碼。
切換回伺服器管理員視窗中,點選存放集區項目可以看到,三個存放集區都出現警告圖示,若查看故障損壞的實體硬碟內容,可以發現健康狀態「狀況良好 > 警告」、操作狀態「確定 > 通訊中斷」、詳細資料值「SAS > Unknown」。
圖 25、實體硬碟故障損壞,觸發存放集區告警機制
6、修復存放集區
因為 Simple 存放集區已經無法修復,因此我們僅為主機分別再新增 1 顆 200GB 及 300GB 硬碟。此時,您會看到 Primordial 初始集區再度出現,請點選 2MirrorPool 存放集區,並在右鍵選單中點選「新增實體磁碟」將 200GB 硬碟加入,以及點選 3MirrorPool 存放集區後,將 300GB 硬碟加入。
圖 26、加入新的實體硬碟至所屬存放集區當中
此時,在實體磁碟區塊中便會看到新加入的磁碟,接著我們必須要將故障損壞的實體硬碟,指定其使用狀態由「自動(Auto-Select) > 已淘汰(Retired)」,請執行 PowerShell 指令,手動指定故障損壞的實體硬碟狀態。
圖 27、執行 PowerShell 指令,手動指定故障損壞的實體硬碟狀態
請注意!! 若未執行指定故障損壞的實體硬碟狀態,稍後的修復作業將無法順利執行,會發現修復作業瞬間就結束且無法修復完成。
接著,請點選「虛擬磁碟」後在右鍵選單中選擇「修復虛擬磁碟」項目,便可以執行修復作業。當修復作業執行完畢後,便會看到原本虛擬磁碟的警告圖示「消失」了。
圖 28、執行修復虛擬磁碟中
最後,我們便可以放心移除故障損壞的實體硬碟,請點選故障硬碟在右鍵選單中選擇「移除磁碟」項目即可。當刪除故障損壞的實體硬碟之後,存放集區的警告圖示也隨之「消失」。
圖 29、移除故障損壞的實體硬碟