块存储、文件存储、对象存储三者之比较( 三 )


前面说到的块存储和文件存储,基本上都还是在专有的局域网络内部使用,而对象存储的优势场景却是互联网或者公网,主要解决海量数据,海量并发访问的需求 。基于互联网的应用才是对象存储的主要适配(当然这个条件同样适用于云计算,基于互联网的应用最容易迁移到云上,因为没出现云这个名词之前,他们已经在上面了),基本所有成熟的公有云都提供了对象存储产品,不管是国内还是国外 。
对象存储常见的适配应用如网盘、媒体娱乐,医疗PACS,气象,归档等数据量超大而又相对“冷数据”和非在线处理的应用类型 。这类应用单个数据大,总量也大,适合对象存储海量和易扩展的特点 。网盘类应用也差不多,数据总量很大,另外还有并发访问量也大,支持10万级用户访问这种需求就值得单列一个项目了(这方面的扫盲可以想想12306) 。归档类应用只是数据量大的冷数据,并发访问的需求倒是不太突出 。
另外基于移动端的一些新兴应用也是适合的,智能手机和移动互联网普及的情况下,所谓UGD(用户产生的数据,手机的照片视频)总量和用户数都是很大挑战 。毕竟直接使用HTTP get/put就能直接实现数据存取,对移动应用来说还是有一定吸引力的 。
对象存储的访问通常是在互联网,走HTTP协议,性能方面,单独看一个连接的是不高的(还要解决掉线断点续传之类的可靠性问题),主要强大的地方是支持的并发数量,聚合起来的性能带宽就非常可观了 。

块存储、文件存储、对象存储三者之比较

文章插图
 
从产品形态上来看,块存储和文件存储都是成熟产品,各种规格形态的硬件已经是琳琅满目了 。但是对象存储通常你看到都是一堆服务器或者增强型服务器,毕竟这东西现在还是互联网行业用得多点,diy风格 。
关于性能容量等方面,我做了个图,对三种存储做直观对比 。
块存储、文件存储、对象存储三者之比较

文章插图
 
块存储就像超跑,根本不在意能不能多载几个人,要的就是极限速度和高速下的稳定性和可靠性,各大厂商出新产品都要去纽北赛道刷个单圈最快纪录,千方百计就为提高一两秒,跑不进7分以内都看不到前三名 。(块存储容量也不大,TB这个数量级,支持的应用和适用的环境也比较专业(FC+Oracle),在乎的都是IOPS的性能值,厂商出新产品也都想去刷个SPC-1,测得好的得意洋洋,测得不好自动忽略 。)
文件存储像集卡,普适各种场合,又能装数据(数百TB),而且兼容性好,只要你是文件,各种货物都能往里塞,在不超过性能载荷的前提下,能拉动常见的各种系统 。标准POXIS接口,后车门打开就能装卸 。卡车也不挑路,不像块存储非要上赛道才能开,普通的千兆公路就能畅通无阻 。速度虽然没有块存储超跑那么块,但跑个80/100码还是稳稳当当.
而对象存储就像海运货轮,应对的是"真·海量",几十上百PB的数据,以集装箱/container(桶/bucket)为单位码得整整齐齐,里面装满各种对象数据,十万客户发的货(数据),一条船就都处理得过来,按照键值(KeyVaule)记得清清楚楚 。海运速度慢是慢点,有时候遇到点网络风暴还不稳定,但支持断点续传,最终还是能安全送达的,对大宗货物尤其是非结构化数据,整体上来看是最快捷便利的 。
从访问方式来说,块存储通常都是通过光纤网络连接,服务器/小机上配置FC光纤HBA卡,通过光纤交换机连接存储(IP SAN可以通过千兆以太网,以iSCSI客户端连接存储),主机端以逻辑卷(Volume)的方式访问 。连接成功后,应用访问存储是按起始地址,偏移量Offset的方法来访问的 。
而NAS文件存储通常只要是局域网内,千兆/百兆的以太网环境皆可 。网线连上,服务器端通过操作系统内置的NAS客户端,如NFS/CIFS/FTP客户端挂载存储成为一个本地的文件夹后访问,只要符合POXIS标准,应用就可以用标准的open,seek, write/read,close这些方法对其访问操作 。
对象存储不在乎网络,而且它的访问比较有特色,只能存取删(put/get/delete),不能打开修改存盘 。只能取下来改好后上传,去覆盖原对象 。(因为中间是不可靠的互联网啊,不能保证你在修改时候不掉线啊 。所谓你在这头,对象在那头,所爱对象隔山海,山海不可平 。)
另外再说一点分布式存储的问题,以上三种存储都可以和分布式概念结合,成为分布式文件系统,分布式块存储,还有天生分布式的对象存储 。


推荐阅读