上一篇介绍了传统存储的几个常用类型,本篇主要介绍云平台用到的常用存储类型,分别是文件存储、块存储和对象存储。

这种分类是以数据存储的方式来命名的,体现了不同的数据存储格式。文件存储会以文件和文件夹的层次结构来整理和呈现数据;块存储会将数据拆分到任意划分且大小相同的卷中; 对象存储会管理数据并将其链接至关联的元数据。

1. 数据存储基础

块级概念:块级是以扇区为基础,一个或者多个连续的扇区组成一个块,也叫物理块。它是在文件系统与块设备(如:磁盘驱动器)之间。块级的备份是物理块的复制,效率高,实时性强

文件级概念:文件级是指文件系统,单个文件可能由于一个或多个逻辑块组成,且逻辑块之间是不连续分布。逻辑块大于或等于物理块的整数倍。文件系统备份,由于逻辑块之间不连续,需要先插周每个文件的逻辑块,其次物理块,而逻辑块也分布在不同的物理块,物理块又分布在不同扇区,因此效率较低,耗时久。

物理块与文件系统之间的关系:扇区 <= 物理块 <= 逻辑块 <= 文件系统。 (<=表示小于等于)

所有NAS产品都是文件存储,所有磁盘列阵存储都是块存储,SAN也属于块存储。SAN和NAS的主要区别是NAS有自己的文件管理系统,而SAN的文件管理系统与存储器是分离的。

块存储、文件存储、对象存储,在根本上来说都是块存储,因为数据都是存储在扇区上,只是存储格式不同。

2. 文件存储

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

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

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

文件存储常用到的设备有:FTP, NFS服务器, Samba

3. 块存储

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

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

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

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

块存储常用的设备有:硬盘、虚拟硬盘、磁盘列阵

块存储包括DAS和SAN。

4. 对象存储

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

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

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

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

对象存储常用设备有:内置大容量硬盘的分布式存储

对象存储的原理和系统构架,将在下一篇介绍

5.总结

无论是哪种类型的存储,存储系统对外提供服务系统结构是一致的,一个正常的存储系统,一般包括两个部分:

1. 物理层,即存储层,实际执行存储任务的物理资源。RAID,磁盘,虚拟磁盘,扇区等都是这一层的概念。因此块存储提供存储服务的主要就是这一层,使用块存储的存储层,但文件系统是使用自己的。比如电脑的硬盘,使用时需要对其进行格式化后就可以用于存储存储在硬盘里,而文件系统使用的则是电脑自带的文件系统(Windows文件系统或Linux文件系统)。

2. 文件系统层,即文件系统,这一层对外提供服务的是文件系统,看不到文件系统背后的物理层,并且支持共享。比如FTP服务器,无论我们使用的是windows还是Linux或者其他操作系统,都可以直接访问FTP服务器,并创建文件夹(层级)和文件存储,而看不到FTP服务器背后的物理层。

按上面的分类来讲:

块存储提供的是存储层的服务,就像电脑硬盘,使用前要对其进行格式化,并在其物理层进行文件存储。块存储主要操作对象是磁盘,以 SCSI 为例,主要接口有 Read/Write/Read Capacity/Inquiry 等等

文件存储提供的是文件级服务,比如FTP服务,可以直接使用FTP上的文件系统,并且支持共享。文件存储的主要操作对象是文件夹或者文件,以 NFS 为例,文件相关的接口包括:LOOKUP/ACCESS/READ/WRITE/CREATE/REMOVE/RENAME 等等,文件夹相关的接口包括:MKDIR/RMDIR/READDIR 等等。

对象存储提供的也是文件系统级的服务,只是对象存储则取消了目录树,使用扁平的结构进行数据存储,在提供共享的同时,提高了存储效率。对象存储主要操作对象是对象(Object),以 S3 为例,主要接口有 PUT/GET/DELETE 等。和文件和对象存储相比,没有随机读写的接口。和文件存储相比,没有目录树的概念,协议更注重简洁。

