专家博客 企业级部署中的SSD的应用问题

Henry NewmanInstrumental Inc.首席技术官,也是企业存储论坛的常驻作者。他是一位行业咨询师,在高性能计算和存储领域有28年的经验。

基于闪存的固态驱动器(SSD)正成为许多企业存储用户注意的一件大事。在我所共事的客户中,出于一些理由,有些人在计划采用这种新的"0层"数据存储。这些理由包括每瓦IOPS(每秒输入输出),单位IOPS成本,或针对一些应用程序,以及存储每GB/秒带宽。

SSD和传统磁盘存储比起来有一些劣势,最大的劣势就是成本。一些人认为旋转式硬盘驱动器将很快过时,但是我认为这不会很快发生。即使SSD要大规模替代硬盘驱动器,这种SSD也不会是基于闪存的,而且这种SSD在这个十年内还不会大量涌现(见《I/O瓶颈:数据存储的最大威胁》)。过去20年来,厂商们一直在声称磁带即将消亡,但是磁带还是在数据保护领域发挥着重要作用。看起来,存储将一直有不同的层。

这是关于闪存SSD部署规划的三系列文章中的第一部分。第一篇文章将讨论那些可以从闪存中获益的应用,以及一些文件系统和其他问题。第二篇文章将讨论硬件问题。第三篇文章将讨论SSD设计问题和它们在SAS和RAID(独立磁盘冗余阵列)控制器中的使用。

可以从SSD中获益的应用

我们都知道一些应用的一部分,比如数据库,可以从高IOPS架构中获益,但是如果我们在架构中加入闪存SSD,需要考虑哪些问题呢?

SSD给应用程序带来的真正好处包括改善小型块I/O请求的延迟性。最快的2.5英寸1.5万转驱动器可能每秒可以处理250次随机IOPS,但是大部分企业级SSD可以轻松地维持每秒4万次IOPS读取操作和3万次IOPS写入操作。当然,你需要有这样的硬件来达到这样的性能。我们将在本系列的第二部分讨论这个问题。

数据库中最经常使用的部分可以从SSD技术中获益,而最明显的部分就是数据库索引。数据库中第二个明显可以从SSD中获益的部分就是数据库日志文件。索引和日志都比表空间小,而且经常放在1.5万转磁盘驱动器上,即使这样其性能还经常受到限制。用户经常使用iostat、sar和其他性能监视工具来评估与这些设备相关的LUN(逻辑单元号)上存储的高延迟性。

由于闪存存储的价格与旋转式磁盘相比仍然非常高,因此关键是要理解闪存可以带来的潜在好处。如果你的设备有很长的命令队列,每个命令遭遇很高的延迟性(四分之一秒以上),那么闪存存储可能正适合你的数据库。

与闪存相关的文件系统问题

在闪存使用中,另一个正在浮现的问题是文件系统元数据。现在,有许多文件系统是将数据和元数据分开的,这样的文件系统可以将元数据放在SSD上。这种类型的文件系统正越来越普遍。在我和文件系统设计师交流的时候,以及在我本人设计文件系统的时候,我一直支持这样的文件系统设计。这种设计非常合理,因为元数据通常和数据本身有不同的访问模式。除了文件系统元数据外,就像数据库那样,如果文件系统有日志的话,那么这些日志也可以放在SSD中。

大部分闪存SSD的大问题之一就是它们只能在4096字节范围内读取和写入。你可以认为这不是问题,因为多数索引节点都是512字节的,而文件系统元数据分配同样也很小。问题来自文件系统所谓的超级块(superblock)。超级块包含了文件系统基本信息:文件系统使用的卷和位置,单位分配和可调参数,分配映射以及各种其他关键数据。一些文件系统没有将超级块限定在4096字节的分配限制内。现在,对于那些有固定的高速缓存序列的RAID控制器来说,这明显是个问题,对于闪存设备来说也是如此。这并不是说性能会变得很差,但是对于大多数企业级闪存设备而言,最好还是限定在4096字节的范围内,否则读取和写入性能最多可能会下降50%。虽然即使下降50%还是比磁盘快很多,但是毕竟是这么昂贵的设备,浪费50%的性能显然是不可取的。

对于那些有足够的预算购买SSD并用于文件系统的用户而言,他们需要考虑文件系统调整参数。一些文件系统可能有很大的分配,比如说超过64KB,使用这些大分配可能适用于基于磁盘的文件系统,因为你经得起空间的浪费。比如说,你有一个1MB的分配和一些非常大的文件以及一些小的文件,每个文件分配都以MB为单位,那么虽然小文件有空间浪费,但是大型文件可以得到有效分配,因此你不需要回到大型文件分配程序。在元数据上SSD可以帮忙是因为元数据开销都很小,因此回到分配程序通常不影响磁盘上的性能。不过,由于SSD空间很昂贵,如果你同时有一些大型文件和一些小型文件,那么使用大分配就不是很合理了。你可以将单位分配空间调整到最小文件大小,这样就不会浪费昂贵的SSD空间。例如,在我的笔记本上有SSD,我把NTFS分配空间设置成1024字节而不是缺省的4096字节,因为我知道我有很多小文件。

其他SSD软件问题

在针对高IOPS需求使用闪存SSD设备的时候,你还需要考虑许多其他软件设置问题。例如,如果你要将文件系统和数据库的元数据分开放在SSD上,那么你的备份和恢复程序也要做相应调整,以便能够访问SSD。有些时候,这些程序限定了可以支持的硬件,你需要确保你的SSD是得到这些程序支持的。

最大的问题是你将需要多少空间。如果你把SSD用于文件系统的元数据或日志或数据库的索引或日志,那么空间的计算通常非常复杂。文件系统有超级块。这些超级块通常很小,而且不容易计算数量;索引节点和目录块的数量也不容易计算。很多时候管理员也不能预计目录有多少文件或预计目录的数量。这种空间的分配随文件系统而异,不过你不想出现空间耗尽的情况,如果那样的话,你将不能添加任何文件或完成文件的写入。对于文件系统日志来说,情况也是如此。至于数据库,问题和文件系统一样。你不想出现空间耗尽的情况,但是索引和日志需要多少空间不容易计算。数据库还要考虑的另一个方面是如果你在文件系统上运行它们,你需要同时计算数据库和文件系统的空间需求。文件系统和数据库的空间计算都成为问题。由于SSD的成本比磁盘高出很多,因此任何空间上的浪费都是不可取的。