闪存存储设备的高速度已经改变了应用连接数据的方式,同时也预示着老旧存储设备的末日要来了。
直面存储系统的瓶颈
由于虚拟化技术的出现,服务器端的计算效率和灵活性获得了突飞猛进。然而,存储端方面的速度却一直停滞不前。实际上,存储世界与磁带刚开始统治数据中心的时代相比并没有做出非常大的改变。因此,我们发现自己处在这样一种形式之下:数据中心内其中一部分堆栈的效率相比另外一部分有着明显的提高。更为糟糕的是,这一弱势群体在架构上就无法采用最新出现的存储领域的创新,也就是闪存技术。
作为对上述形式的回击,类似谷歌和脸谱之类的技术巨头已经开始建立自己研发的可扩展和低成本的系统,但是这类创新还没有找到进入企业级数据中心的路。同时,存储市场还是被那些销售磁盘容器的厂商所占据。而这类短期内的解决方案向用户承诺了很多,但是却无法解决根本上的问题。
在这篇文章中,我将描述一些Coho Data工程团队的一些见解,以及我在参与建设一个高性能、Web扩展存储系统时的一些心得。特别是,我将重点介绍在现代横向扩展存储系统中发掘新兴的闪存存储全部容量时所遇到的挑战。
当人们尝试理解和提高任何一个软件系统的性能时,首先想到的第一个阶段一般都是去确定最重要的性能瓶颈在哪里。我们都本能地知道他们是如何工作:如果我们想让一个软件系统尽可能快地去运行,瓶颈就是阻止它跑的更快的那一部分因素。为了让这个系统运行更快,重点必须放在确定和修复瓶颈的工作上面。然而,有趣的是,一个系统中的瓶颈并不会自己凭空消失,而是会转移到该系统的其他部位。
在存储系统中,瓶颈一直是在于存储介质——因为最初的磁带本身,以及后来的旋转磁盘本身存在的机械限制。一个单独的旋转磁盘可以顺序地读取或写入数据,速度大约在100MBps。然而,当磁盘开始随机接入数据的时候,这个数字就会变为10MBps,甚至更低,而且大多数时候会低很多。其他任何有关性能的因素都无关紧要,因为移动磁头去接入数据所受到的物理限制可以盖过其他任何有关性能的因素。因为磁盘系统本身比其他部分慢很多,世界上最快的存储系统也都是用很多很多的磁盘聚集而成的。即便这样,磁盘本身仍然是瓶颈。
PCIe SSD让瓶颈转移
随着企业级PCIe SSD的出现,这个形式开始出现改观。即使是一片单一的PCIe SSD,就可以达到数以百计的旋转磁盘的速度。不仅如此,PCIe SSD还不存在机械上的限制,它不会遇到随机数据读写速度慢的问题。现在通过购买一个单一的存储设备就可以满足一个10GB网络链路的需求。想一想:一块盘就可以提供一个高速物理网络连接的高速需求!
闪存这个用于构建存储系统的部件带来的变化就是让原有的存储系统的瓶颈整体转移。原先最慢的部分瞬间变成了系统中最快的部分。如果我把额外的闪存设备放在第一装置,同时以同样的方式将磁盘添加到常规阵列中,网络本身将成为瓶颈。这种形式变成了:我正在浪费性能,因为我的应用程序并不能让我的存储设备达到满载。
但是,网络并不是成为瓶颈的唯一一个目标因素。这些闪存设备如此之快,它们能够提供足够快的I/O处理速度,因此可以充分利用闪存硬件,但这也意味着它们需要消耗大量的CPU。因为请求处理需要消耗这么多的CPU,因此PCIe闪存设备需要有专用的处理器来足够快地处理这些请求,这样才能满足一个10GB的网络连接。
为了更好地理解新存储系统对性能带来的影响,我想到了“数据孔径”的想法。在摄影技术中,透镜的孔径是由透过它的光的量和宽度来进行测量的。你可以想象访问数据的方式也是如此:数据孔径就是所有应用程序要访问这些数据所需要的路径宽度。
存储系统传统上并不需要担心孔径的问题,因为在之前的IT架构里,它不是瓶颈,而在现在这个IT环境之下,存储系统已经变成了瓶颈。这是我们的工程师团队在两年前面临的第一个挑战,当时我们正开始尝试用这些新兴的高性能设备去构建可扩展的存储系统。在一系列的基准测试和分析之后,我们发现避开显著瓶颈来构建可扩展存储系统的唯一一个方法就是平衡所有的用于构建存储系统的物理介质资源。
传统的存储系统都依赖于一个固定的网络连接和一个静态的存储控制器(或者叫头),然后添加磁盘以达到提高性能和容量等纵向扩展的目的。现代的存储系统必须采用不同的方法,即CPU和网络资源必须达到横向扩展,方法就是使用一定比例的高性能闪存设备。
在平衡了所有物理资源之后的结果就是,一个存储系统可以与周围的配件来一起进行设计。一个PCIe闪存设备与一个足够快的CPU配对,可以处理其与网络之间的I/O调度问题。这一配对与一个10GB的网络接口相连,这可以充分地利用闪存的速度。因此,访问数据的速度呈现线性增长,因为存储系统得到了横向扩展。
这个数据孔径的挑战只是传统纵向扩展阵列走向灭亡的其中一个原因。用Web扩展的方式来存储可以让用户享用更好的灵活性,而横向扩展架构的商用硬件可以更好地用更高性能和更经济的方法来使用闪存硬件。
在Coho Data,我们已经采取了这种方法,通过将软件定义网络合并进入系统来更好地有规模地管理性能,当然,这将是另外一个主题需要讨论的技术。
作者简介:Andrew Warfield是Coho Data的创始人兼CTO,同时他也是英属哥伦比亚大学的计算机科学专业的教授。