磁盤按照物理扇區大小的不同分為三種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的支持(戴爾等廠商為用戶提供遷移方案和服務),如果我們在這些較早的操作系統上使用第三方分區工具,或者手動指定開始扇區建立對齊的分區,應該可以規避一部分性能影響。