磁盘按照物理扇区大小的不同分为三种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的支持(戴尔等厂商为用户提供迁移方案和服务),如果我们在这些较早的操作系统上使用第三方分区工具,或者手动指定开始扇区建立对齐的分区,应该可以规避一部分性能影响。