闪存SSD以及闪存SSD存储阵列已经变得越发普及。其原因来自于许多方面,比如说有对速度的需求,或者至少是感觉有这样的需求。市场上大多数人对SSD存储的看法是这是一款比传统HDD存储更快的设备。但这究竟是否属实?我们将在本文一起探讨闪存SSD的真相。
观点:闪存SSD总是比传统硬盘更快
大多数IT人员都会认为这句话说的没错。但事实是,这里的“总是”是否用的正确。
事实:闪存SSD存储并不总是比HDD存储快
这取决于应用负载,SSD使用寿命以及SSD被写入的位置。
在随机访问及读访问延时上的表现均会优于传统HDD硬盘上的表现,例如在随机读延时上,传统硬盘在合理的2.9ms到12ms的范围内,而SSD闪存的表现则会控制在100微秒左右,这对高负载的读操作和随机访问场景是不错的选择。低延时的直接效果是使得闪存SSD读取数据的能力更加直接,可以直接从闪存SSD的特定区域将数据读出来。在操作系统启动和应用启动的时候,闪存SSD通常会帮上大忙,特别是在读取数据的环节。
当在写操作放大的时候,SSD闪存存储的性能明显有所降低,并且会随着闪存SSD的使用而持续下降。尽管有手段将性能降低的水准减缓,但这只是相对而言的。性能降低的程度很大程度上取决于闪存NAND的类型。更为昂贵的单层单元SLC闪存性能表现会比企业级多层单元eMLC,多层MLC或者三层单元TLC闪存更好。
传统磁盘存储的性能也会因为做过磁盘碎片整理而降低。每一个碎片都会去读取整个数据块,随着碎片的增加延迟也随之增加。对于传统磁盘来说,碎片整理工作相对直接且有效。很遗憾的是,就目前的闪存来说,SSD写操作会降低性能是一个不争的事实。因此,盲目的表示SSD的速率优于传统磁盘的速率是不科学的,在一些场景下闪存的确逊于传统磁盘的表现。
写操作对于闪存SSD来说,的确是一块短板。同样是写操作,闪存SSD和传统磁盘处理的方式相当不同。所有闪存SSD的写操作仅能发生在没有使用过的或是事先擦除过的数据块,而对于传统磁盘来说,则可以覆盖之前写过的数据,这点在闪存SSD上是无法实现的。这些数据块需要先被擦除干净,再写入新的数据。这就意味着对于闪存SSD来说,数据写起来就没有传统磁盘这么方便。
SSD控制器的作用则是通过后台进行垃圾清理,从而减缓闪存SSD的性能问题。控制器垃圾回收的实现方法有许多种,但最常见的方法是提前分配20%-50%额外的空间,取决于厂商以及存储单元的不同。
这就意味着,对于一个200TB的SSD存储来说,可能就需要有256TB的空间,其中仅有200TB的空间是真实可见并可用的。额外的空间则用于给控制器提供动态空间,这样在做垃圾清理的时候用户的写操作并不会被影响。存有废弃数据的写入页与剩余的页空间交换,然后新擦除后的页则成为了新的可用空间。
闪存SSD的动态空间缩短了整体写入时间,其本质是缩短了写入操作的整个流程,从而大大提升了写操作的性能。
写操作在较为昂贵的单层单元SLC闪存SSD上的表现接近于读速度。而对于企业级多层单元eMLC,多层单元MLC,尤其是三层单元TLC来说,写性能是远远低于读性能的。而对于传统磁盘来说,读和写的性能则相对接近。
的确,从一般意义上来说,闪存SSD会比传统磁盘的速度要快。因此,在什么时候闪存SSD会慢于传统硬盘的表现呢?答案是在工作负载大多为写操作或者是在用久了的或已进行过大量写操作的SSD上进行混合操作的时候。