什么是文件存储?

文件存储也称为文件级存储或基于文件的存储,且正如您所想:数据会以单条信息的形式存储在文件夹中,正如您将几张纸放入一个马尼拉文件夹中一样。当您需要访问该数据时,您的计算机需要知道相应的查找路径。(注意,这可能会是一条蜿蜒冗长的路径。)存储在文件中的数据会根据数量有限的元数据来进行整理和检索,这些元数据会告诉计算机文件所在的确切位置。它就像是数据文件的库卡目录。

请试想一下塞满文件柜的储藏室。每个文档都会按照某种类型的逻辑层次结构来排放 ——按文件柜、抽屉、文件夹,然后再是纸张。“分层存储”这个术语就是这么来的,而这就是文件存储。它是适用于直接和网络附加存储系统的最古老且运用最为广泛的一种数据存储系统;而且,这种系统您可能已经用了数十年。只要您访问保存在个人计算机上的文件中的文档,您就是在使用文件存储。文件存储具有丰富多样的功能,几乎可以存储任何内容。它非常适合用来存储一系列复杂文件,并且有助于用户快速导航。

问题是,就像文件柜一样,虚拟抽屉只能打开到一定的程度。基于文件的存储系统必须通过添置更多系统来进行横向扩展,而不是通过增添更多容量来进行纵向扩展。


什么是块存储?

块存储会将数据拆分成块,并单独存储各个块。每个数据块都有一个唯一标识符,所以存储系统能将较小的数据存放在最方便的位置。这意味着有些数据可以存储在 Linux 环境中,有些则可以存储在 Windows 单元中。

块存储通常会被配置为将数据与用户环境分离,并会将数据分布到可以更好地为其提供服务的多个环境中。然后,当用户请求数据时,底层存储软件会重新组装来自这些环境的数据块,并将它们呈现给用户。它通常会部署在存储区域网络 (SAN) 环境中,而且必须绑定到正常运行的服务器。

由于块存储不依赖于单条数据路径(和文件存储一样),因此可以实现快速检索。每个块都独立存在,且可进行分区,因此可以通过不同的操作系统进行访问,这使得用户可以完全自由地配置数据。它是一种高效可靠的数据存储方式,且易于使用和管理。它适用于要执行大型事务的企业和部署了大型数据库的企业。这意味着,需要存储的数据越多,就越适合使用块存储。

但是,块存储有一些缺点。块存储的成本高昂。它处理元数据的能力有限;这意味着,它需要在应用或数据库级别进行处理 — 开发人员或系统管理员又多了一件事要担忧。


什么是对象存储?

对象存储,也称为基于对象的存储,是一种扁平结构,其中的文件被拆分成多个部分并散布在多个硬件间。在对象存储中,数据会被分解为称为“对象”的离散单元,并保存在单个存储库中,而不是作为文件夹中的文件或服务器上的块来保存。

对象存储卷会作为模块化单元来工作:每个卷都是一个自包含式存储库,均含有数据、允许在分布式系统上找到对象的唯一标识符以及描述数据的元数据。元数据很重要,其包括年龄、隐私/安全信息和访问突发事件等详细信息。对象存储元数据也可以非常详细,并且能够存储与视频拍摄地点、所用相机和各个帧中特写的演员有关的信息。为了检索数据,存储操作系统会使用元数据和标识符,这样可以更好地分配负载,并允许管理员应用策略来执行更强大的搜索。

对象存储需要一个简单的 HTTP 应用编程接口 (API),以供大多数客户端(各种语言)使用。对象存储经济高效:您只需为已用的内容付费。它可以轻松扩展,因而是公共云存储的理想之选。它是一个非常适用于静态数据的存储系统,其灵活性和扁平性意味着它可以通过扩展来存储极大量的数据。对象具有足够的信息供应用快速查找数据,并且擅长存储非结构化数据。

当然,它也存在缺点。无法修改对象 — 您必须一次性完整地写入对象。对象存储也不能很好地与传统数据库搭配使用,因为编写对象是一个缓慢的过程,编写应用以使用对象存储 API 并不像使用文件存储那么简单。

区别

针对不同的应用场景,选择的分布式存储方案也会不同,因此有了对象存储、块存储、文件系统存储。这三者的主要区别在于它们的存储接口:

