经常看到人们在谈论云存储,但是没看过实际的图,人们很难想象到底云存储是什么模样,下面就是一个云存储的简易架构图。
橘色的存储节点(storage node)负责存放文件,蓝色的控制节点(control node)则是作为文件索引,并负责监控存储节点间容量及负载的均衡,这2个部分合起来便组成一个云存储。存储节点与控制节点都是单纯的服务器,只是存储节点的硬盘多一些,存储节点服务器不需要具备 RAID 的功能,只要能安装 Linux 即可,控制节点为了保护数据,需要有简单的 RAID level 01的功能。每个存储节点与控制节点至少有2片网卡(千兆、万兆卡都可以,有些也支持 infiniband),一片网卡 internal 负责内部存储节点与控制节点的沟通、数据迁移,一片 external 负责对外应用端的数据读写,一片千兆卡,读可以达到100MB,写可以达到70MB,如果你觉得对外一片网卡不够,也可以多装几片。
上面灰色的方块(NFS、HTTP、FTP、WebDav)是应用端,左上角的灰色方块(mgmt console)是一台PC,负责云存储中存储节点的管理。对应用端看来,云存储只是个文件系统,而且一般来说支持标准的协议,例如NFS、HTTP、FTP、WebDav等等,所以很容易把旧有的系统与云存储结合,应用端不需要作什么改变。
云存储不是要取代现有的盘阵,而是为了应付高速成长的数据量与带宽而产生的新形态存储系统,因此云存储在设计时通常会考虑以下三点:
1、容量、带宽的扩容是否简便
扩容是不能停机,会自动将新的存储节点容量纳入原来的存储池,不需要做繁复的设定。
2、带宽是否线形增长
使用云存储的客户,很多是考虑未来带宽的增长,因此云存储产品设计的好坏会产生很大的差异,有些十几个节点便达到饱和,这样对未来带宽的扩容就有不利的影响,这一点要事先弄清楚,否则等到发现不符合需求时,已经买了几百TB,后悔就来不及了。
3、管理是否容易
不说Google有五万台存储服务器,即使国内也有很多客户有超过500台存储的,若不使用云存储来统一管理,管理500台存储是一个巨大的工作,一不小心就可能导致某些应用的崩溃,因此云存储的应用是一个必然的趋势,当用户把应用迁移到云存储,他管理的就是一台存储,而不是500台甚至五万台存储。管理一台存储不容易出错,分别管理五万台要不出错就很难了。
上面介绍的是一个纯软件的云存储解决方案,有的产品是硬件的解决方案,他们把橘色的存储节点和蓝色的控制节点,放在一台设备上,这样做的缺点是成本比较高,客户也不能够按照自己的需求,任意选择适合自己规格的硬件,例如读写性能、网卡、硬盘容量等等,因此我个人观点觉得软件的解决方案会成为最后的赢家,因为以云存储使用者的角度来看,他们对成本的要求很高、也不希望放弃他们原有的硬件投入,这些都是硬件的解决方案无法满足的。