针对硬盘而与IOPS(每秒输入/输出)问题而设计的RAID(独立磁盘冗余阵列)控制器与有可能不能适应固态驱动器(SSD)和pNFS(并行网络文件系统)的时代。SSD与pNFS可以输入输出大量的数据,因此流带宽将成为RAID厂商必须面对的问题。
当我这么说的时候,我面前的RAID厂商并不赞同。他们说,数据存储是IOPS的世界,因此我为什么要关心数据流的性能?这里介绍一下,IOPS是每秒I/O请求数量,而流带宽是控制器每秒钟可以将多少GB的数据传输到一个或多个服务器。
磁盘驱动器可以支持有限数量的随机IOPS,而对于闪存驱动器来说,这个数字实际上是无限的。如果再结合并行NFS(网络文件系统),如果控制器的数据流I/O相对不高,则每秒I/O请求数量并不重要。
目前为止,许多人都认为I/O是随机的。对于过去的许多应用程序和文件系统分配方式来说,这可能是正确的,但是对于一些新的文件系统分配方式,pNFS以及SSD来说,情况则发生了很大的变化。对于那些声称控制器最重要的是IOPS的RAID存储厂商来说,如果他们还没做好准备的话,在未来18个月内,他们就会知道自己错了。基于闪存的SSD,文件系统设计的变化以及NFSv4.1(pNFS)将带来广泛的影响:从高端阵列一直到低端的SAS和SATA驱动器。
SSD下的IOPS
让我们先来看看闪存SSD会给RAID控制器带来什么影响。就像Bitmicro所说的那样,闪存SSD拥有极低的延迟性,而且每秒可以处理至多5.5万个随机读取。由于Bitmicro没有提供关于请求大小的任何信息,我们暂时假设每个请求的大小是比较小的。由于一个磁盘扇面是512字节,因此如果5.5万个IOPS都是这个大小,那么总的请求将是26.9MB/秒。
在另一个针对小型随机块的测试中,I/O请求大小是8192字节,这是小型块I/O最大的请求大小了,这样在使用400MB/秒性能的4GB/秒光线通道接口的时候,5.5万个请求就是429.7MB/秒。(旁注:一些厂商虽然提供了数据,但是不告诉你如何才能达到这些数字,这点我很不喜欢。)我怀疑这些厂商使用的是随机的512字节I/O,更有可能的是像1024字节或4096字节大小的请求,但是谁知道呢。因此,我查询了英特尔的网站并发现这些数据:
|
我之所以挑出PCIe 2.9总线的8条通道是因为这是我在控制器设计中所看到的最高性能了。我还看到一些SSD的性能低于或相若于英特尔SSD的性能范围。多数RAID控制器使用PCIe总线来作为高速缓存之间或通信之间的接口。实际上,一些RAID控制器甚至不使用PCIe 2.0(每条通道500MB/秒),而是仍然使用PCIe 1.1(每条通道250MB/秒)。就像你所见的那样,即使在SSD上进行纯粹随机的I/O,鉴于SSD的高性能,这些I/O也很快变成带宽问题。29个SSD可能看起来很多,但是如果其中一些以300MB/秒的速度执行大型块操作和顺序I/O,那么只要4个驱动器就可以使8通道PCIe 1.1总线达到满负荷。
我的想法是SSD会将随机问题变成数据流问题,而当前的RAID设计无法解决这种带宽问题。当前的RAID设计甚至没有重视支持大量IOPS所需的命令队列。SSD将会使人们重新思考IOPS与数据流。
文件系统变化
许多文件系统厂商意识到在越来越多的环境中,文件大小拥有双峰分布。多数文件系统有许多小文件,这些文件不会占用很多空间,而少数几个大型文件则占据了大多数的空间。随着文件系统厂商意识到这个趋势,他们开始增加大型文件的分配大小。这意味着如今我们有一些文件系统支持16MB以上的大型分配,从而使IOPS中大型数据块的读写变成一个数据流I/O问题,而解决这个问题则需要带宽。鉴于处理众多小型分配会带来很大开销,因此越来越多的的文件系统开始读写大型数据块。拥有更大的分配可以减少文件系统分配图的管理开销,从而提高文件系统性能并减少碎片。
许多RAID厂商没有理解文件系统和文件系统变化会给他们的硬件带来什么样的影响。根据我的经验,即使是一个同时也出售文件系统和应用程序的RAID厂商,在你和他谈论这件事情的时候,他也没有理解这种影响。
不一样的NFS
旧的NFS协议处理的是非常小的请求,因此即使数据在文件系统中是顺序分配的,I/O请求看起来也像是IOPS问题。多数NFS服务器设计成处理成百上千个连接,并解决每个连接在处理小型请求时所带来的IOPS问题。pNFS改变了这一切。如果数据是顺序分配的,pNFS可以进行大型传输。结合10GB/秒以太网,我预计随着时间推移,越来越多的文件系统将可以流处理数据(见《NFS的未来已经到来》)。
未来属于IOPS和数据流
当一些人告诉我说未来主要是IOPS问题或数据流问题的时候,我怀疑他们没有理解I/O和现在I/O请求所发生的变化以及文件系统的工作原理,因为这无论是IOPS还是数据流,这两个都是需要的。如果你使用SSD--我们中的大部分人将来都会使用SSD--如果你有足够的请求队列需要传输到存储设备和RAID控制器,那么你就可以通过SSD来流处理I/O。注意我刚才所说的:你必须有足够的请求(IOPS),你才可以进行流处理。未来的存储控制器将必须能够在主机上管理大型请求队列(IOPS),并能够在发送SSD流数据的时候执行并管理这些I/O请求。
将这个和文件系统的变化以及pNFS结合在一起,我们可以清楚地看到,要想获得均衡的性能,IOPS和数据流都是必须的。我们需要存储控制器。我们现在称之为RAID--谁知道未来它们会被称作什么--控制器可以在前端支持大量的命令队列并在后端流处理I/O。一些存储控制器厂商必须理解这些要求,而我敢肯定一些厂商已经在进行升级。我同时敢肯定一些厂商没有理解现在的局势,这些厂商在未来的市场中有可能落后。
在未来的产品中,为了快速传输数据,IOPS和流I/O都是你所必须的。你可以向厂商询问RAID控制器在全双工(同时读取和写入)带宽下访问磁盘(非高速缓存)的表现,你也可以要求获得一张结构图以便了解控制器以及PCIe总线的数量并计算出最高性能。我们就要进入新时代,你要做好准备了。
本文作者Henry Newman是一位行业咨询师,在高性能计算和存储领域拥有28年的经验。