存储 频道

平民化闪存方案 戴尔Compellent6.4评测

  快照机制: 让SLC与MLC闪存各司其职

  在两层固态硬盘之间进行分层的时候,让DP完成任务并不是一件很容易的事。尽管DP在传统硬盘配置中每天只运行一次,而在多层闪存存储配置中它会持续运行。在闪存存储分层应用的情况下,DP也极大地与存储阵列的快照机制相关。

  如同众多完全虚拟化的存储阵列一样,Compellent存储阵列将在页面级执行快照功能(即Compellent中的“replays”)。当你在向存储卷写入数据时,该数据会被分割成不同页面并被写入硬盘。如果你创建了一个快照,那么那些页面以及在它们之前写好的任何页面都会作为那个快照的一部分而被标记在数据库中,但是除此之外就没有执行什么实质性的操作了,即没有数据被立即移至任何地方。之后,如果需要将新数据写入存储设备,那么将被写入的数据就会被分割并被分别写入硬盘的不同页面;原始页面仍然存在,而且如果需要快照的话,原始页面已做好准备被引用。一旦快照被删除,那么包含快照的页面资源就会被其他数据覆盖而释放出来。

  在传统旋转硬盘配置中,DP对待作为快照一部分的页面的方式不同于它对待动态数据的方式。因为它知道快照数据在被活动卷标中的新数据取代之前也不太可能被读取,所以它通常会在它的下一次晚7点运行时把这些页面移至更经济的存储层。

  但是在分层闪存配置中,DP是不会等到晚上7点来确定是否执行分层操作。与之相反,一旦创建了快照,DP就会把快照数据从昂贵的、针对写操作进行过优化的SLC固态硬盘中移出,并将其写入成本低廉、针对读操作进行过优化的MLC固态硬盘中。

  这一过程的目的有三:

  1. 始终如一地为主机提供SLC固态硬盘的写操作性能。

  2. 将MLC固态硬盘与执行写操作的SLC固态硬盘进行屏蔽。

  3. 充分利用MLC固态硬盘所提供更大容量的优势,以便于让用户能够在成本上负担得起整个系统。

  因此,戴尔公司的闪存分层方法成功地利用了SLC和MLC设备的各自优势,同时也避免了“混合使用SLC”(SLC具有较少的损耗均衡能力)和“eMLC”(MLC配备附加的损耗均衡能力)单层部署所带来的妥协。换而言之,它更像是一个分层式的15K SAS/7.2K NL-SAS 旋转式硬盘阵列与一个单层式10 SAS 旋转式硬盘阵列的区别,前者能够为你同时提供两种存储介质的优点,而后者只能为你提供某些中庸之物。

  凡事终有缺憾

  凡事必有缺憾,这句话放在任一IT产品的评测上也同样成立。在评测过程中,当创建对分层式闪存模式至关重要的快照时,Compellent 6.4出现了一些问题。如果数据是在快照创建时从写操作优化的SLC层被移至读操作优化MLC层的,那么这么做的成本是显而易见的。随着数据从SLC层被读出并被写入MLC层,SLC层所承担的负载是增加的,这样的做法除了对SLC层的性能造成不利影响并让主机I/O迫使这些固态硬盘一直处于运行极限之外就没有其他作用了。更糟糕的是,在执行数据迁移操作过程中,从一层迁移至下一层的页面将不得不被锁定,从而造成超高I/O情况下的资源竞争使数据在MLC层写操作任务中比在SLC层读操作多花三到五倍的时间。

  为了测试这方面的影响,我在实验室中创建了一个最坏情况的应用场景。我建立了一系列的存储卷,并在其中开始执行一个负载非常高的读写操作任务。在我的这个应用中,这是一个随机的4K I/O流,其中读写操作比为7:3(这是非常粗略地近似于一个OLTP工作负载的)。这个工作负载被分离到存储阵列中的一个相当小的区域中(总共约80GB)。

快照机制:让SLC与MLC闪存各司其职
▲企业管理器可以帮助用户监视固态硬盘的运行状况和损耗

  首先,入门级的“6+6”(SLC+MLC)配置能够在SLC层中完全地处理这个工作负载,并确保以5毫秒的延迟达到七万次IOPS以上的处理能力——真正令人印象深刻的是,相同价位的旋转硬盘存储阵列将很难达到上述IOPS指标的三分之一,更不要说其延迟要增至前者的三倍了。但是,当我创建了一个同时影响我运行测试任务的所有存储卷的快照时,糟糕的情况却急转直下。I/O流来了个急刹车——运行速度立即下降至3,500 IOPS,并在几分钟的时间内才缓慢爬升回到之前的速度。

  任何存储系统管理员看到这一情形,他们都会明白在生产应用场景中这将是如何严重的一种状况。由于创建了快照而造成你的存储设备吞吐速度突然降至95%以下,同时你的存储系统需要花数分钟之久才能恢复之前的I/O速度,可见这是多么糟糕的了(可以想见这个时候技术支持部门的每台服务电话都会响起)。但是,经验丰富的存储管理员也都知道,在绝大多数的现实世界应用场景中,这一状况是几乎绝不可能发生的。

  这一领域的生产负载一般都是在秒数量级内的突发状况。也就是说,如果你要以10毫秒米或20毫米秒的分辨率绘制出在一个典型企业的主存储阵列的一个占空比曲线图,那么你就会发现曲线是波动的。这个存储阵列还是相当繁忙的,但是它还是存在有很多没有执行交易操作的闲置空间。这是因为,Compellent的DP软件已经按需完成了这部分的工作任务,同时它可以正常运行而又不对主机I/O造成任何程度的严重影响。

  但是,在评测实验室的测试中,这个存储阵列被迫达到了其运行性能的极限——高效地创建了一个100%的占空比。这就根本没有为DP完成其工作留下任何的空间,同时也在主机写操作和SLC至MLC耗时的数据迁移之间引起了资源竞争,从而降低了整体系统的性能。

  实际上,如果你有一个要求SLC闪存存储全天候完整性能的繁重写操作工作负载,那么你可能根本就不希望使用Compellent的DP软件。相反,你会部署足够的SLC容量以便于容纳所有你希望找到的数据,并配置存储策略以防止DP软件把数据从SCL闪存中移出。这就巧妙地回避了这整个问题,同时仍然使同一存储阵列上的存储卷免于遭受高负荷任务的冲击以便于充分利用SLC/MLC分层技术所带来的经济性优势。

  如果你的工作负载典型地只在一天中的某个特定时间内更具任务突发性或高工作负载(如大型企业的工作负载),那么你可能永远不会注意到快照迁移所造成的影响。或者说,如果你感到受到了影响,那么你就可能会通过安排快照,让迁移任务的执行不要过于频繁,来避免这种影响。

1
相关文章