计算虚拟化

vSphere 6.5 新功能 — 支持 512e 硬盘

长期以来,机械硬盘在储存数据时,一直都是以 512 byte 大小的扇区 (Sector) 为单位分割进行读写。随着硬盘容量的不断提升,这种古老的分配标准已经越来越不合时宜。因此,硬盘行业决定将扇区容量扩大到 4K byte,该技术被称为“先进格式” (Advanced Format)。

 

在传统格式中,每个扇区大小为 512 byte,在扇区的数据之间,需要间隔一个同步/分隔(Sync/DAM)区域和一个ECC 错误校验区域 (40 byte)。而在“先进格式化”模式下,每 4K byte 为一个扇区,相当于把之前的 8 个扇区合而为一,只需要一个同步/分隔区域和一个容量稍大的 ECC 校验区 (100 byte)。下图是传统格式和先进格式扇区的对比,从中可以看到,存储同样的 4K byte 数据,先进格式占用的面积明显更小,能够节省 200 byte 的磁道空间。4K byte 扇区对于磁道的利用率高达 97%,远远高于传统格式的 88%。

传统格式和先进格式扇区的对比

 

先进格式化技术更有效地利用了磁盘盘片上宝贵的存储面积,预计能够将硬盘的可用容量提升 7% 到 11%。以 1TB 硬盘为例,原本分区容量为 930GB 左右,使用新模式后可能将达到 1000GB 以上。因此,这种新技术的推出或许还能有一个附加效果,即让很多人对硬盘容量缩水的质疑迎刃而解。

虽然先进格式化技术更有优势,但是现有的操作系统大部分都还不支持 4K byte 扇区格式,为了过渡和兼容,硬盘厂商为新出的 4K byte 扇区硬盘准备了一种 512e (Emulation) 的硬盘固件,利用固件来把传统的对于 512 byte 扇区的逻辑访问转换为对于 4K byte 扇区的物理访问;当然,新硬盘还有另一种固件直接支持 4K byte 扇区的访问,这种硬盘称之为 4Kn (Native);传统格式的硬盘被称之为 512n (Native),原生就是 512 byte 的扇区。

硬盘格式 逻辑扇区大小 物理扇区大小
512n 512 512
512e 512 4096
4Kn 4096 4096

硬盘扇区的逻辑地址一般用逻辑区块地址 LBA (Logical Block Address) 来表示。针对 512e 硬盘而言,操作系统中读写的扇区大小还是 512 字节,使用 512 字节的逻辑扇区地址来标注写入地址。例如:下图中待写入的数据块 LBA 是 1002,当真正写入数据时,512e 硬盘的固件会把它映射到物理地址 125 (编号为 125 的数据块,起始编号为 0) 的扇区。在这个例子中,可以看到待写入的数据块是 512 字节,远小于物理扇区大小,所以需要把物理地址为 125 的 4K 字节整个读出来,再改写逻辑地址 1002 数据块对应的位置,然后才能把整个扇区真正写入物理扇区,这会造成一定的性能损失。

当我们将大于 4K 的数据块写入 512e 硬盘时,由于一次写入的扇区大小就是 4K,所以写操作的性能会有较大提升。但是如果写入 512e 硬盘的数据块小于 4K 时,操作系统就必需经过读取→修改→写入的复杂过程,这会造成比较明显的性能下降。一些传统应用(如数据库系统)的I/O操作最小单位仍小于 4KB,使用原生 512 byte 扇区硬盘可以保证最好的性能,采用 512e 硬盘容易产生性能影响。

 

vSphere 6.5 对于 512e 先进格式硬盘的支持,使用户能够使用最新的大容量硬盘(如 6TB 硬盘),并且提高硬盘空间的利用率,从而帮助用户更好地降低存储成本。