戏说 - 块存储 文件存储 对象存储

2019-09-22 10:56:08 2119

用通俗的语言,讲述复杂的技术


一、块存储


TIM截图20200806105913.png

一个块存储设备通常包含一组控制器和一组磁盘阵列


大多数情况下,块存储是通过SAN网络连接服务器。当然,除了SAN网络之外,还有其它多种块存储访问方式,比如Infiniband,基于以太网的iSCSI等等,从用户端的角度来看,大同小异吧。

2.png


从服务器端看来,块存储就像是一块“超大磁盘”,它被切成了不同大小的“小磁盘”也就是LUN,然后通过SAN网络映射给服务器。这些远程映射的小磁盘看起来就跟本地盘没有任何区别了。这些盘可以被用作服务器的操作系统启动盘,也可以被用作数据盘。这些数据盘可以被加入到操作系统的文件系统,也可以被数据库等应用直接管理并使用。


总之,块存储提供的是远程可访问的逻辑磁盘

 

很晦涩?好,来个简单的


块存储 = 土地开发


现在我有一片100亩的荒地,

把15亩地交给压路机,

那它就能修出一条路,

这15亩地就被用于交通运输了。

再把70亩地交给拖拉机,

那它就能整出一片农田,

这70亩地就被用于种小麦了。

剩下的15亩交给塔吊,

那它就能盖起一座体育场,

那这15亩地就被用于体育运动了。

作为一个拥有100亩地的地主,

我不关心你拿地做什么,我只负责分配土地空间。

3.png


对应到块存储

现在我有一套100TB的块存储


把15TB交给数据库,

那它就能创建多个表空间,

这15TB就被用于存储交易类结构化数据了


再把70TB交给存储虚拟化平台,

那它就能构建一个云存储池,

这70TB就被用于云平台存储资源池了。


把剩下的15TB交给文件系统,

那它就能被用于文件系统目录,

这15TB就被用于存储文件了。


作为一个拥有100TB存储空间的块存储管理系统,

我不关心你拿存储做什么,我只负责分配磁盘存储空间。


二、文件存储  


一个文件存储,或者叫共享文件存储

通常包含一组Name Server,俗称机头,和一组Data Server


文件索引和元数据通常存储在Name Server里,而文件则被保存在Data Server中。这些服务器之间通过局域网相互连通。客户端也大多是通过局域网访问文件存储。

4.png

从服务器和终端看来,文件存储就像是一个“超大文件夹”,它里面又嵌套了二级、三级、四级..n级“子文件夹”。任何支持NFS或SMB远程文件访问协议的服务器和终端都可以通过mount的方式将远程共享目录挂载到本地文件系统,挂载之后看起来就像本地目录一样,所有本地目录支持的文件访问方式都适用于远程挂载目录。用户不需要学习任何新的技能就可以直接使用。


总之,文件存储提供的是远程可访问的共享文件目录

 

也晦涩?好,再来个简单的


文件存储 = 仓库管理


现在我有一个100排货架的仓库,

把70排货架交给客厅家具部门,

然后这个部门按照客厅家具规格,

每排又细分成了书库架,书桌架,储物柜架,

每个货架又被细分成了不同的尺寸的搁架单元,

这70排就被用于存放客厅家具了。

再把15排货架交给交给卧室家具部门,

然后它按照卧室家具规格,

也被细分成了不同的尺寸的搁架单元,

这15排就被用于存放卧室家具了。

把剩下的15排货架交给卫浴部门,

然后它按照卫浴设施规格,

每排又细分成了台盆,浴室柜,浴帘,

这15排就被用于存放卫浴用品了。

作为一个拥有100排货架的仓库,

我规划好每排货架的用途,

至于货架里面你再怎么划分,我就不关心了。

但是为了找起来方便,

你最好还是对隔架单元做好规划,

分类清晰,命名准确。

6.png

对应到文件存储

我有一套100TB的文件存储


把70TB配额的目录/fs/email分配给邮件系统,

邮件服务器操作系统mount了/fs/email远程共享目录以后,

这70TB就被用于存储邮箱附件了

再把15TB配额的目录/fs/log分配给日志系统,

日志服务器操作系统mount了/fs/log远程共享目录以后,

这15TB就被用于存储应用日志了

把剩下的15TB配额的目录/fs/share分配给办公系统,

办公系统服务器操作系统mount了/fs/share远程共享目录以后,

这15TB就被用于存储共享的办公数据了

作为一个拥有100TB存储空间的文件存储管理系统,

我不关心你mount以后怎么用这些文件目录,

我只负责分配挂载点。

但是为了找起来方便,

你最好还是对子目录做好规划,

分类清晰,命名准确。


 三、对象存储  


一个对象存储,通常包含一组访问节点和一组数据节点

访问节点提供了访问接口,数据节点则负责存储对象的索引,元数据和数据


这些节点之间可以通过局域网构建本地对象存储集群或者通过广域网构建跨站点的对象存储集群。客户端则可以在广域网,通过应用,以API的方式,直接访问对象存储,摆脱了对宿主服务器和操作系统的依赖。

7.png

从服务器和终端看来,对象存储就像是一个“大桶”,它可以被切分成无数个“小桶”也就是Bucket,只要网络可达,应用就可以通过直接调用API向Bucket里存取数据。


