Sergey Nivens - Fotolia
闪存的历史及其在企业中的兴起
闪存在企业存储中发挥着巨大的作用。然而,16年前,ssd几乎不存在。让我们来了解这项技术背后的故事,以及它是如何主宰存储领域的。
在过去的15年里,闪存的出现重塑了整个行业。固态硬盘在16年前还是一种昂贵的新奇产品,现在已经变得普遍。系统架构已经围绕flash进行了重新配置,用于管理flash的新软件正在广泛使用。
这本企业闪存的历史介绍了这些重大变化是如何以及为什么会发生的闪存出现.
有两种类型的闪存:也不和NAND。它们是基于网络的非易失性技术浮置栅极晶体管它可以存储一些数据。问题是,在这些浮栅晶体管中的一个上下移动一个位需要很长时间,大约需要几十毫秒。这使得这些技术在主存储器、缓存和处理器寄存器中的使用失去吸引力。
为什么flash突然变得吸引人了?
在20世纪90年代,很少有人意识到基于闪存的ssd存在,甚至在20世纪70年代末,也出现了基于动态RAM (DRAM)的ssd。Dataram Corp.在1976年推出了一款名为Bulk core固态硬盘的硬盘替代品。而SunDisk(后来更名为SanDisk)推出了一个NOR闪存基于SSD的。
那么,为什么主流计算直到2004年才开始采用flash SSD呢?答案是成本。2004年,,NAND闪存价格由于flash ssd比hdd快得多,较低的价格使它们能够在hdd和DRAM之间存储器层次结构.
虽然这种价格交叉让flash获得了广泛的采用,但也出现了其他好处,推动了更大的接受度。让我们来看看速度和成本的争论,然后看看flash给系统带来的其他意想不到的好处。
成本和速度优势如何改变了闪存的历史
SSD比HDD快,但因为它们通过磁盘接口进行通信,所以比DRAM主存慢。他们可以提高系统的成本或性能如果它们的价格低于DRAM。如果它们的价格高于DRAM,那么一定有其他原因购买它们。
一些系统使用早期的ssd,因为它们的处理器无法处理足够大的主内存,并且在hdd中交换页面的速度太慢。然而,ssd的坚固性是它们在早期最常被使用的原因。一个很好的例子是有很多振动的喷气式战斗机,这会导致硬盘的读写磁头经常丢失它正在访问的磁道,减慢访问速度。
当NAND闪存在1991年问世时,它非常适合ssd。然而,尽管它比之前的NOR闪存便宜,但它的成本是DRAM的几倍,因此基于闪存的ssd对于大多数应用程序来说仍然太贵了。
2004年,由于产量的增加和规模经济,NAND闪存价格跌至DRAM价格以下。这改变了一切。
现在NAND闪存可以用来降低系统的成本。随着DRAM和ssd之间的价格差距扩大,DRAM的用途也在扩大。
在闪存的历史上,NAND固态硬盘首次被高速san所接受。在那个时候,SAN使用分层存储将更慢的5,000-7,500 RPM容量的hdd与更快的10,000-15,000 RPM的企业hdd结合起来,以既提供容量又提供速度的方式。高端机型仅使用了驱动器存储空间的一小部分来进一步加速企业hdd。这种方法通过一种称为短行程或去行程的过程来限制头部运动,这将使这些hdd的每GB成本增加到与闪存SSD相同的每GB成本。闪存SSD比短冲线HDD快,所以很自然地,当EMC在2008年推出了第一个SSD/HDD SAN后,这是第一个被替换的HDD。
节省能源、硬件和软件许可
SSD的功耗低于HDD,SSD供应商很快就定义了一个指标来突出这一强度:每瓦IOPS。SSD不仅降低了数据中心的功耗,而且还减少了热量,从而进一步节省了空调成本。
ssd还有额外的,在某些情况下,意想不到的好处。数据库用户常常无法在一台服务器上足够快地处理更大的数据库。他们采取分片,或在多个服务器之间拆分数据库,每个服务器将同时处理数据库的一部分。虽然这种方法解决了速度问题,但也增加了数据库管理的复杂性。
当ssd成为一种选择时,用户发现新的驱动器足以加速系统,使单个服务器能够运行曾经在多个服务器上分片的作业。这种方法使他们能够使用更少的硬件并降低软件授权费用,因为数据库软件通常是每个系统或处理器授权的。在第一年,ssd的收益是原来的几倍。
flash如何迫使人们重新思考计算机体系结构
Flash不能自动适应现有的计算架构。几十年的硬件设计和软件优化都围绕着这样一个想法:硬盘很慢,永远不会加速。一旦系统开始使用带有HDD接口和协议的闪存ssd,这些接口和协议就开始受到审查。
图3说明了一旦SSD出现,接口如何成为延迟关注的焦点。
条形图的蓝色部分表示存储媒体的延迟。这是HDD的磁盘,这是SSD的NAND闪存。如果你仔细看,你还会在这些条形图的右边看到一条其他颜色的细线。这代表了访问的其他部分所消耗的时间:I/O协议、软件开销,甚至CPU为中断提供服务所需的时间。
在HDD的情况下,整个延迟的这一小部分是无关紧要的。当系统为速度而调整时,它从未受到过多关注。然而,当SSD降低了媒体延迟时,其他功能所需的时间就会成为总体延迟的重要组成部分,浪费掉SSD总延迟的四分之一。就在那时,闪存将改进的重点转移到了界面上。
从IDE到SATA 2到SATA 3
图3比较了两个SATA 3驱动器,但即使在原始集成开发环境(IDE)接口SSD被替换为磁盘驱动器之前,也发现了此问题萨塔模型.
延迟问题推动了从IDE接口到SATA接口的转变。最初提供IDE接口的ssd在2008年迅速转移到SATA。但SATA的速度为1.5 Gbps,对ssd来说仍然是一个负担,而SATA 2很快就以3gbps的速度紧随其后。尽管业界仍不满意,但还是克服了困难,在2009年推出了SATA 3规范,支持6gbps接口。
从光纤通道和SCSI到SAS等等
同时,最初为企业设计的接口也经历了它们自己的转换。当EMC在2008年开始在其系统中使用STEC SSD时,最好的可用接口是光纤通道(FC)。由于开发SATA所做的工作,SCSI接口演变为SAS,这是2008年首创的一种适合企业使用的高速接口。这种技术和PCI取代了SSD市场上的FC和SCSI。不过,与SATA一样,第一代SAS(3 Gbps)速度太慢,6 Gbps SAS II于2009年推出。
尽管如此,基于HDD友好协议的SAS和SATA对于SSD来说还是很笨拙。需要更好的东西。
Fusion-io的工程师们看到,RAID卡和主机总线适配器(hba)被用来将多个hdd连接到PCI总线上,PCI总线是20世纪90年代初引入的一种高速接口,可以将高速显卡直接连接到英特尔的cpu上。这种方法通过HBA卡将并行hdd连接到处理器,让存储设备以更高的带宽与处理器通信。Fusion-io的工程师意识到NAND闪存可以更好地利用PCI总线带宽,于是他们在2008年创造了第一个PCI SSD。
接下来的几个模拟器只是简单地将多个ssd连接到一个HBA卡上。然而,这些设计并没有使用通用的命令协议,有些甚至使用了不同的架构。Intel开始标准化PCI SSD接口,并添加了高速的SSD特定协议,发布了NVMe协议在2011年。NVMe在SATA ssd上提高了速度,如图4所示。
图4没有显示NVMe的队列功能,每个队列启用64,000个命令而不会导致冲突。尽管目前的系统还没有利用到这种巨大的队列深度,但随着时间的推移,这种能力对于进一步加速I/O访问将变得非常重要。
虚拟化、flash和DAS
在使用ssd的过程中发生了一件有趣的事情:大型系统架构从本地存储迁移到共享存储,然后又迁移回来。
这种循环的发生是由于虚拟化和VMware的时间安排。1999年,虚拟操作系统推出。以前的服务器群有一台专门用于Outlook的服务器,另一台用于公司网站等等,现在可以允许任何服务器执行任何任务,更有效地指导资源并降低成本。
既然任何服务器都可以执行任何任务,那么与这些任务相关的存储就必须对任何服务器可用。本地存储被抛弃,共享存储成为标准。共享存储的访问时间只有几十毫秒,它通过高速局域网与服务器连接,使存储延迟增加了几毫秒。这种必要的邪恶被看作是要付出的小小代价。
当ssd进入时,它们的延迟是1/100th或者更少的硬盘被替换,突然之间,LAN增加的延迟是SSD的10倍。SSD用户只能使用昂贵SSD的10%的好处。显然,这是不可接受的。
解决方案是将SSD移回服务器,但虚拟化无法工作。Fusion io解决了这个问题,于2013年发布了其ioCache软件。IoCache使用针对处理器缓存进行微调的一致性技术,将直连存储(DAS)作为共享存储的缓存进行管理。这种存储虚拟化软件得到了迅速的认可,现在已成为多个系统中的一项关键功能。
全闪存阵列替代方案
其他供应商采取了不同的方法,将闪存添加到现有系统架构中,而不是在DAS中使用闪存进行更具革命性的改变。使用这种方法,用户不得不忍受LAN的延迟,但可以利用存储阵列中的SSD。
传统的san是第一个这样做的,它用ssd取代了系统中短行程的企业hdd。EMC在2008年率先引入了这样的系统。其他供应商则认为,如果将所有的hdd都换成闪存,系统就不会那么复杂,性能也会更稳定。生产DRAM固态硬盘超过十年的德州内存系统公司,是2008年该市场的首批供应商之一。
从2005年到2017年,无数的初创公司涌现出来,生产所有的闪存阵列,包括Gridiron、Pure Storage、SolidFire、小提琴存储器和XtremIO。(我统计了59家闪存阵列公司,虽然我可能错过了一些。)成熟的SAN供应商收购了这些公司中的大多数,但有一些公司仍然是独立的,如纯存储和小提琴存储器,结果好坏参半。
管理flash:缓存vs.分层
一个有趣的软件变化涉及到数据的管理方式。使用HDD SAN,数据可以在快速和慢速HDD之间来回移动。这种方法称为分层。在一个分层系统,一个数据块永远不会有超过一个副本;多个不一致的副本不能共存。但是每次需要加速一个数据块时,将数据从快盘交换到慢盘和从慢盘交换到快盘都需要时间。
ssd的分层问题更严重,因此架构师开始使用自20世纪60年代以来在处理器中进行了微调的缓存算法。这种方法已经在memcached的存储中使用,memcached是一个编写于2003年的程序,它使LAN上的服务器能够缓存来自SAN的数据。虽然缓存方法使确保数据一致性更具挑战性,但这些问题已经在处理器缓存中解决了,只需要在软件中实现。该软件首次出现于2013年。
管理闪存:软件定义的存储
既然有专用缓存软件为了使DAS能够作为SAN数据的缓存,系统公司开始寻找在各个层次灵活管理数据的方法存储层次结构.理想情况下,这些软件可以用于任何系统配置,而不管附加了什么硬件。随着用户增加硬件以支持对其系统不断增长的需求,它还将实现扩展。基于这一概念,软件定义存储(SDS)于2013年诞生。SDS不仅支持这类操作,而且一些转换使一台服务器能够检查甚至修改另一台服务器的DAS的内容。
从这种管理高速存储的新方法中,出现了这样一个想法:只要服务器之间的通信不妨碍数据访问,所有存储都可以隐藏在服务器中。这就产生了存储结构、NVMe-oF协议以及后来的远程直接内存访问(RDMA),这种方法在将数据从一个服务器的DAS传输到另一个服务器时无需任何处理器的参与。
2004年以来的巨大变化
随着我们从昂贵的基于核心的ssd,通过经济的基于闪存的ssd,到今天广泛使用的ssd,闪存的历史已经跨越了40多年。ssd的广泛采用将重点放在了接口速度和局域网瓶颈上,从而产生了新的接口(如NVMe)和新的系统配置,包括DAS的复兴。
有了这些新的配置,数据必须在存储层次结构的新旧元素之间进行管理,这就产生了缓存软件、软件定义的存储以及今天对存储结构的工作。
与此同时,性能以令人印象深刻的速度增长,如果不是惊人的话。系统和存储变得更加高效。但是闪存的故事还没有结束最好的还在后头。