磁盤按照實體扇區大小的不同分為三種512byte原生扇區硬碟(512n),4KB扇區仿真512byte(512E)磁盤,4kB扇區原生磁盤。
首先說實體扇區,扇區是硬碟上最小的讀寫機關,這個是硬碟決定的,不是作業系統決定的。當然可以被修改,但是需要作業系統支援,否則也不會有作業系統支援4k的問題了。扇區包含了資料和編号,校驗碼之類的資料。推出4k是因為現在硬碟可靠性上升了,用不着每512bytes搞一個校驗碼了,4096bytes搞一個校驗碼就可以滿足需求,還可以省出來存儲資料。簇是檔案系統的最小讀寫機關,簇是扇區的倍數,簇可以可以保證裡面的扇區是連續的。這兩個對磁盤性能都有影響,影響原因基本類似,主要是磁頭尋道耗時,4k扇區在讀取連續資料時相比512bytes,最優情況可以減少4倍尋道時間,簇保證扇區連續相當于把多個扇區打包成一個大扇區,保證連續讀取磁盤資料時候速度更快。
512n的實體扇區是512bytes,512e和4k原生磁盤的實體扇區是4k,其中512e是因為當時部分作業系統識别不了4k實體扇區,而做的相容方案。相對于512n磁盤,後兩者的讀寫效率要高很多原生512n每個扇區都有50bytes的ECC糾錯碼;4KB扇區将這個ECC區域合并、擴大(但沒有50bytes的8倍那麼大),并省去了間隔、位址标記等空間,是以格式化效率提升到大約97%,并且能否檢測和糾正更大的媒體錯誤。也就是說,在磁記錄密度不變的情況下,“進階格式化”能夠提供更大的實際可用容量。随着硬碟上的記錄單元——磁極尺寸不斷縮小,容量增速放緩,4KB扇區是未來大容量硬碟的趨勢。
512byte原生扇區硬碟的生命周期将在2017年終止(部分企業級産品和老型号可能例外)。按照這個之前的預計,以3.5” 7200轉為例最大是4TB,超出該容量實體扇區隻有4KB了?實際上我們看到有硬碟廠商推出6TB 512byte實體扇區的型号,包括密封充氦7碟片和非充氦普通6碟片,但繼續增大容量還是需要4KB扇區。
4KB扇區仿真512byte(512E)已經廣泛應用于用戶端,畢竟即使出現寫放大或者未對齊寫入産生更多I/O,PC使用者對磁盤性能也沒有那麼敏感,但企業級應用則要保守多了。Windows
Server 2008(2012)之前的作業系統如windows2003由于不能很好識别512E,隻能按照512n的讀取方式不能做到扇區對齊寫入,而windowsserver2008能夠很好的支援512E做到扇區對齊寫入。關于對齊與非對齊的方式如下圖
512E的“對齊/非對齊”寫入

。
其中“Misaligned”和“Aligned”分别表示在使用512e硬碟時非對齊和對齊的4KB I/O塊操作。由于4KB塊(比如對應檔案系統的頁面)操作需要先以8個512bytes邏輯扇區寫入到硬碟,再合并記錄到4KB實體扇區,
在非對齊的情況下,一個4KB邏輯寫I/O對應到2個實體磁盤扇區,如果是新寫入就會産生2次I/O;若是改寫之前實體扇區中的資料,則需要讀-更改-寫的操作,這種非原子寫入(non-atomic)最多可能産生4次I/O。
而對齊的情況則簡單多了,盡管中間要經過硬碟模拟512bytes扇區的過程,但每個4KB的I/O操作都是對應到一個實體扇區。屬于比較理想的情況。
原生4KB扇區硬碟直到2014年晚期才釋出針對企業級市場的版本
關于操縱系統對三種磁盤的支援如下圖:
其中,Windows從Server 2008開始能夠感覺512e硬碟并自動對齊分區;Server 2012進一步加入了對原生4Kn裝置的支援。RHEL 6可以感覺512e和4Kn硬碟并能自動對齊;SLES 11能感覺512e和4Kn硬碟卻無法自動對齊?VMware ESXi 4.x和5.x都無法感覺512e和4Kn硬碟,但支援自動分區對齊。這裡有必要進一步解釋下。
首先對于Windows Server 2003、RHEL 5和SLES 10來說,512e硬碟首先是可以用的,隻是作業系統“意識不到”而當成512n來用了。微軟如今已經停止了對Server 2003的支援(戴爾等廠商為使用者提供遷移方案和服務),如果我們在這些較早的作業系統上使用第三方分區工具,或者手動指定開始扇區建立對齊的分區,應該可以規避一部分性能影響。