服务器端闪存存储系统的“延迟控制”存储与灾备
广泛用于服务器端的闪存存储系统主要有两种类型:固态硬盘(SSD)和PCIe闪存卡。
固态硬盘SSD采用与传统硬盘相同的外形尺寸(通常为2.5英寸),并连接到标准的SATA或SAS控制器,这使得它们易于安装和服务。对于随机读/写操作,SSD能提供比旋转介质更高的性能。然而,SSD却不能达到它们理论上所能达到的高效,这是因为它们被设计为与SATA或SAS控制器兼容。但SATA和SAS先于SSD成为主流技术前就已出现,因此被看作是传统技术。
在固态硬盘SSD获得广泛应用以前,机械硬盘限制着存储I / O的性能。今天,大量的SSD可以处理比控制器所能容纳I/O多得多的IOPS。因此,控制器变成了限制因素。
一种解决方法就是采用SATA Express(有时称之为SATAe),其目的是与SATA和PCIe存储设备一起使用。 SATAe使用向下兼容现有SATA驱动器的连接器。但是,不同于传统的SATA,SATAe与PCIe总线相连,这使得它的传输速率比SATA 3.0更高。所能达到的具体性能水平取决于所用PCIe通道的数目。例如,使用两个PCIe3.0通道的SATAe驱动器可以提供接近2 Gbps的传输速率。
PCIe闪存卡
PCIe闪存技术正在快速走红,因为它完全绕过了存储控制器,直接连接到PCIe总线。因此能达到更高的性能。
下面是一个更具体的例子,通常许多服务器都配备了SATA III控制器。SATA III规范定义的数据传输速率为6.0 Gbps,因此最大传输速率大致为600 MBps。相比较而言,当今许多PCIe闪存设备都是基于PCIe2.0规范,每通道单向最大吞吐量大约为500 MBps。
请注意,PCIe2.0的500 MBps估计传输速率只是针对单个通道而言。因此,通道数决定了整体的总线速度。例如,一个16通道的总线能够达到高达16 Gbps的传输速度。如果你有些奇怪为什么速度是16 Gbps而不是8 Gbps,这是因为PCIe通道是双向的。
PCIe3.0规范所定义的速度甚至比PCIe 2.0更高,在16通道的总线上可支持约为32 GBps的速度。目前,大多数PCIe闪存设备都还是基于PCIe 2.0。
不仅仅只是PCIe的总线吞吐量使它更快,它更靠近CPU也起到很大作用。 SATA控制器通常连接到芯片组,再连接到CPU。相反,PCIe链路直接与CPU相连,这就使CPU的等待时间低很多。
闪存耐用性
全闪存系统会受到闪存单元磨损的困扰。这也包括SSD,PCIe闪存设备,以及任何其他类型的基于闪存的存储系统。每次进行写入或擦除操作时,会有电压作用到闪存单元,电荷在晶体管的栅极电介质内部被截留。这些被捕获的电荷会无限期地留在晶体管内部,直到下一次写入或擦除操作才可能被移除。电荷的捕获和去除会逐渐削弱和破坏闪存存储单元。不过,在过去几年里,闪存的耐久性已经获得极大地提高。
例如,去年年底,Tech Report对6种固态硬盘SSD进行了检测,以确定驱动器发生故障之前,究竟能写多少数据。六个驱动器中有四个在测试过程中发生故障。其中最短寿命的驱动器在故障前已经写了728 TB的数据。这个数值已经远远高于该类型的驱动器所标称的写次数。测试中的其他驱动器都能处理超过1 PB级的数据写入,远高于制造商所定规格。
SSD和其他形式的闪存系统之所以比以前更加可靠,最主要的原因在于制造商设计了一系列延长驱动器寿命的功能。其中之一就是磨损均衡。它有各种形式的具体实现,但一般的想法是,将写操作均衡分布在整个驱动器上,以避免对特定存储单元反复写入。这就使驱动器比较均匀地磨损,从而延长了使用寿命。
闪存系统里的缓存与分层
像硬盘一样,虽然闪存存储系统可以存储数据,但容量的限制往往使得它无法用于存储大量数据。不过,即使企业无法将闪存用作他们的通用存储系统,但还是可以把它用作缓存或分层使用。
高速缓存和分层的目的相似,但它们是不同的技术,许多系统(例如Windows Server 2012 R2)可以同时应用两种功能。
闪存缓存通常与写操作有关。事实上,闪存缓存有时就被称作写(高速)缓存。这种类型的缓存在需要接收大量存储I/ O的服务器上非常有用。在这种环境里,时常会出现进来的数据忽然间达到一个峰值,几乎可以使服务器濒于崩溃。当这种情况发生时,存储阵列会变成性能瓶颈。此时闪存高速缓存可以充当存储的缓冲区,从而帮助解决这个问题。当接收到进来的数据时,首先将它写到服务器中的闪存媒介上,然后再送到存储阵列。因为闪存系统是如此之快,它能够吸收入站数据,然后在数据活跃度降低之后再转移到高容量存储系统。
存储分层可以被认为是高速缓存的一种类型,但不同于写缓存,该技术是希望改进读取性能。每个企业都有一些需要被频繁访问的数据。当使用存储分层时,操作系统(或存储硬件)会监视每个存储块的读取频率。读取比较频繁的块被标记为“热块”,并被移动到高速的基于闪存的存储层。这样一来,需求最高的数据块可以驻留在存储系统中性能最好的那一部分。在大多数情况下,这个过程是完全动态的。当一个存储块开始“降温”,它会被移回到速度较慢的存储层,取而代之以新的具有高需求的数据块。