基于闪存的存储能够解决很多性能问题,尤其是由虚拟服务器环境所导致的问题。但闪存仍有很多神秘之处:它们可信吗?哪种类型的闪存最适合虚拟环境?
闪存是一种内存技术,与RAM不同,在断电时它仍旧可以保留所存储的信息。尽管闪存在执行读写操作时并不像RAM那样快,但性能远远高于典型的硬盘。更为重要的是,访问数据时几乎不存在任何时间延迟。闪存技术非常适合随机I/O,而虚拟服务器环境中恰恰存在大量的随机I/O。
对闪存主要的关注点之一是其执行写操作的方式。闪存可以执行的写操作次数有限,这意味着闪存厂商需要开发复杂的控制器技术,对写入闪存模块的方式进行管理,确保每个闪存单元接收相同的写请求。
目前有三种类型的闪存,耐久性各不相同。单阶存储单元(SLC)闪存在每个单元写一位数据,耐久性最好。多阶存储单元(MLC)闪存在每个单元写多位数据,耐久性排名第二。三阶存储单元(TLC)在每个单元写三位数据,耐久性最差。每个单元写入的数据位越多意味着每个单元的容量越高,每GB的成本越低,同样意味着平均寿命更短。
SLC是数据中心标准,但控制器技术的不断优化使得MLC被大多数用例所接受。尤其是在采用了某种方式的数据保护,比如镜像或者RAID或者使用了闪存层时。
了解闪存的几种规格
就在虚拟环境中使用闪存而言,通常有三种规格可供选择。
最常见的是固态硬盘,其与硬盘的规格相同。这类闪存可以很容易地安装在服务器内部或者存储阵列内部,直接使用HDD的驱动器插槽即可。
SSD的不足之处在于性能、密度。在SSD中放置闪存意味着所有的存储I/O都是通过SCSI堆栈处理的。与其他方式相比,会增加一些延迟。尽管如此,这些系统,尤其是阵列,仍旧可以交付成千上万个IOPS,因此很少会受到需要使用SCSI协议的SSD的影响。密度同样受到了忽视,闪存SSD厂商已经采用了独特的方式在硬盘中塞入尽可能多的闪存,与同等的HDD相比,SSD通常提供了更大的存储容量。
就某些环境而言,SCSI所增加的延迟存在问题,尽管通常我们所指的并不是虚拟环境。当延迟是一个关注点时,可以选择PCIe SSD,将闪存设备集成到PCIe板卡上。这通常避免了标准的存储协议堆栈而且能够在本地访问CPU。但用于三大最为流行的虚拟环境的驱动器都是很普通的。
PCIe应该被虚拟环境视为RAM内存的一个扩展。因为PCIe具备低延迟特性,能够提供性能非常高的虚拟内存池,这样一来动态RAM用于存储换出的页面几乎对性能没有任何影响。
另一种正在变得流行的闪存是内存总线闪存。内存总线闪存安装在服务器内存插槽中而不是PCIe总线中。内存总线闪存看起来像是DRAM双排直插内存模块,但实际上包含的是闪存。这种实现方式的延迟甚至比PCIe SSD还要低而且在访问CPU时提供了私有、高性能路径。内存总线闪存在虚拟环境中应用有限,但将内存总线闪存用作虚拟交换内存大有裨益,当难于使用PCIe插槽时,内存总线闪存同样是刀片、1U以及2U服务器的理想选择。