华为云计算大会(HCC2012)昨天在上海落下帷幕,笔者前一天撰写的《华为HVS高端存储硬件不惧 Scale-in软件创新?》中讨论了华为本次发布的3款存储新品中的一款,这里我想再谈谈UDS海量存储(云存储)系统。9月6日下午的分论坛中,华为公司的专家从原理和功能上对它进行了比较系统地阐述。由于平时我关注SAN、NAS这些传统企业存储比云存储/对象这些要多,因此这篇文章将以一名旁观者的视角,通过应用案例、还有同类产品对比的角度来写。
首先,关于对象存储技术,可以参考下华为供稿的“分布式对象存储——超级数据图书馆”一文。
华为UDS:对象存储+ARM自组织硬盘节点
如上图,我们看到UDS海量存储架构的特点为——去中心、全分布和自组织。整个系统由接入节点(网关)、单盘存储节点和以太网交换机组成,数据流进入UDS时首先被接入节点负载均衡,使用擦除编码(Erasure code)对数据进行分片,然后在分布式SoD(自组织硬盘)群中按照一定的规则保存在其中3个节点上,即每份数据存放3份。
这一点是不是有点像HDFS(Hadoop分布式文件系统)?当然它们的原理和适用场景都不同,只是对象存储设备大多是保存数据的2~3个副本来实现冗余保护。华为宣称UDS存储数据的可持久性:单数据中心为99.9999%,而在三数据中心的情况下可达99.999999999%。
谈到擦除编码,笔者联想到在IDF2012系列报道中的一篇——《云存储:AmpliStor擦除码+对象、SAS SAN性价比》中介绍过的大规模对象存储,当前这家公司已经成为Intel和昆腾的合作伙伴。擦除编码的主要特点是在遇到硬盘故障时比传统RAID大大缩短重建时间同时提高可靠性,而华为UDS应该还可以利用多个副本并发读取来提高性能。
UDS对象存储还有一个特性——“无状态的接入节点”,据了解这一单元可以无缝地在系统中增加或者减少。我们记得AmpliStor对象存储的控制节点(相当于接入节点)使用了一颗Intel Xeon E3处理器,而在存储节点上只需要Atom即可。比较有趣的是,华为UDS每个数据存储节点是由一块硬盘和一个ARM处理器组成的。
华为UDS海量存储机柜示意图
上图与AmpliStor的硬件外观颇有形似之处。UDS的接入节点使用了华为的Intel x86 CPU服务器,下面我们看看存储节点。
每台2U高度的存储节点机箱包含上、下2个刀片,每个1U刀片里有8块硬盘,它们分别对应8个ARM芯片。也就是说一个刀片实际上就是前面说的8个SoD。刀片对外通过万兆以太网交换机与接入节点相连,内部估计也有个交换单元将带宽分配到自组织硬盘。
对于大规模分布式的对象存储,性能要求往往不是首要的,除了可靠性就是成本。根据上图,磁盘在今天是最低成本的存储(包括购置、使用和维护),因为磁带还需要磁带机、带库等相对昂贵的自动化设备。使用消费级还是企业级硬盘可以由用户来选择。企业级(7200rpm近线)硬盘大约以(消费级)200%的成本提供133%的性能(数字仅供参考),经过Google和CMU的评估它们的可靠性都能胜任。
我们可以使用简单的“手机”级别处理器吗?每个ARM芯片只负责一块硬盘的数据接口以及元数据处理,所以性能应该不成问题,这种情况下内存和闪存(ROM)也就分布在每个SoD节点上了。
还有严格的1:1可靠性——由于每个硬盘独享ARM CPU和网络接口资源,那么只有单盘存储节点一种失效模式——有效避免了在数据存储节点内部故障的复杂性。