1.  对象存储:

  也就是通常意义的键值存储,其接口就是简单的GET,PUT,DEL和其他扩展,如七牛、又拍,Swift,S3

2. 块存储:

  这种接口通常以QEMU Driver或者Kernel Module的方式存在,这种接口需要实现Linux的Block Device的接口或者QEMU提供的Block Driver接口,如Sheepdog,AWS的EBS,青云的云硬盘和阿里云的盘古系统,还有Ceph的RBD(RBD是Ceph面向块存储的接口)

3. 文件存储:

  通常意义是支持POSIX接口,它跟传统的文件系统如Ext4是一个类型的,但区别在于分布式存储提供了并行化的能力,如Ceph的CephFS(CephFS是Ceph面向文件存储的接口),但是有时候又会把GFS,HDFS这种非POSIX接口的类文件存储接口归入此类。

下图简要的总结了三者之间的差异:

IO特点

按照这三种接口和其应用场景,很容易了解这三种类型的IO特点,括号里代表了它在非分布式情况下的对应:
1. 对象存储(键值数据库):

  接口简单,一个对象我们可以看成一个文件,只能全写全读,通常以大文件为主,要求足够的IO带宽。

2. 块存储(硬盘):

  它的IO特点与传统的硬盘是一致的,一个硬盘应该是能面向通用需求的,即能应付大文件读写,也能处理好小文件读写。但是硬盘的特点是容量大,热点明显。因此块存储主要可以应付热点问题。另外,块存储要求的延迟是最低的。

3. 文件存储(文件系统):

  支持文件存储的接口的系统设计跟传统本地文件系统如Ext4这种的特点和难点是一致的,它比块存储具有更丰富的接口,需要考虑目录、文件属性等支持,实现一个支持并行化的文件存储应该是最困难的。但像HDFS、GFS这种自己定义标准的系统,可以通过根据实现来定义接口,会容易一点。

  因此,这三种接口分别以非分布式情况下的键值数据库、硬盘和文件系统的IO特点来对应即可。至于冷热、快慢、大小文件而言更接近于业务。但是因为存储系统是通用化实现,通常来说,需要尽量满足各种需求,而接口定义已经一定意义上就砍去了一些需求,如对象存储会以冷存储更多,大文件为主。

Ceph的对象存储、块存储、文件系统存储

  Ceph同时支持这三种存储,方法就是通过支持不同的接口来支持不同的存储。下面是Ceph的基本架构图,可以看到通过兼容AWS的S3和OpenStack的Swift接口来支持对象存储,通过librbd库提供块存储的接口,通过libcephfs库的文件系统接口或标准posix接口来支持文件系统存储。

参考文章:

对象存储、块存储、文件系统存储概念与区别 - zxin's - 博客园 (cnblogs.com)

块存储、文件存储、对象存储意义及差异 - hukey - 博客园 (cnblogs.com)

文件存储、块存储还是对象存储? (redhat.com)

