4KB扇區(qū)硬盤(pán)開(kāi)始在市場(chǎng)上廣泛使用,那么企業(yè)存儲(chǔ)的情況如何呢?物理4KB扇區(qū)還需要模擬成512byte嗎?
圍繞4KB扇區(qū)硬盤(pán),由于大家在這方面了解的基礎(chǔ)不同。可能會(huì)有如下的疑問(wèn):
1、為什么會(huì)有4KB扇區(qū)硬盤(pán)?好處在哪里?2、原生4KB扇區(qū)和模擬512byte,兼容性有什么差別?3、4KB扇區(qū)對(duì)性能的影響4、軟硬件生態(tài)系統(tǒng),需要做哪些配合?5、SSD目前主要還是仿真磁盤(pán)塊設(shè)備來(lái)使用,它是512byte還是4KB設(shè)備呢?6、在RAID陣列和虛擬機(jī)環(huán)境,硬件與Guest OS之間多了一個(gè)抽象層,這是否也會(huì)影響到4KB兼容?
以上6點(diǎn)相互關(guān)聯(lián),因此在本文中都會(huì)有所涉及。首先引起我們注意的是,近日有一份來(lái)自戴爾的資料,其中提到了2.5” 2TB 7.2K NLSAS(近線SAS)HDD的引入,這款硬盤(pán)采用的是512byte仿真扇區(qū)大小。
上表列出了3種硬盤(pán)扇區(qū)格式類型。512n——物理格式化和向主機(jī)呈現(xiàn)的邏輯扇區(qū)字節(jié)數(shù)均為512byte,早期的硬盤(pán)都是這樣;512e——物理扇區(qū)大小為4096字節(jié),邏輯上仿真為(8個(gè))512字節(jié)扇區(qū),為了兼容性的一種過(guò)渡;4Kn——即原生4KB,物理和邏輯扇區(qū)字節(jié)數(shù)都是4KB。
4KB扇區(qū)硬盤(pán)與生態(tài)系統(tǒng)概述
由于IT棧中的組件默認(rèn)針對(duì)512b扇區(qū)大小已經(jīng)30年了,下面我們來(lái)看看針對(duì)4KB扇區(qū)硬盤(pán),整個(gè)生態(tài)系統(tǒng)需要分析/升級(jí)的地方。
服務(wù)器BIOS/UEFI – 支持4K可能需要UEFI – 傳統(tǒng)BIOS需要修改來(lái)增加針對(duì)4KB原生驅(qū)動(dòng)器的支持。
存儲(chǔ)控制器(HBA)– 驅(qū)動(dòng)和firmware需要改變。
RAID stack(位于RAID卡和陣列控制器)–驅(qū)動(dòng)和firmware需要改變。
OS stack – 操作系統(tǒng)必須是4K感知才能使用4K原生驅(qū)動(dòng)器;512e驅(qū)動(dòng)器對(duì)于許多組件都支持,但是扇區(qū)對(duì)齊決定了獲得最好性能。
文件系統(tǒng) – 基于不同OS版本,這里可能有一些問(wèn)題。微軟對(duì)NTFS 做了一些改動(dòng),針對(duì)在Windows 7/2008 R2中支持512e。
應(yīng)用 – 需要理解那些進(jìn)行unbuffered(未緩沖)寫(xiě)入的應(yīng)用。
Hypervisors – 512e可以被用于當(dāng)前的微軟/VMware hypervisors(性能可能變差),但 VHD 1.0是硬性編碼到512 byte并且沒(méi)有當(dāng)前的hypervisor支持4K原生 – 必須支持VHD 2.0規(guī)范來(lái)獲得4K原生支持。
開(kāi)發(fā)工具 – 分區(qū)對(duì)齊對(duì)于在512e 驅(qū)動(dòng)器上達(dá)到最好性能是個(gè)關(guān)鍵。4K原生– 還沒(méi)有數(shù)據(jù)來(lái)理解開(kāi)發(fā)方面的問(wèn)題。
什么是4KB高級(jí)格式化、路線圖
如上圖,原生512n每個(gè)扇區(qū)都有50bytes的ECC糾錯(cuò)碼;4KB扇區(qū)將這個(gè)ECC區(qū)域合并、擴(kuò)大(但沒(méi)有50bytes的8倍那么大),并省去了間隔、地址標(biāo)記等空間,因此格式化效率提升到大約97%,并且能否檢測(cè)和糾正更大的介質(zhì)錯(cuò)誤。
也就是說(shuō),在磁記錄密度不變的情況下,“高級(jí)格式化”能夠提供更大的實(shí)際可用容量。隨著硬盤(pán)上的記錄單元——磁極尺寸不斷縮小,容量增速放緩,4KB扇區(qū)是未來(lái)大容量硬盤(pán)的趨勢(shì)。
參考上圖,512byte原生扇區(qū)硬盤(pán)的生命周期將在2017年終止(部分企業(yè)級(jí)產(chǎn)品和老型號(hào)可能例外)。按照這個(gè)之前的預(yù)計(jì),以3.5” 7200轉(zhuǎn)為例最大是4TB,超出該容量物理扇區(qū)只有4KB了?實(shí)際上我們看到有硬盤(pán)廠商推出6TB 512byte物理扇區(qū)的型號(hào),包括密封充氦7碟片和非充氦普通6碟片,但繼續(xù)增大容量還是需要4KB扇區(qū)。
4KB扇區(qū)仿真512byte已經(jīng)廣泛應(yīng)用于客戶端,畢竟即使出現(xiàn)寫(xiě)放大或者未對(duì)齊寫(xiě)入產(chǎn)生更多I/O,PC用戶對(duì)磁盤(pán)性能也沒(méi)有那么敏感,但企業(yè)級(jí)應(yīng)用則要保守多了。除了4KB扇區(qū)仿真512byte,原生4KB扇區(qū)硬盤(pán)直到2014年晚期才發(fā)布針對(duì)企業(yè)級(jí)市場(chǎng)的版本,它無(wú)法工作在Windows Server 8(2012)之前的操作系統(tǒng),并且與上文中我們介紹的生態(tài)系統(tǒng)密切相關(guān)。
物理、VMware虛擬機(jī)環(huán)境的“對(duì)齊/非對(duì)齊”寫(xiě)入這一段的幾張截圖來(lái)自IBM的一份文檔,其中“Misaligned”和“Aligned”分別表示在使用512e硬盤(pán)時(shí)非對(duì)齊和對(duì)齊的4KB I/O塊操作。由于4KB塊(比如對(duì)應(yīng)文件系統(tǒng)的頁(yè)面)操作需要先以8個(gè)512bytes邏輯扇區(qū)寫(xiě)入到硬盤(pán),再合并記錄到4KB物理扇區(qū),在非對(duì)齊的情況下,一個(gè)4KB邏輯寫(xiě)I/O對(duì)應(yīng)到2個(gè)物理磁盤(pán)扇區(qū),如果是新寫(xiě)入就會(huì)產(chǎn)生2次I/O;若是改寫(xiě)之前物理扇區(qū)中的數(shù)據(jù),則需要讀-更改-寫(xiě)的操作,這種非原子寫(xiě)入(non-atomic)最多可能產(chǎn)生4次I/O。
而對(duì)齊的情況則簡(jiǎn)單多了,盡管中間要經(jīng)過(guò)硬盤(pán)模擬512bytes扇區(qū)的過(guò)程,但每個(gè)4KB的I/O操作都是對(duì)應(yīng)到一個(gè)物理扇區(qū)。屬于比較理想的情況。
我們參考下這個(gè)表格里不同操作系統(tǒng)對(duì)高級(jí)格式化的感知情況。其中,Windows從Server 2008開(kāi)始能夠感知512e硬盤(pán)并自動(dòng)對(duì)齊分區(qū);Server 2012進(jìn)一步加入了對(duì)原生4Kn設(shè)備的支持。RHEL 6可以感知512e和4Kn硬盤(pán)并能自動(dòng)對(duì)齊;SLES 11能感知512e和4Kn硬盤(pán)卻無(wú)法自動(dòng)對(duì)齊?VMware ESXi 4.x和5.x都無(wú)法感知512e和4Kn硬盤(pán),但支持自動(dòng)分區(qū)對(duì)齊。這里有必要進(jìn)一步解釋下。
首先對(duì)于Windows Server 2003、RHEL 5和SLES 10來(lái)說(shuō),512e硬盤(pán)首先是可以用的,只是操作系統(tǒng)“意識(shí)不到”而當(dāng)成512n來(lái)用了。微軟如今已經(jīng)停止了對(duì)Server 2003的支持(戴爾等廠商為用戶提供遷移方案和服務(wù)),如果我們?cè)谶@些較早的操作系統(tǒng)上使用第三方分區(qū)工具,或者手動(dòng)指定開(kāi)始扇區(qū)建立對(duì)齊的分區(qū),應(yīng)該可以規(guī)避一部分性能影響。
對(duì)于4Kn來(lái)說(shuō),這三款操作系統(tǒng)應(yīng)該就沒(méi)有辦法兼容了,同樣的還有VMware ESXi 4.x和5.x。盡管,VMware Hypervisor支持自動(dòng)分區(qū)對(duì)齊(VMFS-3和VMFS-5分別以第128和2048為起始扇區(qū)),但目前的ESXi 6.0和VSAN版本還是無(wú)法感知512e和4Kn,其中512e硬盤(pán)由于潛在性能問(wèn)題而不被VMware官方支持。
上圖截自VMware網(wǎng)站,供大家參考
這張圖演示了在虛擬化環(huán)境下對(duì)齊和非對(duì)齊分區(qū)的情況。當(dāng)“Aligned”對(duì)齊時(shí),在Hypervisor層VMFS-5的文件塊大小統(tǒng)一為1MB,子塊(Sub-Blocks)大小8KB正好對(duì)應(yīng)2個(gè)物理扇區(qū)上的16個(gè)邏輯扇區(qū)。此時(shí)如果虛擬機(jī)的OS block正好與VMFS子塊對(duì)齊的話,等于就是與物理磁盤(pán)扇區(qū)對(duì)齊了,這樣還算好一些的情況。
而對(duì)于“Misaligned”未對(duì)齊配置,如果要寫(xiě)入到虛擬機(jī)中的OS block 1,有2個(gè)VMFS子塊被寫(xiě)入,并且每個(gè)子塊需要2次讀-修改-寫(xiě)周期(指改寫(xiě)而不是寫(xiě)入空白塊,因?yàn)槊堪雮€(gè)VMFS block在“錯(cuò)位”情況下也會(huì)對(duì)應(yīng)到2個(gè)物理扇區(qū))。這樣就有可能在底層產(chǎn)生8次I/O?
我們?cè)赩Mware網(wǎng)站查詢了更多關(guān)于4KB扇區(qū)兼容的情況,這方面應(yīng)該還在遙遠(yuǎn)一些的Roadmap中。畢竟對(duì)于Hypervisor而言廣泛的向后兼容性相當(dāng)重要,512e我覺(jué)得將來(lái)會(huì)支持,而如果上層虛擬機(jī)就是要在4Kn硬盤(pán)上進(jìn)行512byte的磁盤(pán)I/O,軟件廠商沒(méi)義務(wù)去做這個(gè)轉(zhuǎn)換啊。
既然VMware如此,估計(jì)KVM和Xen的情況也不會(huì)好多少,對(duì)此我了解有限就不班門弄斧了。而Hyper-V可能是個(gè)特例吧,因?yàn)槲④浱摂M化平臺(tái)上跑Windows虛擬機(jī)比較多,那么用VHD 2.0規(guī)范的4K原生磁盤(pán)格式運(yùn)行Server 2012虛擬機(jī)應(yīng)該不會(huì)出問(wèn)題。
“對(duì)齊”并不代表性能就完全達(dá)到512n的水平,如果是小于4KB的隨機(jī)寫(xiě)入512e硬盤(pán)還是會(huì)產(chǎn)生寫(xiě)放大或者懲罰。上面的軟件兼容情況也適用于RAID卡和磁盤(pán)陣列的LUN,因?yàn)椴僮飨到y(tǒng)和虛擬機(jī)HyperVisor對(duì)它們是與本地磁盤(pán)同樣的方式來(lái)看待。下面我們?cè)賮?lái)談一下磁盤(pán)控制器對(duì)4KB扇區(qū)的兼容支持情況。
PERC卡和MD控制器的4KB扇區(qū)支持
如上圖,左邊是比較早的戴爾服務(wù)器SAS RAID卡、HBA、主板集成軟RAID和MD家族陣列控制器。它們能夠支持512e仿真扇區(qū)的硬盤(pán),對(duì)于較早的操作系統(tǒng)可能需要補(bǔ)丁、對(duì)齊工具(比如讓NTFS文件系統(tǒng)的簇與物理扇區(qū)對(duì)齊)和驅(qū)動(dòng)更新。
對(duì)于這些傳統(tǒng)磁盤(pán)控制器,對(duì)上層主機(jī)呈現(xiàn)的LUN(邏輯盤(pán))都是512byte扇區(qū)。
到了新一代的PERC 9、MD38xx陣列控制器,以及未來(lái)的服務(wù)器軟件RAID,已經(jīng)能夠支持原生4K扇區(qū)硬盤(pán),并提供給主機(jī)4K格式的LUN。有同行朋友說(shuō)這樣做在一些場(chǎng)景下有性能的改善,也聽(tīng)到有專家說(shuō)微乎其微。而我們想提醒大家的是:在選擇這種“前衛(wèi)”的配置之前,部分存儲(chǔ)產(chǎn)品已經(jīng)做好了準(zhǔn)備,但上層軟件兼容性需要用戶自己注意,參考包括本文在內(nèi)的資料,征詢工程師/技術(shù)顧問(wèn)的建議,必要情況下進(jìn)行測(cè)試。
如上圖,這臺(tái)戴爾服務(wù)器配置了PERC 9系列RAID卡中的H730P Mini,它識(shí)別到當(dāng)前選定SAS硬盤(pán)的物理和邏輯扇區(qū)大小都是512Byte。
組建RAID之后的虛擬邏輯盤(pán)(LUN),自然也是512Byte扇區(qū)格式。當(dāng)您閱讀本文到這里,在此機(jī)器上如果換成512e或者4Kn的硬盤(pán),會(huì)產(chǎn)生什么樣的結(jié)果、有哪些注意事項(xiàng)就比較清楚了吧?
SSD的“扇區(qū)”是多大?
這里也要提一句SSD,據(jù)我們了解目前大多數(shù)的SAS/SATA SSD,在RAID卡和磁盤(pán)控制器管理程序中顯示的物理和邏輯扇區(qū)大小都是512Byte,同樣是兼容性考慮。其實(shí)閃存的最小寫(xiě)入單元——頁(yè)面大小目前一般為4KB或者8KB,那么“扇區(qū)”也都是模擬出來(lái)的。測(cè)試反映這種模擬對(duì)性能的影響不大,因?yàn)镕TL的存在,數(shù)據(jù)在SSD上的邏輯地址與物理閃存位置的對(duì)應(yīng)關(guān)系都是可變的,來(lái)自主機(jī)小于4KB的寫(xiě)入也可能會(huì)合并到一個(gè)閃存頁(yè)面上。
PCIe SSD(閃存卡)的情況不太一樣,有些廠商在出貨時(shí)“格式化”為4KB扇區(qū),如果遇到軟件應(yīng)用不兼容的情況(比如Oracle數(shù)據(jù)庫(kù)等),可以使用專門的工具轉(zhuǎn)換格式為512byte扇區(qū)大小。
當(dāng)存儲(chǔ)虛擬化網(wǎng)關(guān)遇上“4KB LUN”
從前端到后端都呈現(xiàn)4KB也許會(huì)在未來(lái)某個(gè)時(shí)候流行。而對(duì)于存儲(chǔ)控制器而言,使用原生4KB扇區(qū)硬盤(pán),卻向上給主機(jī)呈現(xiàn)512byte的LUN單從技術(shù)實(shí)現(xiàn)上看卻也可行,只要您不在乎性能打折扣——小于4KB的IO都會(huì)被放大至一個(gè)硬盤(pán)扇區(qū),一次下發(fā)8個(gè)512byte寫(xiě)請(qǐng)求也可能會(huì)落到2個(gè)4KB扇區(qū)上(如果文件系統(tǒng)/應(yīng)用層未對(duì)齊的話)。
這就是在控制器層面的“欺騙”,之前講的512e是在硬盤(pán)層面上“欺騙”。
欺騙一詞,用在這里并不是貶義。RAID技術(shù)本身就是將一組硬盤(pán)“虛擬化”為一塊盤(pán)呈現(xiàn)給主機(jī)。由此我們還聯(lián)想到被戲稱為“上騙主機(jī),下騙陣列”的存儲(chǔ)虛擬化設(shè)備,它們與RAID控制器最大的不同就是其后端管理的存儲(chǔ)單元由磁盤(pán)/SSD變成了陣列的LUN。
存儲(chǔ)虛擬化對(duì)于后端陣列表現(xiàn)為“主機(jī)”,而在前端主機(jī)看來(lái)它又是一臺(tái)“陣列”,基本原理可以簡(jiǎn)單解釋為用Initiator導(dǎo)入LUN,再將其用Target導(dǎo)出給主機(jī),中間可選加入數(shù)據(jù)服務(wù)。目前我們還沒(méi)留意到有存儲(chǔ)虛擬化產(chǎn)品宣稱兼容4KB扇區(qū)格式的LUN?這一點(diǎn)在技術(shù)上實(shí)現(xiàn)估計(jì)并不是太難,關(guān)鍵取決于兼容性測(cè)試的工作量,以及實(shí)際的需求。
舉例來(lái)說(shuō),一些存儲(chǔ)虛擬化產(chǎn)品根據(jù)設(shè)置會(huì)在后端設(shè)備的LUN上再做一次條帶化,以前都是按照512byte扇區(qū)來(lái)考慮,數(shù)據(jù)切塊大小可以直接按一定數(shù)量扇區(qū)來(lái)計(jì)算就行。而如果扇區(qū)大小變成4KB,要是繼續(xù)保持原有扇區(qū)數(shù)的話就意味著“條帶”增大了8倍。對(duì)于導(dǎo)出給前端主機(jī)的LUN容量,也會(huì)存在類似的問(wèn)題。
總結(jié)硬盤(pán)廠商對(duì)4KB扇區(qū)支持的動(dòng)力毋庸置疑,但在邏輯上是否繼續(xù)模擬512byte則取決于生態(tài)系統(tǒng)的進(jìn)展。
對(duì)于企業(yè)存儲(chǔ)而言,由于一些傳統(tǒng)應(yīng)用(如:Oracle數(shù)據(jù)庫(kù))的I/O操作最小單位仍小于4KB,使用原生512byte扇區(qū)硬盤(pán)可以保證最好的性能;模擬512byte能夠兼容,但容易產(chǎn)生性能影響;至于原生4KB硬盤(pán),則要求文件系統(tǒng)、卷管理器具備相應(yīng)的支持,否則會(huì)報(bào)錯(cuò)。
目前一些比較新的服務(wù)器、磁盤(pán)陣列上的存儲(chǔ)控制器,已經(jīng)能夠兼容原生4KB硬盤(pán)。想了解更多精彩教程請(qǐng)繼續(xù)關(guān)注武林網(wǎng)網(wǎng)站!
新聞熱點(diǎn)
疑難解答
圖片精選