对象存储2:数据存储类型-文件存储、块存储、对象存储详解相关推荐

  1. 《金税盘--发票开具、发票领购、发票安全存储、发票管理、身份认证和抄报税功能详解》

    <金税盘–发票开具.发票领购.发票安全存储.发票管理.身份认证和抄报税功能详解> 安装启动 出施设置 编码管理 发票读入 开具发票 抄报税 本视频将会对六大类分别进行介绍,本视频来源于网络 ...

  2. 【JVM】对象存活判定算法、GC算法、STW、GC种类详解

    [JVM]对象存活判定算法.GC算法.STW.GC种类详解 文章目录 [JVM]对象存活判定算法.GC算法.STW.GC种类详解 GC主要关注的区域 垃圾标记阶段:对象存活判断 标记阶段:引用计数算法 ...

  3. AndroidManifest.xml文件配置教程及相关指令详解

    AndroidManifest.xml 是每个android程序中必须的文件,它位于整个项目的根目录.我们每天都在使用这个文件,往里面配置程序运行所必要的组件,权限,以及一些相关信息.但是对于这个文件 ...

  4. [Python从零到壹] 十五.文本挖掘之数据预处理、Jieba工具和文本聚类万字详解

    欢迎大家来到"Python从零到壹",在这里我将分享约200篇Python系列文章,带大家一起去学习和玩耍,看看Python这个有趣的世界.所有文章都将结合案例.代码和作者的经验讲 ...

  5. java文件流 m.jb51.net_FasfDFS整合Java实现文件上传下载功能实例详解

    今天使用Java代码实现文件的上传和下载.对此作者提供了Java API支持,下载fastdfs-client-java将源码添加到项目中.或者在Maven项目pom.xml文件中添加依赖 org.c ...

  6. JS - 文件上传组件WebUploader使用详解1(带进度的文件上传

    一.基本介绍 1,什么是 WebUploader? WebUploader 是由百度公司团队开发的一个以 HTML5 为主,FLASH 为辅的现代文件上传组件. 官网地址:http://fex.bai ...

  7. 把java文件打包成.jar (jar命令详解)

    把java文件打包成.jar (jar命令详解) 先打开命令提示符(win2000或在运行框里执行cmd命令,win98为DOS提示符),输入jar Chelp,然后回车(如果你盘上已经有了jdk1. ...

  8. java 输入流可以合并吗_Java 使用IO流实现大文件的分割与合并实例详解

    java 使用IO流实现大文件的分割与合并 文件分割应该算一个比较实用的功能,举例子说明吧比如说:你有一个3G的文件要从一台电脑Copy到另一台电脑, 但是你的存储设备(比如SD卡)只有1G ,这个时 ...

  9. java文件打包jar文件_把java文件打包成.jar (jar命令详解)

    把java文件打包成.jar (jar命令详解) 先打开命令提示符(win2000或在运行框里执行cmd命令,win98为DOS提示符),输入jar Chelp,然后回车(如果你盘上已经有了jdk1. ...

  10. python读取大文件csv_对python中大文件的导入与导出方法详解

    1.csv文件的导入和导出 通过一个矩阵导出为csv文件,将csv文件导入为矩阵 将csv文件导入到一个矩阵中 import numpy my_matrix = numpy.loadtxt(open( ...

最新文章

  1. seaborn使用jointplot函数为散点图添加边缘图、添加回归线、为边缘直方图添加密度曲线、自定义边缘直方图的箱体个数bins(Number of Bins to Marginal Plot )
  2. python文件输出-python 文件的输入输出
  3. 电子商务就是计算机技术在传统商务中的应用,数据计算机论文,关于计算机Web数据其在电子商务中的应用相关参考文献资料-免费论文范文...
  4. 继微博之后,抖音、今日头条、小红书宣布将显示账号IP属地
  5. docker 镜像开机自启动_Docker常用命令总结
  6. 下一站,人到三十而立之年有感!
  7. 致软件测试员——面试,你准备好了么?
  8. arduino i2c EEPROM(AT24C02、AT24C08、AT24C16、AT24C32、AT24C64)驱动
  9. 如何制作疫情民生地图
  10. win10激活时间(win10激活时间查询)
  11. 1.0 Android基础入门教程
  12. 夜神模拟器连接手柄无反应_夜神安卓模拟器怎样连接手柄 夜神模拟器连接手柄图文教程...
  13. C++实现截图截屏功能汇总
  14. Landsat卫星数据介绍及下载方法
  15. 平衡网站的色彩各种颜色的意义
  16. formula 返回list_Formula element (List)
  17. SpringBoot整合Swagger2
  18. 2008服务器系统怎么备份,服务器2008系统备份
  19. 杂谈:渐进增强与优雅降级
  20. 拟人肌肉骨骼气动人工肌肉驱动的10自由度机器人手臂

热门文章

  1. 1分钟链圈 | 区块链从业者平均年收入在20万元左右!纳斯达克报告:只有5%的IT供应商部署了区块链...
  2. C语言 求最大值和最小值
  3. HTML作业-商城网页
  4. [UnexpectedValueException] Your github oauth token for github.com contains invalid characters
  5. Oracle 字符函数
  6. Observability: 如何为 APM 定制 transactions 及 spans
  7. MySQL主外键设置
  8. html 上传头像前预览以及点击头像去选择和更换头像
  9. linux中524端口,liunx下攻击分析及如何通过交换机封端口
  10. linux下TC+HTB流量控制