半年多以前,我曾经撰文一篇《纪录中国企业存储的自主之路》,讨论的是厂商(供应商)自主研发创新方面的话题;今天,我要写的是IT基础设施的用户端,在数据中心方面的投入的研发。前者比较好理解,只有掌握一定的核心技术才能保证产品的持久竞争力和销路;而作为像Google、Facebook、百度、阿里巴巴这样的互联网企业来说,他们的定位是服务提供商,数据中心的研发则是为了降低IT运维的TCO(总体拥有成本)。
1月11日,微博上的消息使我注意到百度在南京举办的活动。尽管笔者没有亲临现场,但随后也看到了百度云首席架构师林仕鼎的演讲资料《数据中心计算与变革》,以及来自各方面的言论。强烈的好奇心使我联系了百度,提出自己的疑问并于近日获得正式的书面回答。本文就将这些内容分享出来,希望对大家有帮助。
在去年10月底的“从FB、谷歌到淘宝定制服务器:需求决定采购模式”一文中,我写到:“像Facebook和谷歌,因为服务器采购量比较大,他们自己提出一些设计直接向ODM下单,而不是从惠普、戴尔、IBM这种一线的OEM采购。”近日由Facebook主导的开放计算项目(Open Compute Project)也传来不少新闻,公布了一系列的存储(包括由Fusion-io提供的PCIe闪存加速卡)、主板/服务器、机架和数据中心等方面的参考设计资料。无论是百度还是Facebook,做这些的目的基本相同,但在执行细节、投入产出的形式,以及对整个行业的贡献等方面还是有一定的差别。这也是我们要讨论的一个话题。
在基础架构的研究方面,无论Facebook和百度做出什么选择,适合的就是最好的。
本文预计分为上、下两篇,关于ARM服务器云存储、万兆以太网(10GbE)交换机等话题留在后面,请您继续关注。
百度SSD将开放SPEC,欢迎华为在内的硬件供应商
传统SSD与百度SSD的系统架构对比
林仕鼎在介绍百度的SSD(PCIe闪存卡)时表示:“传统的系统架构中,是由一个总的SSD controller来控制下面的Flash存储单元,这样的好处是黑箱化、层次化。但不利之处是SSD往往读取较快,写入较慢,容易形成瓶颈。在百度自主研发的SSD架构中,取消了写缓冲、擦写平衡等复杂逻辑,大幅简化SSD控制器的设计。通过将一个大的SSD划分为N个单元,每个单元都有独立的控制器和存储单元,这些信息和控制接口暴露给上层存储系统(软件)后,形成了多个管道,并行读取、存储效率可以大幅提升。”
上图中,左右两边的架构很容易看出差异。左边是一个SSD控制器连接出多个闪存通道,并向应用程序(系统)提供一个像硬盘那样的块存储设备;而右边则是多个SSD控制器,分别拥有各自的闪存通道,它们向上提供的容量空间,就像在一个盘上的sda0~sdaN个分区那样。二者的架构建立在不同的硬件基础上吗?
这张照片是去年4月,我在IDF2012大会上拍摄的华为PCIe SSD卡,@林仕鼎 曾经在微博上发布的百度SSD图片与它如出一辙,引发了业内人士的广泛猜想。
上图中我们可以看到主卡上有一颗覆盖黑色散热片的芯片,它的作用应该是PCIe Switch(桥接),另外除了层叠在上面的子卡上有Xilinx(赛灵思)的FPGA和闪存芯片之外,主卡上应该也具备同样的单元。估计一共有4个FPGA作为闪存控制器。
不过,在这块卡上方的文字介绍中,有“内置RAID 5保护机制,支持ECC纠错... 采用磨损平衡算法...”等字样。也就是说,百度与华为的SSD在软件(Firmware)的编写上是不同的。
另外,这个在今天已经不是华为最新一代的PCIe闪存卡了。在去年7月举行的华为OceanStor T系列统一存储 & Tecal服务器新品发布会上,我们看到了ES3000 PCIe SSD卡(如下图)。华为ES3000 PCIe SSD卡
以笔者这些年来的经验来看,ES3000这块卡的PCB空间利用率(容量密度)、整体设计水平比前代产品上了一个台阶。华为表示它同样使用了FPGA方案,另外我也看到了DRAM颗粒和用于缓存保护的电容。
华为IT产品线总裁郑叶来这样说:“(SSD)软件的关键还是百度自己做的,我觉得华为要向他们学习软件能力,特别是敢于在架构上创新。”
其实这张软件架构对比图才是关键。传统SSD(包括PCIe闪存卡)需要给上层文件系统(存储控制器)提供SCSI块设备,因此中间增加了很多“层”,而百度SSD通过位于硬件之上的PCIe driver直接将kernel space提交给轻量级的文件系统(定制?)。因此号称“对比传统PCIe Flash性能提升2倍,成本降低40%;相对SATA SSD性能提升6倍,成本降低10%”。
ChinaByte比特网:关于自主研发的SSD,硬件是否来自国内某家厂商?然后重写(定制)了Firmware?
百度:百度自己开发了对应的FPGA 的逻辑和驱动,与自己的应用相结合。代工做生产。
国内初创的PCIe闪存卡厂商Memblaze忆恒科技联合创始人路向峰曾在去年10月表示:“看来百度打算自己做PCIe SSD了 百度招聘FPGA工程师 硬件计算小组,从事一些互联网IDC方面的新硬件开发和研究,我们做的事情比较有趣,也比较有挑战性。要求做过大规模的逻辑设计,有实际的开发调试经验。熟悉PCIe,DDR2接口,对互联网行业感兴趣,愿意在互联网IDC领域做探索和尝试。”
ChinaByte比特网:闪存的冗余管理等高级特性,完全由上层软件实现,应用场景会有局限,或者说通用性差?可以说百度自己研发的实际上是一个闪存优化的(分布式)专用文件系统吗?
百度:百度对SSD 的软硬件进行了很好的划分,与自己的存储体系是一个优化的协同系统。这个系统虽然面向百度自有的存储特性,但百度的存储特性也代表了很多主流互联网公司的存储特性,具有一定的通用性。
点评:上面最后这句话有其道理,不过暂时还没看到百度想把自己使用的SSD向外公开销售。如果卖的话,把产品交给华为还是百度自己来卖呢?百度自主研发的那部分价值如何体现也是一个问题。
华为服务器领域总经理邱隆曾在微博上表达过更多关于百度SSD的观点,我们也就此与百度进行过讨论。得到的回应是:“我们采用了华为的flash卡,华为开放了硬件板卡级别的SPEC,如FPGA的pin(引脚定义)信息,clock(时钟)信息,NAND flash的pin信息等,我们自行根据百度的需求和软硬件架构重新设计了FPGA逻辑、软件驱动和用户态的单机文件系统。”
“华为的第四代卡在百度还没有应用,对于百度定制flash卡的后续规划,我们会开放详细的SPEC,欢迎包括华为在内的硬件供应商按照我们的SPEC进行硬件板卡的设计。”
可以说百度的SSD是在华为PCIe闪存硬件基础上,进行“二次开发”之后的产品。记得笔者去年早些时候曾经与Memblaze总经理殷雪冰讨论过PCIe闪存卡可以按FPGA/ASIC控制器、Native(原生)/ Non-native(非原生)、Host-Based(基于主机)/ Device-Based(基于设备)三种标准来划分。目前的百度SSD属于典型的Non-native Host-Based,而其对应的华为原形产品应该是Non-native Device-Based;那么华为新一代的ES3000 PCIe SSD卡,可能与Memblaze的产品同样归类于Native Device-Based。我们接下来要讨论的Fusion-io则属于FPGA Native Host-Based。
受限于本文篇幅和讨论重点,关于不同类型PCIe闪存卡的优劣,以及更多代表产品先不在这里展开了。有兴趣的朋友可以阅读以下文章:
Fusion ioScale:Facebook模式的问题?
在本月16-17日的开放计算峰会上,Fusion-io的最新产品线Fusion ioScale正式登场。之前ioScale仅用于配备数千服务器的Fusion-io客户,现在hyperscale(超大规模计算)和云企业也能够从一百台订购量起步。每个ioScale可提供的Fusion ioMemory容量达3.2TB,每GB售价仅为3.89美元,并且购买的容量越多折扣越高,这使得采用ioScale来搭建全闪存数据中心成为可能。
上面是Fusion-io的ioScale PCIe闪存卡架构图:主控采用一颗Xilinx Virtex 6 FPGA,不知华为的ES3000和Memblaze的产品是否也使用了同一款?
Facebook硬件设计和供应链管理副总裁兼开放计算协会主席Frank Frankovsky表示:“我们很高兴看到Fusion-io在开放计算峰会之际推出高性能、低功耗的ioScale。并且,Fusion-io进一步拓展了ioScale技术的应用范围。我们全程参与了该产品的研发,并且我们很高兴看到这项技术有可能帮助业界满足其快速增长的存储需求。”
Fusion ioScale PCB设计图:右边较大的BGA芯片位置就是留给FPGA的;这块主卡上没有闪存,而是通过上下方(2排)共6块触点来连接NAND闪存模块子卡。
除了这些来自规格文档中的图片之外,Fusion-io还提供了ioScale CAD模型的下载。也就是说,用户可以依此找人制作PCB,购买闪存颗粒来生产类似的产品。Fusion-io共同创始人兼首席执行官David Flynn称:“超大规模的客户将获得原始闪存,并使用Fusion-io控制器技术来建立他们自己的PCIe闪存卡。”但是谁要使用ioScale设计工具的话,就必须使用Fusion-io的控制器技术(包括闪存算法在内的Firmware软件,应该需要付费)。
这应该就是Fusion-io将ioScale硬件设计开源并捐献给Facebook的Open Compute Project目的所在。那么Facebook的意图呢?只是“学雷锋做好事”完全不图回报吗?我想不会,如果由于开放计算项目增加ioScale的出货量,从而导致相关的硬件采购成本下降(利润摊薄了),Fusion-io和用量最多的Facebook(短时间不会改变)应该就是最大的受益者。对于其它用户呢,即使同样是在互连网行业与Facebook有竞争关系,也不会因此有明显的不利影响。正如笔者在本文开头所说的,Facebook的主要竞争力不是在这里。
适合自己的,就是最好的
一些读者朋友应该看到,Open Compute Project公布了包括Fusion ioScale在内大量、详细的设计资料,正如Howard Marks在“英特尔、Fusion-io拥抱开放计算”一文中所说:“从几年前,美国企业开始购买开放计算式的设备,机架级电源和超高密度的计算(单元)。开放计算项目创造了客户驱动的设计和创新速度,会给我们其他人带来好的东西...”不过参与研发不代表掌握核心技术,ioScale本质上说还是一款Fusion-io为用户定制的产品。
而百度的情况则有些不同,并未公开其SSD软硬件设计,也没有这样做的义务。首先硬件是华为的,软件部分的自主知识产权也是研发投入换来的。试想一下,假如Fusion-io公开其软件设计后结果会怎样?在国外一些行业成功的玩法,未必适合国内的用户。这里面可能受不同的国情特色,乃至文化差异的影响。
另一方面,更加通用化的ioScale,其进一步推广的意义显然更大。不过也有业内人士表示:“自己做卡或者找人代工,会遇到供应链、售后服务等方面的问题。即使是直接从Fusion-io(或其经销商)采购ioScale,通常也需要在自己的系统上进行兼容性测试与调优,而不像一些流行的企业级PCIe闪存产品那样在各大OEM的服务器中获得过周期较长的认证。”
最后,关于百度和Facebook的Open Compute Project的话题,本文中只讨论了SSD。笔者还有很多想要与大家分享的内容,包括ARM服务器、存储单元... 敬请关注。