王旋 发表于:15年02月16日 00:00 [转载] 网界网
基于RAM和闪存的固态存储一直以来都被业界认为是解决性能问题的一剂良药。对于性能问题,业界都会有这样的困惑,即企业需要实现什么样的性能,以及为实现这样的性能,企业愿意付出多少投资?近些年来,由于闪存的使用寿命、可靠性的大幅提高以及购买成本的降低,固态存储逐渐成为越来越多的数据中心用例的一个可行的选项。
一般来说,基于硅晶片的存储系统要比那些依赖移动机械部件的存储能够传递更高的性能。磁盘系统的性能是与磁盘的旋转速度和驱动器的速度成正比的。传统的消费类的SATA磁盘的运行速率大约在5400RPM——7200RPM之间,而高端的、企业级的SAS(串行连接接口)硬盘的运行速率可达15000RPM。众所周知,高速率带来的是更好的性能,但是对存储的更高精度的要求意味着其成本也会越高。
当然,用户也可以通过增加磁盘的轴数,并通过多个驱动进行数据的输入和输出来解决一些性能的问题。而且,这时候IOPS(每秒I/O的运行情况,也就是系统每秒钟可以处理数据输入和输出的数量)和数据吞吐量(每秒钟字节的传输数量)也会随之增加。但是,无论磁盘的轴数增加多少,都无法改变磁盘旋转的基本性能限制,因为磁盘的旋转速度存在延时性(即系统响应每一个IO要求的所需要的时间)。
不过,延时性也是固态存储的一个闪光点。一般来说,磁盘驱动器的延时性是以毫秒来计算的,而RAM和闪存的延时性则是以微妙来计算的。关于响应时间,闪存要比磁盘存储快100倍,而RAM比闪存还要快很多倍。但是,相比之下RAM的价格也比闪存贵很多倍,对于业界来说,闪存则处于最优性价比位置。如果,用户既要求速度,又想节省成本的话,那么闪存可谓是一个最佳选择。
最终的结果是,闪存以物美价廉的绝对优势拿下了数据中心。目前,许多企业级存储供应商将基于闪存的SSD(固态存储)整合到其现有的SAN和NAS产品中,由此高性能的全闪存存储阵列投放到市场,而闪存也被用于在服务器上读、写缓存,以减少负担过重的SAN的负载压力。对于某些应用来说,闪存可以帮助它们解决很多问题,以下就是闪存可以帮助解决的一些问题:
OLTP(网上交易流程):一般来说,大容量的交易流程中都包含了数量非常多的操作。闪存可以有效地帮助提升大容量交易的流程,以及每个交易流程的反应时间。
OLAP:商业智能应用通常利用多维度、多方面的查询去分析大量的数据,而闪存则非常适用于处理大量的以读操作为主的I/O。
数据挖掘:有时候,数据集过多导致无法完全存储在SSD中,闪存就会通过存储索引表的方式来加速查询。
虚拟化:随着越来越多的工作负载从物理服务器中转移到虚拟服务器中,单一的虚拟主机的性能主要体现在处理能力、可用的存储空间和磁盘的速度上。IOPS非凡的性能加上闪存的低延时性可以使单一服务器能够支持更多的虚拟机。
服务器整合:同样,在虚拟环境中,利用闪存来引导磁盘存储可以提高单个虚拟机的响应效率,同时也可以转移存储系统的性能负担。
VDI:虚拟桌面基础设施的启动蕴藏着巨大的潜力,但是对于很多企业来说它似乎并没有实现它该有的效果。闪存可以解决VDI比较突出的一些问题,如“启动风暴”——大量用户在同一时间试图登录他们的虚拟桌面导致输入和输出数量激增。
SAN卸载:就像前面提到的,许多顶级的存储供应商将闪存整合到他们的产品中,主要包括两种形式,即混合的磁盘+存储和全闪存配置。使用SSD可以非常有效地提高SAN的性能,主要表现在IOPS、吞吐量和延时性等几方面。
简单地说,闪存可以使应用运行地更快。当应用存储在闪存中,它可以启动地更加快速。任何一个依赖于多模块的应用从闪存中载入记忆时,其性能就会明显增强。闪存可以减少I/O的瓶颈,这些瓶颈会造成CPU运行周期的浪费,并导致应用的功能运行不良。闪存还可以提供更多的好处,比如通过扩展相同应用的性能以满足更高的需求。
闪存的另一个优势是,相对于磁盘它拥有更小的硬件脚本。用户可以通过增加磁盘的轴数来增加旋转磁盘的吞吐量,但是它将需要更多的磁盘驱动,以便从单一的闪存SSD中得到同样的IOPS和吞吐量。而闪存可以显著地减少磁盘所需要的数量,这样就会节省很多存储空间。
此外,闪存设备比其他类似的存储设备能够节省大量的电力,这大大减少了企业的总体运行成本。由此可以看到,闪存确实拥有诸多的优势,既能比磁盘提供更大的性能,又能够在相对较短的工作时间内节省动力和成本。
要想真正弄懂和利用闪存的这些优势,首先需要明白数据是如何被存储,如何被检索,以及如何从NAND闪存上抹去的。
闪存解读
计算机是由处理器、记忆、I/O和存储这些基本的组件构成。认真研究记忆的话,会发现它有两种基本类型:易失的和非易失的。这两种记忆类型的根本区别在于,当电源停止时这两种记忆类型的表现。当没有电源供应时,易失记忆会丢失其内容,而非易失记忆则仍然会保存其内容。当一台计算机首次接入电源时,它会从存储在ROM的非易失记忆中读取指令。
闪存就类似于EEPROM(电可擦可编程只读存储器)的一个延伸版,同时闪存也从用于指令的逻辑单元中产生了两种基本类型:NAND和NOR。NOR闪存对于每个单一设备都需要两个物理连接,即使这样做会减少单一设备的存储功能,但是它可以有效地访问数据,就像易失电脑记忆一样。所以,NOR闪存对于可执行代码和嵌入式应用来说是一个理想选择。
NAND记忆体是最常见的一种闪存,通常用于闪存卡、U盘和固态驱动,它可以以大区块进行读取和抹写,因此也称为pages。NAND闪存设备相比NOR闪存设备能够存储更多的信息,因为存储单元的区块只需要少量的连接来读取和抹写数据。
由于NAND闪存工作的性质,新的文件系统、存储和检索数据的方式突然出现。传统文件系统一般采用的是一种随机的接入方式,而NAND闪存则更适合按顺序抹写的数据流。如果利用NAND进行随机接入的话,将需要一定的存储空间以保证其正常工作,也就是闪存记忆体控制器发挥作用的地方。这一控制器复杂的程度与消费级和企业级的设备有着本质上的区别。
闪存记忆使用单元格的概念,并将其划分为数据存储最低的级别。SLC和MLC是两种不同的NAND闪存存储器。SLC(单层式存储)利用一组晶体管来存储少量数据(即一位数据或零位),而MLC(多层式存储)每一个单元则可以存储两位数据,MLC的数据密度要比SLC的数据密度大一倍。
MLC和TLC(三层存储单元)其每个存储单元中存储三类信息,闪存的密度有所提升,但这也是利弊兼有,高密度同时也伴随着性能、可写入次数和使用寿命的消耗。
SLC是闪存中最可靠的一种存储类型,因为每一个存储单元只储存了一个单一比特的数据信息。考虑到写入周期的数目,SLC闪存的耐力等级近似于MLC的十倍,因此记忆体在其不能有效地存储数据之前,仍然可以应付目前其所面临的一些挑战。而且,由于SLC利用了许多晶体管以储存同等数量的数据,因此其抹写的速度要比MLC快三到五倍。不过,在读取方面,SLC和MLC设备的性能相差无几。
传统的NAND闪存设备组都转换成了页面和区块,一个页面NAND闪存是读取和抹写的数据量中最小的可寻址数据,其能够存储的数据量的范围大概在512比特到8192比特之间。一块NAND闪存,它是可被删除的最小数据量,可能会小到10页,但是在某些大型设备中其能够存储的数据量也可以达到128KB。可以明显看到,不同程度的抹写和删除是如何影响性能的,而且无论何时控制器都需要重新安排存储在设备上的数据。
NAND闪存设备设计方式的一个副作用是考虑最小化存储单元的数量,而这些存储单元必须要同时抹写或者删除数据。与磁盘存储不同,NAND闪存设备需要以一个线性的流程来进行抹写和删除数据。这样的一个直接结果就是,需要将数据从一个地点迁移到另一地点,以便回收空间,这一过程被称为自动程序清理(garbage collection)。
与自动程序清理关系最接近的另外一个现象被称为写入放大率,如果特定设备的抹写请求所需要的空间比该设备现有的可用的空间要大的话,那么就会出现延迟,而控制器将通过自动程序清理重新安排空间,由此这些数据就可以存储在新的、已清理干净的存储单元上。企业级的闪存设备一般都会在设备中存储大量的数据,同时也会额外保存一部分容量,单独供应自动程序清理流程使用。
由于闪存拥有更多自由的存储单元而避免了“抹写困境”,因此相对于磁盘存储来说,闪存的性能更能保持始终如一的状态。随着磁盘上的数据越来越碎片化,磁盘存储的性能逐渐下降,而闪存并没有这样的问题。
但是闪存存储单元随着时间的推移也会丧失它们存储数据的能力(+微信关注网络世界),而且一些存储单元的损耗比其他的要快。在整个设备中推广存储单元应用的一种方法是在闪存控制器中采用损耗平衡的算法,以减少每组存储单元写入周期的数目。而这就是超额配置发挥作用的地方,即不能使用的存储单元会被标记出来,而可用的存储单元则会执行存储任务。
整合到控制器里的超额配置和智能化是区分企业级存储设备与消费级存储设备之间有所不同的标志,同时企业级设备也会采用更加复杂的错误更正算法,这不仅能够提高数据的整合度,同时也可以延长设备的使用周期。
最佳方案:服务器与存储的混合阵列
尽管闪存可能更适合读取数据(而不是抹写),闪存抹写数据需要由大量的平行存储途径进行辅助,但它仍然比硬盘驱动的速度要快。相比旋转型磁盘,闪存拥有更高的IOPS和更大的吞吐量,以及更低的延时性。一般来说,判断闪存设备的性能也是基于这三方面。
考虑到闪存的一个单通道的吞吐量就能达到800MBps,计算机与闪存记忆体之间的潜藏的瓶颈就是设备界面。SATA III界面的最大速度可达6Gbps(600MBps),而SAS的速度也达到了6Gbps,同时SAS 12Gbps的设备也刚刚推出。在每秒支持多个字节的转换速率中,PCIe(串行总线)可以为闪存设备提供一个更高的性能。
毫无疑问,PCIe闪存设备可以促进数据中心对于闪存使用的需求,它们可以用来解决一些服务器端的性能问题。PCIe闪存板上利用PCIe的一个狭槽安装了一个服务器,这种设备可以直接进入到计算机的外围总线,并可以传递出更高的吞吐量。
针对传统的旋转磁盘,要解决其性能局限的一种方法就是将闪存作为一个缓存来进行读取和抹写的操作。目前的硬盘驱动模型一般在其设备上都有缓存,但是在整个磁盘空间中缓存只占一小部分。而且它不足以进行更大的读取和抹写的操作,或者实现智能缓存。将服务器端的闪存(PCIe闪存卡或者SSD)和智能缓存软件结合起来,是利用固态存储最有效且节省成本的一种方式。
同样地,SSD在磁盘阵列中被用于读取和抹写缓存,在分级存储系统中SSD作为新的“0级”被广泛采用。许多高端存储供应商在其产品中添加了分层的功能,但是这一过程可能会需要很长时间。针对特定的应用,可以使用速度更快的闪存以传递更高的性能,同时可以将性能要求较低的数据迁移到运行速度比较慢的磁盘存储系统上。据悉,这一概念已整合到Windows Server 2012的操作系统中。
最终,全SSD存储系统使得整体吞吐量达到了一个前所未有的级别,同时也为所有的应用和使用该系统的用户保证了低延迟性。多数情况下,由于SSD存储的成本较高,同时业界也普遍存在这样的想法,即认为全闪存解决方案对于用户实际需要存储的数据来说可能供大于求,所以IT操作会首先避免使用全SSD存储系统。事实上,虽然用户在初次购买全闪存系统时其成本可能会更高一些,但是从长远来看全闪存的操作成本基本与其他类型的存储系列持平,因此在实际的应用过程中用户可能会更倾向于闪存。
从性能的角度来看,闪存的价格明显比磁盘存储的价格要高,企业级SSD的订单价格是每千兆字节一般是1美元、2两美元或者更高,而硬盘驱动其每千兆字节的价格则少于10美分。即使存储成本以每年30%的速度减少,但是要弥补差距,闪存还需要花上几年的时间才能实现。
创建一种成本效益好且全闪存系统的关键是将低成本的消费级设备和智能软件堆栈结合起来,去解决那些之前需要在高端设备上解决的问题。许多供应商提供的全闪存解决方案中使用传统的处理方式进行内嵌重复数据复制处理和数据压缩,以减少磨损,并延长MLC设备的使用寿命。
对于大多数企业的IT部门来说,应用的种类及其所涉及的范围非常广泛,同时其对性能的要求也是多种多样,在可预见性的未来,服务器端的闪存和混合阵列将成为利用闪存的一种最佳方式。这两种方式都将给特定的应用带来更高的性能,同时不需要购买更多价格更高,而且用户可能也不是很需要的闪存解决方案。(王旋编译)
转自网界网:https://news.cnw.com.cn/news-international/htm2015/20150204_318328.shtml