块存储、文件存储、对象存储相关推荐

  1. 分布式存储--理解分布式文件系统、分布式块存储、分布式对象存储、分布式数据库

    1. 单机文件系统 vs 分布式文件系统 传统单机文件系统是计算机中一个非常重要的组件,为存储设备提供一致的访问和管理方式.在不同的操作系统中,文件系统会有一些差别,但也有一些共性几十年都没怎么变化: ...

  2. 阿里云文件存储NAS和对象存储OSS区别对比如何选择?

    阿里云对象存储OSS和文件存储NAS有什么区别?文件存储NAS和对象存储OSS如何选择?NAS是传统的NFS挂载共享文件夹,OSS可以使用RESTful API,阿里云百科从技术.使用方式.容量.存储 ...

  3. 对象存储3:对象存储的原理、构造和详解

    前两篇介绍了对象存储的基础,包括存储类型,常用存储分类和分类方法. SCSI,TCP/IP,FC等存储介质以及DAS\NAS\SAN等存储网络,请参考:对象存储1:传统存储类型和分类. 文件存储,块存 ...

  4. 千里眼摄像头支持对象存储吗_对象存储适用于哪些场景?

    什么是对象存储? 对象存储是一种将数据作为对象进行管理的计算机数据存储体系结构,与其他存储体系结构(例如将数据作为文件层级管理的文件系统)以及将数据作为块和扇区内的块进行管理的块存储相对.每个对象通常 ...

  5. java s3 与ceph的关系_Ceph存储与S3对象存储性能优化.pdf

    Ceph存储与S3对象存储性能优化.pdf Ceph on Storage appliance Case Study and Performance for AWS S3 based object s ...

  6. 天翼云对象存储android实现,对象存储基础介绍(华为云、腾讯云、天翼云都提供对象存储服务)...

    什么是对象存储 面向对象存储(Object-Oriented Storage,OOS)是云服务提供商为客户提供的一种海量.弹性.高可用.高性价比的存储服务.您只需花极少的钱就可以获得一个几乎无限的存储 ...

  7. 腾讯云对象存储 COS 荣获对象存储领导力奖!!!

    本文转自"亚太CDN产业联盟"公众号 亚太内容分发大会暨 CDN 峰会一直致力于推动 CDN 产业深度融合发展和市场普及,现已成为亚太地区影响力最大的内容分发网络盛会.十年来,在以 ...

  8. 【存储】块存储、文件存储和对象存储的区别?

    目录 简单说明 详细解释 存储分类 01 块存储(提供虚拟磁盘) 02 文件存储 03 对象存储 04 三种存储的区别和对比 分布式块存储.文件存储.对象存储的区别 理解Ceph的三种存储接口:块设备 ...

  9. 对象存储与块存储、文件存储等对比

    看到 一篇文档, 讲 对象存储, 好奇,搜索文章,摘抄,学习记录 ! 背景: 传统存储在面对海量非结构化数据时,在存储.分享与容灾上面临很大的挑战,主要表现在以下几个方面:传统存储并非为非结构化内容设 ...

  10. 块存储,文件存储和对象存储

         首先,我们介绍这两种传统的存储类型.通常来讲,所有磁盘阵列都是基于Block块的模式(DAS),而所有的NAS产品都是文件级存储 1.块存储         以下列出的两种存储方式都是块存储 ...

最新文章

  1. 2022-2028年中国汽轮发电机行业市场深度分析及发展趋势分析报告
  2. 常见却又不太了解的一些Windows文件类型
  3. mysql重启电脑提示145_MYSQL错误:Can’t open file: ‘#215;#215;#215;.MYI’ (errno: 145)修复方法...
  4. 18、Page Object 设计模式
  5. vue3.0、cli4项目引入element plus
  6. 前端学习(1904)vue之电商管理系统电商系统之修改用户的操作
  7. DevOps平台中的自动化部署框架设计
  8. java输出的文本内容不对_java 字符串写入文件后再读出不一样? 有什么解决办法吗?...
  9. JS判断对象是不是数组“Array”
  10. java字符串处理截取和替换字符
  11. servlet输出中文乱码
  12. 西班牙夺得欧洲杯给IT业的十条启示
  13. 腾讯QQ空间登录的方法实现方式与验证过程分析
  14. 个税计算器-springboot版实现
  15. 阳光温暖了心情的博客
  16. 关于图片轮播图的一个简单实例 以及实例中发现问题
  17. 【黄啊码】为什么我建议您选择go,而不选择php?
  18. 泉州地区的“会子”是一种怎样的制度?
  19. 关于企业服务总线ESB
  20. C语言挑选小白鼠健康指数,2014级下学期中国石油大学华东c语言上机题.docx

热门文章

  1. 服务器抓不到mrcp协议,mrcp与一句话识别
  2. 如何写好一个2Take1 Lua - 搭建Lua环境
  3. python3 云词(wordcloud)安装失败解决方案
  4. 通过函数seaborn.cubehelix_palette生成顺序调色板
  5. 互联网创业赚钱规则,彻底释放自己的价值吧!丨国仁网络
  6. Windows自定义域名跳转指定网址
  7. 【有奖征询】可查询商票及企业境外债软件有奖征询
  8. 腾讯云服务器漏洞怎么修复,腾讯云安全中心监测到微软披露的99个漏洞,win系统云服务器用户尽快修复...
  9. 算24点的一般方法及例题
  10. 【TensorFlow】使用slim从ckpt里导出指定层的参数