存儲極客 | 4KB扇區(qū)硬盤來了,RAID、VMware兼容不?
大家都知道,在傳統(tǒng)的PC架構(gòu)中基本的I/O單元——磁盤扇區(qū)大小是512byte(字節(jié))。時至今日,4KB扇區(qū)硬盤已經(jīng)在消費(fèi)級市場廣泛應(yīng)用,那么企業(yè)存儲的情況如何呢?物理4KB扇區(qū)還需要模擬成512byte嗎?
圍繞4KB扇區(qū)硬盤,由于大家在這方面了解的基礎(chǔ)不同??赡軙腥缦碌囊蓡枺?/p>
1、為什么會有4KB扇區(qū)硬盤?好處在哪里?2、原生4KB扇區(qū)和模擬512byte,兼容性有什么差別?3、4KB扇區(qū)對性能的影響4、軟硬件生態(tài)系統(tǒng),需要做哪些配合?5、SSD目前主要還是仿真磁盤塊設(shè)備來使用,它是512byte還是4KB設(shè)備呢?6、在RAID陣列和虛擬機(jī)環(huán)境,硬件與Guest OS之間多了一個抽象層,這是否也會影響到4KB兼容?
以上6點(diǎn)相互關(guān)聯(lián),因此在本文中都會有所涉及。首先引起我們注意的是,近日有一份來自戴爾的資料,其中提到了2.5” 2TB 7.2K NLSAS(近線SAS)HDD的引入,這款硬盤采用的是512byte仿真扇區(qū)大小。
4KB扇區(qū)硬盤與生態(tài)系統(tǒng)概述
由于IT棧中的組件默認(rèn)針對512b扇區(qū)大小已經(jīng)30年了,下面我們來看看針對4KB扇區(qū)硬盤,整個生態(tài)系統(tǒng)需要分析/升級的地方。
➤ 服務(wù)器BIOS/UEFI – 支持4K可能需要UEFI – 傳統(tǒng)BIOS需要修改來增加針對4KB原生驅(qū)動器的支持。
➤ 存儲控制器(HBA)– 驅(qū)動和firmware需要改變。
➤ RAID stack(位于RAID卡和陣列控制器)–驅(qū)動和firmware需要改變。
➤ OS stack – 操作系統(tǒng)必須是4K感知才能使用4K原生驅(qū)動器;512e驅(qū)動器對于許多組件都支持,但是扇區(qū)對齊決定了獲得***性能。
➤ 文件系統(tǒng) – 基于不同OS版本,這里可能有一些問題。微軟對NTFS 做了一些改動,針對在Windows 7/2008 R2中支持512e。
➤應(yīng)用 – 需要理解那些進(jìn)行unbuffered(未緩沖)寫入的應(yīng)用。
➤ Hypervisors – 512e可以被用于當(dāng)前的微軟/VMware hypervisors(性能可能變差),但 VHD 1.0是硬性編碼到512 byte并且沒有當(dāng)前的hypervisor支持4K原生 – 必須支持VHD 2.0規(guī)范來獲得4K原生支持。
➤ 開發(fā)工具 – 分區(qū)對齊對于在512e 驅(qū)動器上達(dá)到***性能是個關(guān)鍵。4K原生– 還沒有數(shù)據(jù)來理解開發(fā)方面的問題。
什么是4KB高級格式化、路線圖
也就是說,在磁記錄密度不變的情況下,“高級格式化”能夠提供更大的實(shí)際可用容量。隨著硬盤上的記錄單元——磁極尺寸不斷縮小,容量增速放緩,4KB扇區(qū)是未來大容量硬盤的趨勢。