总之,对象存储提供的是远程可访问的桶

 

这个更晦涩。也来个类比吧

对象存储 = 停车场管理

现在我有一个100个车位的停车场,

规划了三种类型的停车位。

每个车位都有显著的编号。

把70个车位分配给普通燃油家用小汽车,

编号从A001到A070。

普通燃油家用小汽车进来以后,

我也不管你是什么车牌的,几座的,

自己找空位停车,自己记住车位号。

把15个车位分配给新能源充电小汽车,

编号从B001到B015。

新能源充电小汽车进来以后,

我也不管你是什么车牌的,几座的,

自己找空位停车,自己记住车位号。

把15个车位分配给客车,

编号从C001到C015。

作为一个拥有100个车位的停车场,

我不关心你停什么车,停哪儿,

我只负责划分用途和停车位。

你只要记住车位编号,就能找到车。

TIM截图20200806111149.png

对应到对象存储,

我有一套100TB的对象存储。

把70TB分配给了桶bigdata,

大数据平台就可以通过API直接写入任何非结构化数据,

自己记住对象的URL

把15TB分配给了桶cms,

影像平台就可以通过API直接写入任何多媒体数据,

自己记住对象的URL

我把15TB分配给了桶archive,

归档平台就可以通过API直接写入任何归档数据,

自己记住URL

作为一个拥有100TB存储空间的对象存储管理系统,

我不关心你怎么用这些桶,我只负责分配桶。

你只要记住对象的URL,就能找到对象。

 

四、参数对比  


写到这儿呢,您大概也对这三种类型的存储有了一些感性的认识了,但是技术这事儿呢,光感性是不行的,该花钱的时候还是得较真儿。下面汇总了一个多维度的比较,希望对您能有帮助。

8.png

上面列了很多项目,我不再一一介绍,挑几个不太容易理解的解释一下吧。

  • 数据更新方式:

    块存储和文件存储都是支持局部更新的,比如修改一个块或者修改文件的一个片段。但是对象存储是不支持局部更新的。更新操作实际上就是整体覆盖了旧的版本。这也是为什么说对象存储适合保存一些很少更新的非结构化数据的原因。比如多媒体,冷数据,归档等。

  • 元数据支持:

    块存储可以说不存在元数据的概念,可能就一个address算是了吧。文件存储是支持系统元数据的,比如文件的名称,大小,后缀,创建/访问/修改时间都是;不过文件存储通常默认是不支持追加自定义元数据的。对象存储天生就支持追加自定义元数据。除了文件系统相同的系统元数据外,它还可以根据业务需要,追加多个业务属性元数据。

  • 数据保护方式:

    块存储有很多保护方式,从低层看就是RAID,DRAID等技术。文件系统基本是副本的方式,单,双,三副本。对象存储基本都采用纠删码了,这样在超大容量存储中性价比会非常高,因为它只需要1.x倍的冗余就可以提供很高的可用和可靠性。尤其在跨广域网的多站点部署时,全局纠删码更能节省大量的存储空间和传输量。

  • 限制:

    因为块存储基本都是基于SAN,Infiniband等,而且需要低延迟,所以通常距离都不远。同城双活,异地容灾,基本就是这样了。文件系统也是类似,基本都是在局域网中使用。对象存储基本网络可达就可以访问,所以几乎没有距离限制。但是由于数据更新方式的原因,对象存储不适合频繁修改数据的应用。


五、 应用场景 


那么在不同的场景中,我们该怎么选择呢?

这里咱们一起看一些示例吧。

9.png

总结下来,大概就是:

块存储:

高速、低延迟,且频繁修改的结构化数据


文件存储:

经常访问或频繁修改的非结构化数据


对象存储:

阶段性访问或很少修改的非结构化数据


写在最后


实际上在选择对象存储的时候,通常都会对比文件存储。

对象存储管理特别简单,就像停车场一样,划分好车位,定义好编号,修几条进出停车场和车位的路就可以了。车停哪儿?你爱停哪儿停哪儿,自己找空地儿,记住车位编号,锁车走人。

车位不够了?那加点儿停车位就可以了。进出太慢?多修几条路和出入口就好了。

 

文件存储管理非常复杂,就像搁架单元一样,需要分门别类,每个架子,格子,抽屉命名准确,还得提前规划好每个抽屉大概存多少。至于抽屉里面,找东西的时候你还是得把抽屉翻个遍。

就好比一开始你有50件衣服,

乱七八糟的堆在一个抽屉里,

每次找衣服都得翻,

后来实在忍不了了,买了个分隔件,

把50件衣服一个格子一件,

再找的时候就好找多了。

但是后来衣服越买越多,

一个抽屉放不下了,

俩抽屉,仨,四,五,六,七,八,

然后小格子又放不下大件了,

然后就成这样了。


所以文件系统要想用好,强力的规划,命名非常非常重要。

最后的最后

存储的地位也许有高低之分

但是技术,不应该有贵贱之别


提交成功!非常感谢您的反馈,我们会继续努力做到更好!

这条文档是否有帮助解决问题?

非常抱歉未能帮助到您。为了给您提供更好的服务,我们很需要您进一步的反馈信息:

在文档使用中是否遇到以下问题: