前两篇介绍了对象存储的基础,包括存储类型,常用存储分类和分类方法。

SCSI,TCP/IP,FC等存储介质以及DAS\NAS\SAN等存储网络,请参考:对象存储1:传统存储类型和分类。

文件存储,块存储以及对象存储等数据存储格式,请参考: 对象存储2:云平台数据存储类型。

1.对象存储基础

对象存储的命名,是由其存储数据的格式来的,它的数据是以对象object的形式存储。

文件存储的数据存储单位为文件;块存储的数据存储单位为数据块;块存储的存储单位为对象。

1.1 数据格式

一个文件包含了两部分内容,属性和内容(即数据);属性又称元数据metadata,是指数据的属性内容,比如文件大小、创建时间、修改时间、存储路径等。

像FAT32文件系统,是直接将一份文件的数据与metadata一起存储的。存储过程先将文件按照文件系统的最小块大小来打散(如4M的文件,假如文件系统要求一个块4K,那么就将文件打散成为1000个小块),再写进硬盘里面,过程中没有区分数据/metadata的。每个块最后会告知你下一个要读取的块的地址,然后一直这样顺序地按图索骥,最后完成整份文件的所有块的读取。所以无论系统性能多么强,都只能按顺序一个块一个块的读取,只有读完前一个块,才能开始读取下一个块。读写效率就成了最大的瓶颈。

块存储与对象存储

传统数据访问层次、虚拟数据访问模型

1.2 对象存储原理

对象存储将元数据独立了出来,元数据里写明了数据的所有属性,包括打散后的每个块所存储的位置。对象存储将元数据和数据进行了分开存储,这样只要读取到了元数据,就能找到所有的数据块,并可以同时对数据块进行读取,大大提高了数据处理的效率。

对象存储中用来存储元数据的节点是控制节点,称为元数据服务器(服务器+对象存储管理软件),里面主要负责存储对象的属性(主要是对象的数据被打散存放到了那几台分布式服务器中的信息);负责存储数据的分布式服务器叫做OSD,主要负责存储文件的数据部分。当用户访问对象,会先访问元数据服务器,元数据服务器只负责反馈对象存储在哪些OSD,假设反馈文件A存储在B、C、D三台OSD,那么用户就会再次直接访问3台OSD服务器去读取数据。这时候由于是3台OSD同时对外传输数据,所以传输的速度就加快了。当OSD服务器数量越多,这种读写速度的提升就越大,通过此种方式,实现了读写快的目的。

另一方面,对象存储软件是有专门的文件系统的,所以OSD对外又相当于文件服务器,那么就不存在文件共享方面的困难了,也解决了文件共享方面的问题。

1.3 对象

对象是系统中数据存储的基本单位,一个对象实际上就是文件的数据和一组属性信息(Meta Data)的组合,这些属性信息可以定义基于文件的RAID参数、数据分布和服务质量等,而传统的存储系统中用文件或块作为基本的存储单位,在块存储系统中还需要始终追踪系统中每个块的属性,对象通过与存储系统通信维护自己的属性。在存储设备中,所有对象都有一个对象标识,通过对象标识OSD命令访问该对象。通常有多种类型的对象,存储设备上的根对象标识存储设备和该设备的各种属性,组对象是存储设备上共享资源管理策略的对象集合等。

对象的构成

2.对象存储的结构

根据对象存储原理所讲的,核心是将数据通路(数据读或写)和控制通路(元数据)分离,并且基于对象存储设备(Object-based Storage Device,OSD)构建存储系统。每个对象存储设备具有一定的智能,能够自动管理其上的数据分布。对象存储的结构包括元数据服务器(控制节点MDS)和数据存储服务器(OSD),两者进行数据的存储,还需要客服端client进行存储的服务访问和使用。架构如下图:

对象存储架构图

2.1 对象存储设备OSD

对象存储设备是对象存储的核心设备,具有一定的智能,它有自己的CPU、内存、网络和磁盘系统,OSD同块设备的不同不在于存储介质,而在于两者提供的访问接口。OSD的主要功能包括数据存储和安全访问。目前国际上通常采用刀片式结构实现对象存储设备。OSD提供三个主要功能:
(1) 数据存储。OSD管理对象数据,并将它们放置在标准的磁盘系统上,OSD不提供块接口访问方式,Client请求数据时用对象ID、偏移进行数据读写。
(2) 智能分布。OSD用其自身的CPU和内存优化数据分布,并支持数据的预取。由于OSD可以智能地支持对象的预取,从而可以优化磁盘的性能。
(3) 每个对象元数据的管理。OSD管理存储在其上对象的元数据,该元数据与传统的inode元数据相似,通常包括对象的数据块和对象的长度。而在传统的NAS系统中,这些元数据是由文件服务器维护的,对象存储架构将系统中主要的元数据管理工作由OSD来完成,降低了Client的开销。

2.2 元数据服务器(Metadata Server,MDS)

MDS控制Client与OSD对象的交互,主要提供以下几个功能:
(1) 对象存储访问。
MDS构造、管理描述每个文件分布的视图,允许Client直接访问对象。MDS为Client提供访问该文件所含对象的能力,OSD在接收到每个请求时将先验证该能力,然后才可以访问。
(2) 文件和目录访问管理。
MDS在存储系统上构建一个文件结构,包括限额控制、目录和文件的创建和删除、访问控制等。
(3) Client Cache一致性。
为了提高Client性能,在对象存储系统设计时通常支持Client方的Cache。由于引入Client方的Cache,带来了Cache一致性问题,MDS支持基于Client的文件Cache,当Cache的文件发生改变时,将通知Client刷新Cache,从而防止Cache不一致引发的问题。

2.3 对象存储系统的客户端Client

为了有效支持Client支持访问OSD上的对象,需要在计算节点实现对象存储系统的Client,通常提供POSIX文件系统接口,允许应用程序像执行标准的文件系统操作一样。

3. 对象存储文件系统的关键技术:

3.1 分布元数据

传统的存储结构元数据服务器通常提供两个主要功能。

(1)为计算结点提供一个存储数据的逻辑视图(Virtual File System,VFS层),文件名列表及目录结构。

(2)组织物理存储介质的数据分布(inode层)。对象存储结构将存储数据的逻辑视图与物理视图分开,并将负载分布,避免元数据服务器引起的瓶颈(如NAS系统)。元数据的VFS部分通常是元数据服务器的10%的负载,剩下的90%工作(inode部分)是在存储介质块的数据物理分布上完成的。在对象存储结构,inode工作分布到每个智能化的OSD,每个OSD负责管理数据分布和检索,这样90%的元数据管理工作分布到智能的存储设备,从而提高了系统元数据管理的性能。另外,分布的元数据管理,在增加更多的OSD到系统中时,可以同时增加元数据的性能和系统存储容量。

3.2 并发数据访问

对象存储体系结构定义了一个新的、更加智能化的磁盘接口OSD。OSD是与网络连接的设备,它自身包含存储介质,如磁盘或磁带,并具有足够的智能可以管理本地存储的数据。计算结点直接与OSD通信,访问它存储的数据,由于OSD具有智能,因此不需要文件服务器的介入。如果将文件系统的数据分布在多个OSD上,则聚合I/O速率和数据吞吐率将线性增长,对绝大多数Linux集群应用来说,持续的I/O聚合带宽和吞吐率对较多数目的计算结点是非常重要的。对象存储结构提供的性能是目前其它存储结构难以达到的,如ActiveScale对象存储文件系统的带宽可以达到10GB/s。

3.对象存储常用场景