參考上圖,512byte原生扇區(qū)硬盤的生命周期將在2017年終止(部分企業(yè)級產(chǎn)品和老型號可能例外)。按照這個之前的預(yù)計,以3.5” 7200轉(zhuǎn)為例***是4TB,超出該容量物理扇區(qū)只有4KB了?實(shí)際上我們看到有硬盤廠商推出6TB 512byte物理扇區(qū)的型號,包括密封充氦7碟片和非充氦普通6碟片,但繼續(xù)增大容量還是需要4KB扇區(qū)。
4KB扇區(qū)仿真512byte已經(jīng)廣泛應(yīng)用于客戶端,畢竟即使出現(xiàn)寫放大或者未對齊寫入產(chǎn)生更多I/O,PC用戶對磁盤性能也沒有那么敏感,但企業(yè)級應(yīng)用則要保守多了。除了4KB扇區(qū)仿真512byte,原生4KB扇區(qū)硬盤直到2014年晚期才發(fā)布針對企業(yè)級市場的版本,它無法工作在Windows Server 8(2012)之前的操作系統(tǒng),并且與上文中我們介紹的生態(tài)系統(tǒng)密切相關(guān)。
而對齊的情況則簡單多了,盡管中間要經(jīng)過硬盤模擬512bytes扇區(qū)的過程,但每個4KB的I/O操作都是對應(yīng)到一個物理扇區(qū)。屬于比較理想的情況。
首先對于Windows Server 2003、RHEL 5和SLES 10來說,512e硬盤首先是可以用的,只是操作系統(tǒng)“意識不到”而當(dāng)成512n來用了。微軟如今已經(jīng)停止了對Server 2003的支持(戴爾等廠商為用戶提供遷移方案和服務(wù)),如果我們在這些較早的操作系統(tǒng)上使用第三方分區(qū)工具,或者手動指定開始扇區(qū)建立對齊的分區(qū),應(yīng)該可以規(guī)避一部分性能影響。
對于4Kn來說,這三款操作系統(tǒng)應(yīng)該就沒有辦法兼容了,同樣的還有VMware ESXi 4.x和5.x。盡管,VMware Hypervisor支持自動分區(qū)對齊(VMFS-3和VMFS-5分別以第128和2048為起始扇區(qū)),但目前的ESXi 6.0和VSAN版本還是無法感知512e和4Kn,其中512e硬盤由于潛在性能問題而不被VMware官方支持。
而對于“Misaligned”未對齊配置,如果要寫入到虛擬機(jī)中的OS block 1,有2個VMFS子塊被寫入,并且每個子塊需要2次讀-修改-寫周期(指改寫而不是寫入空白塊,因?yàn)槊堪雮€VMFS block在“錯位”情況下也會對應(yīng)到2個物理扇區(qū))。這樣就有可能在底層產(chǎn)生8次I/O?
我們在VMware網(wǎng)站查詢了更多關(guān)于4KB扇區(qū)兼容的情況,這方面應(yīng)該還在遙遠(yuǎn)一些的Roadmap中。畢竟對于Hypervisor而言廣泛的向后兼容性相當(dāng)重要,512e我覺得將來會支持,而如果上層虛擬機(jī)就是要在4Kn硬盤上進(jìn)行512byte的磁盤I/O,軟件廠商沒義務(wù)去做這個轉(zhuǎn)換啊。
既然VMware如此,估計KVM和Xen的情況也不會好多少,對此我了解有限就不班門弄斧了。而Hyper-V可能是個特例吧,因?yàn)槲④浱摂M化平臺上跑Windows虛擬機(jī)比較多,那么用VHD 2.0規(guī)范的4K原生磁盤格式運(yùn)行Server 2012虛擬機(jī)應(yīng)該不會出問題。
“對齊”并不代表性能就完全達(dá)到512n的水平,如果是小于4KB的隨機(jī)寫入512e硬盤還是會產(chǎn)生寫放大或者懲罰。上面的軟件兼容情況也適用于RAID卡和磁盤陣列的LUN,因?yàn)椴僮飨到y(tǒng)和虛擬機(jī)HyperVisor對它們是與本地磁盤同樣的方式來看待。下面我們再來談一下磁盤控制器對4KB扇區(qū)的兼容支持情況。
PERC卡和MD控制器的4KB扇區(qū)支持
對于這些傳統(tǒng)磁盤控制器,對上層主機(jī)呈現(xiàn)的LUN(邏輯盤)都是512byte扇區(qū)。
到了新一代的PERC 9、MD38xx陣列控制器,以及未來的服務(wù)器軟件RAID,已經(jīng)能夠支持原生4K扇區(qū)硬盤,并提供給主機(jī)4K格式的LUN。有同行朋友說這樣做在一些場景下有性能的改善,也聽到有專家說微乎其微。而我們想提醒大家的是:在選擇這種“前衛(wèi)”的配置之前,部分存儲產(chǎn)品已經(jīng)做好了準(zhǔn)備,但上層軟件兼容性需要用戶自己注意,參考包括本文在內(nèi)的資料,征詢工程師/技術(shù)顧問的建議,必要情況下進(jìn)行測試。
SSD的“扇區(qū)”是多大?
這里也要提一句SSD,據(jù)我們了解目前大多數(shù)的SAS/SATA SSD,在RAID卡和磁盤控制器管理程序中顯示的物理和邏輯扇區(qū)大小都是512Byte,同樣是兼容性考慮。其實(shí)閃存的最小寫入單元——頁面大小目前一般為4KB或者8KB,那么“扇區(qū)”也都是模擬出來的。測試反映這種模擬對性能的影響不大,因?yàn)镕TL的存在,數(shù)據(jù)在SSD上的邏輯地址與物理閃存位置的對應(yīng)關(guān)系都是可變的,來自主機(jī)小于4KB的寫入也可能會合并到一個閃存頁面上。
PCIe SSD(閃存卡)的情況不太一樣,有些廠商在出貨時“格式化”為4KB扇區(qū),如果遇到軟件應(yīng)用不兼容的情況(比如Oracle數(shù)據(jù)庫等),可以使用專門的工具轉(zhuǎn)換格式為512byte扇區(qū)大小。
當(dāng)存儲虛擬化網(wǎng)關(guān)遇上“4KB LUN”
從前端到后端都呈現(xiàn)4KB也許會在未來某個時候流行。而對于存儲控制器而言,使用原生4KB扇區(qū)硬盤,卻向上給主機(jī)呈現(xiàn)512byte的LUN單從技術(shù)實(shí)現(xiàn)上看卻也可行,只要您不在乎性能打折扣——小于4KB的IO都會被放大至一個硬盤扇區(qū),一次下發(fā)8個512byte寫請求也可能會落到2個4KB扇區(qū)上(如果文件系統(tǒng)/應(yīng)用層未對齊的話)。
這就是在控制器層面的“欺騙”,之前講的512e是在硬盤層面上“欺騙”。
欺騙一詞,用在這里并不是貶義。RAID技術(shù)本身就是將一組硬盤“虛擬化”為一塊盤呈現(xiàn)給主機(jī)。由此我們還聯(lián)想到被戲稱為“上騙主機(jī),下騙陣列”的存儲虛擬化設(shè)備,它們與RAID控制器***的不同就是其后端管理的存儲單元由磁盤/SSD變成了陣列的LUN。
存儲虛擬化對于后端陣列表現(xiàn)為“主機(jī)”,而在前端主機(jī)看來它又是一臺“陣列”,基本原理可以簡單解釋為用Initiator導(dǎo)入LUN,再將其用Target導(dǎo)出給主機(jī),中間可選加入數(shù)據(jù)服務(wù)。目前我們還沒留意到有存儲虛擬化產(chǎn)品宣稱兼容4KB扇區(qū)格式的LUN?這一點(diǎn)在技術(shù)上實(shí)現(xiàn)估計并不是太難,關(guān)鍵取決于兼容性測試的工作量,以及實(shí)際的需求。
舉例來說,一些存儲虛擬化產(chǎn)品根據(jù)設(shè)置會在后端設(shè)備的LUN上再做一次條帶化,以前都是按照512byte扇區(qū)來考慮,數(shù)據(jù)切塊大小可以直接按一定數(shù)量扇區(qū)來計算就行。而如果扇區(qū)大小變成4KB,要是繼續(xù)保持原有扇區(qū)數(shù)的話就意味著“條帶”增大了8倍。對于導(dǎo)出給前端主機(jī)的LUN容量,也會存在類似的問題。
總結(jié)硬盤廠商對4KB扇區(qū)支持的動力毋庸置疑,但在邏輯上是否繼續(xù)模擬512byte則取決于生態(tài)系統(tǒng)的進(jìn)展。
對于企業(yè)存儲而言,由于一些傳統(tǒng)應(yīng)用(如:Oracle數(shù)據(jù)庫)的I/O操作最小單位仍小于4KB,使用原生512byte扇區(qū)硬盤可以保證***的性能;模擬512byte能夠兼容,但容易產(chǎn)生性能影響;至于原生4KB硬盤,則要求文件系統(tǒng)、卷管理器具備相應(yīng)的支持,否則會報錯。
目前一些比較新的服務(wù)器、磁盤陣列上的存儲控制器,已經(jīng)能夠兼容原生4KB硬盤。