用通俗的语言

讲述复杂的技术

  块存储  

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

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

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

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

很晦涩?好,来个简单的

块存储 = 土地开发

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

把15亩地交给压路机,

那它就能修出一条路,

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

再把70亩地交给拖拉机,

那它就能整出一片农田,

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

剩下的15亩交给塔吊,

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

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

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

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

对应到块存储

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

把15TB交给数据库,

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

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

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

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

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

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

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

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

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

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


  文件存  

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

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

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

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

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

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

文件存储 = 仓库管理

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

但是为了找起来方便,

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

分类清晰,命名准确。

对应到文件存储

我有一套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的方式,直接访问对象存储,摆脱了对宿主服务器和操作系统的依赖。

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

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

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

对象存储 = 停车场管理

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

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

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

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

编号从A001到A070。

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

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

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

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

编号从B001到B015。

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

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

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

把15个车位分配给客车,

编号从C001到C015。

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

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

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

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

对应到对象存储,

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

把70TB分配给了桶bigdata,

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

自己记住对象的URL

把15TB分配给了桶cms,

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

自己记住对象的URL

我把15TB分配给了桶archive,

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

自己记住URL

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

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

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


 参数对比  

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

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

  • 数据更新方式:

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

  • 元数据支持:

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

  • 数据保护方式:

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

  • 限制:

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


  应用场景 

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

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

总结下来,大概就是:

块存储:

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

文件存储:

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

对象存储:

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


写在最后

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

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

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

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

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

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

每次找衣服都得翻,

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

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

再找的时候就好找多了。

但是后来衣服越买越多,

一个抽屉放不下了,

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

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

然后就成这样了。

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

最后的最后

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

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

关注IBM软件定义存储在线实验室

https://csc.cn.ibm.com/labs/index

领取丰富的学习资源

vmware挂载san存储_戏说 块存储 文件存储 对象存储相关推荐

  1. 天翼云对象存储android实现,中国电信天翼云推出对象存储OOS——可作静态网站,可绑独立域名 | 问剑杂谈...

    天翼云推出对象存储OOS--可作静态网站,可绑独立域名 2013-07-01 天翼云推出云存储 我们首先看下官方对于对象存储 面向对象存储(Object-Oriented Storage, OOS提供 ...

  2. jdbc连接teradata仓库_技术分享:如何基于对象存储打造一个高性能、完全托管的PB级MPP数据仓库...

    本文将介绍北京一家初创企业 HashData 构建基于云原生的 MPP 平台的过程.该企业利用对象存储作为数据持久层,Alluxio 作为云中的数据编排层,最终构建了一个原生云高性能 MPP 共享的体 ...

  3. android以ini文件形式保存在内部存储_彻底了解android中的内部存储与外部存储

    打开手机设置,选择应用管理,选择任意一个App,然后你会看到两个按钮,一个是清除缓存,另一个是清除数据,那么当我们点击清除缓存的时候清除的是哪里的数据?当我们点击清除数据的时候又是清除的哪里的数据?读 ...

  4. java oss 批量传输_初步使用阿里云OSS对象存储功能

    在使用之前先了解上传文件/图片的过程,首先我觉得使用阿里云对象存储功能可以分为三种方式上传到阿里云OSS中: 1).第一种方案就是:浏览器把文件传到自己的程序中,通过Java代码去给阿里云OSS服务器 ...

  5. linux同步到对象存储,将Cpanel备份配置为S3对象存储的方法

    使用Cpanel,你可以选择在本地备份网站数据和数据库,也可以选择在Amazon S3等云存储中备份,在本文中我们将配置Cpanel自动备份策略-本地和S3对象存储(在Linux下安装Minio并使用 ...

  6. 腾讯云对象存储 python_GitHub - fushall1104/cos-python3-sdk: 腾讯云对象存储服务(cos)Python3.5版本SDK...

    cos-python3-sdk 腾讯云对象存储服务(cos)Python3.5版本SDK *此版本非官方版本 项目进展:开发完成(分片上传待测试) 项目的来由:做基于Django个人网站时,采用了腾讯 ...

  7. vmware挂载san存储_细述企业级存储NAS和SAN差异

    常见服务器磁盘类型 SAS:容量小,300G,600G,价格贵 SATA:容量大,4T,不支持热插拔,价格低 假SAS:容量大,支持热插拔,价格低,(就是SAS接口的SATA盘)(缺点:故障率比SAS ...

  8. android实现mysql数据库存储_一个简单的Android端对象代理数据库系统的实现(二、执行+存储)...

    这是我之前在武汉大学彭智勇老师那边做过的一个对象代理数据库系统.文中给出了一整个系统的几乎所有代码,经测试可正常运行.文章比较长,超出了知乎的最长文章范围,因此分为两篇文章.这是第二篇. 执行 执行部 ...

  9. mysql 轨迹数据存储_基于Tablestore实现海量运动轨迹数据存储-阿里云开发者社区...

    前言 现在越来越多的人都开始关心自己的运动数据,比如每日的计步.跑步里程.骑行里程等.运动APP与运动类的穿戴设备借助传感器.地图.GPS定位等技术,收集好运动数据以后,通过与互联网社交功能结合,产生 ...

最新文章

  1. 用aspect在springboot中记录操作日志至数据库的详细过程
  2. web前端【补充】CSS补充
  3. 语音对话系统的设计要点与多轮对话的重要性
  4. JavaScript + Audio API自制简易音乐播放器(详细完整版、小白都能看懂)
  5. 开发接口文档_更优更稳更好,看文档驱动开发模式在AIMS中的优势
  6. 【Python】Matplotlib绘制极坐标散点图
  7. 使用IDEA逆向生成实体类时注意问题(Maven)
  8. (转)web app 禁用手机浏览器缓存方法
  9. Android--从相册中选取照片并返回结果
  10. 关于键盘事件对象code值
  11. Qt 启动应用程序的3种方式
  12. 戴尔dell poweredge r730服务器系统安装以及raid配置详解教程
  13. 2018招商银行笔试题——团建活动
  14. 让你的系统无懈可击 史上优秀防火墙一览
  15. 把 汇编代码翻译成二进制机器代码
  16. 基于php的外卖订餐系统开题报告_校园网上订餐系统的设计与实现(PHP,MySQL)
  17. 分享一个蓝月传奇手游辅助脚本,想回味传奇游戏又不想费太多时间练级的可以试试
  18. Praat:强大的语音处理工具。
  19. 2^29哪个数字没有出现?
  20. 今日头条创始人张一鸣:独特定位是我们的优势

热门文章

  1. 代码健壮性 —— 异常保护和合法性检测
  2. numpy 辨异 (五)—— numpy.ravel() vs numpy.flatten()
  3. seo代码优化工具_谁是「南京SEO」搜索引擎网站关键词排名优化专家
  4. python程序-怎么用手机编写Python程序?
  5. python代码写好了怎么运行-教你如何编写、保存与运行 Python 程序
  6. python下载步骤-python3.8下载及安装步骤详解
  7. python 下载文件-Python下载文件的方法
  8. 为什么黑客都用python-终于发现为什么黑客都用python
  9. python基础教程免费视频-零基础小白python从入门到精通视频(全60集)
  10. python post 上传文件_python接口自动化7-post文件上传