对象存储3:对象存储的原理、构造和详解相关推荐

  1. MySQL存储引擎InnoDB、MyISAM和MEMORY介绍详解和区别

    文章目录 MySQL存储引擎InnoDB.MyISAM和MEMORY介绍详解和区别 InnoDB存储引擎 特点 操作示例 创建InnoDB表 修改表引擎为InnoDB MyISAM存储引擎 特点 操作 ...

  2. Spark SQL原理及常用方法详解(二)

    Spark SQL 一.Spark SQL基础知识 1.Spark SQL简介 (1)简单介绍 (2)Datasets & DataFrames (3)Spark SQL架构 (4)Spark ...

  3. Cookie的工作原理和应用详解

    Cookie的工作原理和应用详解 1. Cookie 原理 1.1 Cookie 背景信息 1.2 Cookie 工作原理 1.3 Cookie 创建.获取.修改 1.4 Cookie 共享范围 1. ...

  4. 字符串处理【AC自动机】 - 原理 AC自动机详解

    字符串处理[AC自动机] - 原理 AC自动机详解 AC自动机(Aho-Corasick automaton)在1975年产生于贝尔实验室,是著名的多模匹配算法. 学习AC自动机,要有KMP和Trie ...

  5. 【数据结构与算法】哈希算法的原理和应用详解!

    在程序员的实际开发中,哈希算法常常能用得到,本文以哈希算法的原理和应用为核心,和大家详细讲解一下哈希算法的概念.常见算法以及原理.在信息安全的应用等等. 一.概念 哈希表就是一种以 键-值(key-i ...

  6. python的编程模式-Python设计模式之状态模式原理与用法详解

    本文实例讲述了Python设计模式之状态模式原理与用法.分享给大家供大家参考,具体如下: 状态模式(State Pattern):当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类 ...

  7. Nginx(二):反向代理原理 与 配置文件详解

    相关阅读: Nginx(一):Nginx原理概述 与 安装步骤详解 Nginx(二):反向代理原理 与 配置文件详解 Nginx(三):负载均衡策略 与 Nginx静态服务器 Nginx(四):Ngi ...

  8. java linkedlist实例_Java Linkedlist原理及实例详解

    这篇文章主要介绍了Java Linkedlist原理及实例详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 定义:linkedlist属于链表结构 ...

  9. java设计模式观察者模式吗_Java设计模式之观察者模式原理与用法详解

    Java设计模式之观察者模式原理与用法详解 本文实例讲述了Java设计模式之观察者模式原理与用法.分享给大家供大家参考,具体如下: 什么是观察者模式 可以这么理解: 观察者模式定义了一种一对多的依赖关 ...

  10. Pytorch|YOWO原理及代码详解(二)

    Pytorch|YOWO原理及代码详解(二) 本博客上接,Pytorch|YOWO原理及代码详解(一),阅前可看. 1.正式训练 if opt.evaluate:logging('evaluating ...

最新文章

  1. 2013 Multi-University Training Contest 5 部分解题报告
  2. HDU - 3974 Assign the task (DFS建树+区间覆盖+单点查询)
  3. bzoj 3687: 简单题
  4. highcharts常用配置说明
  5. [HOW TO]-ubuntu20.10搭建openjrok服务指南
  6. 【Linux开发】linux设备驱动归纳总结(九):1.platform总线的设备和驱动
  7. 微信朋友圈删除后服务器还有吗,删了的朋友圈还可以找回来吗
  8. 为什么编程语言要从c语言学起,在那么多编程语言中,为什么推荐初学者学 C 语言?...
  9. jquery submit ie6下失效的原因分析及解决方法
  10. seaborn箱线图_Seaborn线图的数据可视化
  11. [转]Windows server 2008网络负载均衡集群
  12. 数据库并发中的串行化
  13. 参考文献标号字体_论文参考文献字体大小
  14. Windows Hello 摄像头人脸识别解锁 DELL拆机摄像头方案
  15. 学计算机网络布线图片,从业必看!直观的弱电各子系统图!
  16. 【Codecs系列】X265编码器(六):lookahead模块分析
  17. 防火墙文件打印共享服务器,防火墙 网络打印机共享服务器
  18. 作为一个男人,必须在30岁前做到这16件事
  19. Win10的两个实用技巧系列之设置鼠标指针、红警玩不了怎么办?
  20. java弦截法,国家计算机软考高级程序员历年真题1996

热门文章

  1. 零基础学习单片机切记这四点要求,少走弯路
  2. http-server
  3. JS——mouseover和mouseenter的区别
  4. Java命令--javap
  5. JAVA消息(第一篇)JMS 很重要!!!!包教包会!!不闹!!!下一篇-AMQP(wire-level protocol)
  6. 联想 ideapad Y430 安装XP
  7. nsis打包时候如何让附带的第三方软件静默安装
  8. java 数字补零_java数字位数不足在前后补0
  9. Shader学习之Cg语言三(Cg表达式与控制语句)
  10. Python保存TXT文件