深入理解对象存储(OSD)

news2024/11/15 13:53:56

对象存储

    • 1、对象存储的起源
    • 2、什么是对象存储
    • 3、对象存储与块存储、文件存储
    • 4、对象存储架构
      • 4.1、对象(Object)
      • 4.2、对象存储设备(OSD)
      • 4.3、元数据服务器(MDS)
      • 4.4、对象存储系统的客户端(Client)
    • 5、对象存储的特性
    • 6、对象存储的应用场景
    • 7、国内常见的对象存储产品


1、对象存储的起源


存储局域网(SAN)和网络附加存储(NAS)是目前两种主流网络存储架构,在DAS和SAN中,存储资源就像一块一块的硬盘,直接挂载在主机上,我们称之为块存储

而在NAS中,呈现出来的是一个基于文件系统的目录架构,有目录、子目录、孙目录、文件,我们称之为文件存储。文件存储的最大特点,就是所有存储资源都可以通过多级路径方式进行访问

20世纪末,随着互联网的爆发,数据存储需求发生了两个重大的变化:

一是数据量爆炸式增长:Web应用的崛起、社交需求的刺激,极大地推动了多媒体内容创作和分享。人们开始上传大量的照片、音乐、视频,加剧了数据量的爆发。此外,信息技术的发展、企业数字化的落地,也产生了大量的数据,不断吞食着存储资源

二是非结构化数据的占比显著增加:例如图像、音频、视频、Word文章等

面对这两大趋势,由于技术本身和架构的限制,仅具备PB级扩展能力的块存储(SAN)和文件存储(NAS)显得有些无能为力

于是,对象存储应运而生

1996年,美国卡内基梅隆大学提出将对象存储作为一个研究项目,随后,加州大学伯克利分校也有推出类似的项目

2006年,美国Amazon公司发布AWS S3(Simple Storage Service)服务,正式将对象存储作为一项云存储服务,引入云计算领域,从此开启了对象存储的黄金时代

2、什么是对象存储


存储局域网(SAN)和网络附加存储(NAS)是目前两种主流网络存储架构,而对象存储(Object-based Storage)是一种新的网络存储架构,基于对象存储技术的设备就是对象存储设备(Object-based Storage Device),简称OSD

对象存储,也称为“面向对象的存储”、“云存储”。它综合了网络附加存储(NAS)和存储局域网(SAN)的优点,同时具有SAN的高速直接访问和NAS的分布式数据共享等优势,提供了具有高性能、高可靠性、跨平台以及安全的数据共享的存储体系结构

对象存储允许将计算基础架构与存储需求分离。可以在对所有数据进行存储的同时无需监控存储,因此方便扩展并向云中的集群添加节点

对象存储核心是将数据通路(读写)和控制通路(元数据)分离,并且基于对象存储设备构建存储系统,每个对象存储设备具有自己的职能,能够自动管理其上的数据分布

对象存储是一种基于对象的存储设备,具备智能、自我管理能力,通过Web服务(如REST、SOA、微服务)实现对象的读写和存储资源的访问

对象存储系统包含两种数据描述:容器(Bucket)、对象(Object)。容器和对象都有一个全局唯一的ID。对象存储采用扁平化结构管理所有数据,用户/应用通过接入码(AccessKey)认证后,只需要根据ID就可以访问容器/对象及相关的数据(Data)、元数据(metadata)和对象属性(Attribute)

对象存储本质上就是一个Key-Value结构,Key是文件的URL路径,Value是对应的文件,没有传统文件系统那种目录树的结构,不能直接打开修改文件,只能先下载、修改,再上传,所以不支持append和truncate操作,操作接口比较简单,主要接口命令有PUT/GET/DELETE等

云厂商将对象存储称为云存储,不同云厂商对它有不同的命名。例如阿里云叫OSS,腾讯云叫COS,华为云叫OBS,百度云叫BOS等

3、对象存储与块存储、文件存储


在这里插入图片描述

  • 相同点

    对象存储的底层硬件介质,依然是硬盘,和块存储、文件存储没有区别

  • 不同点

    块存储:操作对象是磁盘。存储协议是SCSI、ISCSI、FC,以SCSI为例,主要接口命令有Read、Write、Read Capacity、Inquiry等

    文件存储:操作对象是文件和文件夹。存储协议是NFS、SAMBA(SMB)、POSIX等。以NFS为例,文件相关的接口命令包括:Read、Write、Create、Remove、Rename、Lookup、Access等;文件夹相关的接口命令包括:Mkdir、Rmdir、Readdir等

    对象存储:主要操作的是对象(Object)。存储协议是S3、Swift等,以S3为例,主要接口命令有PUT、GET、DELETE等。对象存储没有那种目录树的概念,在对象存储系统里,你不能直接打开/修改文件,只能先下载、修改,再上传文件

更多关于NAS与SAN的介绍见文章:传送门

4、对象存储架构


对象存储架构主要由对象存储设备(OSD)、元数据服务器(MDS)、对象存储系统的客户端(Client)三部分组成

在这里插入图片描述

对象存储设备(OSD)呈现出来的是一个个桶(Bucket),你可以往桶里面放对象(Object)

4.1、对象(Object)


对象(Object)是系统中数据存储的基本单位,一个对象实际上就是文件的数据和一组属性信息(MetaData)的组合

在传统的存储系统中用文件或块作为基本的存储单位,块设备要记录每个存储数据块在设备上的位置,而对象维护自己的属性,从而简化了存储系统的管理任务,增加了灵活性

对象的大小可以不同,可以包含各种数据结构,如文件、数据库表等。在存储设备中,所有对象都有一个唯一标识,OSD通过对象标识访问该对象

对象由三个部分组成:Key、Value、Metadata

在这里插入图片描述

  • Key

    Key即为对象的全局唯一标识,可以理解为文件名(路径),主要用于检索对象,服务器和用户不需要知道数据的物理地址,也能通过它找到对象。这种方法极大地简化了数据存储。Key类似一个URL地址,如果该对象被设置为“公开”,所有互联网用户都可以通过这个地址访问它

  • Value

    Value即为数据本身

  • Metadata

    Metadata为元数据,它类似对象(数据)的标签(属性),可以是对象的各种描述信息。例如一张人物图片,它的元数据可以是姓名、性别、年龄、拍摄地点、拍摄时间等。在传统的文件存储里,这类信息属于文件本身,和文件一起存储。而对象存储中,元数据是独立出来的,不在数据内部封装

4.2、对象存储设备(OSD)


每个OSD都是一个智能设备,具有自己的存储介质、处理器、内存以及网络系统等,负责管理本地的Object,是对象存储系统的核心

OSD同块设备的不同不在于存储介质,而在于两者提供的访问接口。OSD的主要功能包括数据存储和安全访问

OSD提供三个主要功能:

  • 数据存储

    OSD管理对象数据,并将它们放置在标准的磁盘系统上,OSD不提供块接口访问方式,Client请求数据时用对象ID、偏移进行数据读写

  • 智能分布

    OSD用其自身的CPU和内存优化数据分布,并支持数据的预取。由于OSD可以智能地支持对象的预取,从而可以优化磁盘的性能

  • 管理每个对象元数据

    OSD管理存储在其上对象的元数据,该元数据与传统的INode元数据相似,通常包括对象的数据块和对象的长度。而在传统的NAS系统中,这些元数据是由文件服务器维护的,对象存储架构将系统中主要的元数据管理工作由OSD来完成,降低了Client的开销

4.3、元数据服务器(MDS)


MDS控制Client与OSD对象的交互,为客户端提供元数据,主要是文件的逻辑视图,包括文件与目录的组织关系、每个文件所对应的OSD等。主要提供以下几个功能:

  • 对象存储访问

    MDS构造、管理描述每个文件分布的视图,允许Client直接访问对象。MDS为Client提供访问该文件所含对象的能力,OSD在接收到每个请求时将先验证该能力,然后才可以访问

  • 文件和目录访问管理

    MDS在存储系统上构建一个文件结构,包括限额控制、目录和文件的创建和删除、访问控制等

  • Client Cache一致性

    为了提高Client性能,在对象存储系统设计时通常支持Client方的Cache。由于引入Client方的Cache,带来了Cache一致性问题,MDS支持基于Client的文件Cache,当Cache的文件发生改变时,将通知Client刷新Cache,从而防止Cache不一致引发的问题

4.4、对象存储系统的客户端(Client)


为了有效支持Client支持访问OSD上的对象,需要在计算节点实现对象存储系统的Client。现有的应用对数据的访问大部分都是通过POSIX文件方式进行的,对象存储系统提供给用户的也是标准的POSIX文件访问接口。接口具有和通用文件系统相同的访问方式,同时为了提高性能,也具有对数据的Cache功能和文件的条带功能。同时,文件系统必须维护不同客户端上Cache的一致性,保证文件系统的数据一致

文件系统读访问流程:

  • 客户端应用发出读请求
  • 文件系统向元数据服务器发送请求,获取要读取的数据所在的OSD
  • 然后直接向每个OSD发送数据读取请求
  • OSD得到请求以后,判断要读取的Object,并根据此Object要求的认证方式,对客户端- 进行认证,如果此客户端得到授权,则将Object的数据返回给客户端
  • 文件系统收到OSD返回的数据以后,读操作完成

5、对象存储的特性


  • 容量无限大、灵活可扩展

    对象存储的所有业务、存储节点采用分布式集群方式工作,各功能节点集群都可以独立扩容,且扩容过程中业务零中断。从理论上来说,某个对象存储系统或单个桶(Bucket),并没有总数据容量和对象数量的限制

    对象存储对外提供更抽象的对象接口,而不是SCSI或文件接口。与SAN存储以逻辑扇区为单位的较细粒度的固定IO(512B~4KB)不同,对象存储IO粒度更有弹性,支持几个字节(B)到数万亿字节(TB)范围内的任意对象大小,使得业务可根据需要灵活的分割数据

    对象存储以对象ID为基础,扁平化的管理所有对象和桶,根据对象ID便可直接访问数据,解决了NAS复杂的目录树结构在海量数据情况下的数据查找耗时长的问题,这使得对象存储具备极强的扩展性,能够轻松实现单一命名空间内支持百亿级文件的存储

  • 数据使用方便,安全可靠

    用户只需一个凭证(Key),便可以访问(HTTP)指定桶(Bucket)中的所有数据(对象)。大部分云厂商都有自己的图形化界面客户端工具,用户存取数据就像使用网盘一样

    对象存储采用了分布式架构,对数据进行多设备冗余存储(至少三个以上节点),数据分片存储在不同硬盘上,实现了异地容灾和资源隔离

    数据访问方面,所有的桶和对象都有ACL等访问控制策略,所有的连接都支持SSL加密,OBS系统会对访问用户进行身份鉴权

  • 基于策略的自动化管理,用户成本低

    由于云环境中的数据往往是动态、快速增长的,所以基于策略的自动化将变得非常重要。对象存储支持从应用角度基于业务需求设置对象/容器的属性(元数据)策略,如数据保护级别,保留期限,合规状况,远程复制的份数等。这使得对象存储具备云的自服务特征同时,有效的降低运维管理的成本,使得客户在存储容量从TB增长到ZB时,运维管理成本不会随之飙升

  • 基于SaaS模式的多租户技术

    多租户技术是实现如何在多用户环境下共用相同的系统或程序组件,并且可确保各用户间数据的隔离性。多租户特性可以使用同一种架构,同一套系统为不同用户和应用提供存储服务,并分别为这些用户和应用设置数据保护、数据存储策略,并确保这些数据之间相互隔离

6、对象存储的应用场景


  • 图片和音视频等应用的海量存储

    对象存储可用于图片、音视频、日志等海量文件的存储。各种终端设备、Web网站程序、移动应用可以直接向对象存储写入或读取数据

  • 网页或移动应用的静态和动态资源分离

    利用海量互联网带宽,对象存储可以实现海量数据的互联网并发下载

  • 云端数据处理

    上传文件到对象存储后,可以配合媒体处理服务和图片处理服务进行云端的数据处理

  • 数据迁移

    数据快速、安全地迁移至对象存储,帮助客户降低存储成本,提高运维效率

  • 容灾备份

    对象存储不仅支持同城容灾,还支持跨区域异地容灾,防止用户数据丢失,业务长时间中断

7、国内常见的对象存储产品


  • 阿里云

    阿里云对象存储(Object Storage Service,OSS)是一款海量、安全、低成本、高可靠的云存储服务,可提供99.9999999999%(12个9)的数据持久性,99.995%的数据可用性。多种存储类型供选择,全面优化存储成本

    官网:https://help.aliyun.com/zh/oss/

  • 腾讯云

    腾讯云对象存储(Cloud Object Storage,COS)是腾讯云提供的一种存储海量文件的分布式存储服务,具有高扩展性、低成本、可靠安全等优点。通过控制台、API、SDK和工具等多样化方式,用户可简单、快速地接入COS,进行多格式文件的上传、下载和管理,实现海量数据存储和管理

    官网:https://cloud.tencent.com/document/product/436

  • 华为云

    华为云对象存储服务(Object Storage Service,OBS)提供海量、安全、高可靠、低成本的数据存储能力,可供用户存储任意类型和大小的数据。适合企业备份/归档、视频点播、视频监控等多种数据存储场景

    官网:https://support.huaweicloud.com/obs/index.html


参考文章:
https://blog.csdn.net/zhanggqianglovec/article/details/104009464
https://zhuanlan.zhihu.com/p/555259241
https://zhuanlan.zhihu.com/p/166289089
https://blog.csdn.net/nihaoa50/article/details/88327178


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1201484.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

链表的逆置

方法1: 依次将指针反向,最后令头指针指向尾元素。 逆置过程如下: 当q指针为空时,循环结束。 //试写一算法,对单链表实现就地逆置, void Reverse1(List plist)//太复杂,不用掌握 {assert(plist ! NULL);i…

【计算机网络笔记】IP编址与有类IP地址

系列文章目录 什么是计算机网络? 什么是网络协议? 计算机网络的结构 数据交换之电路交换 数据交换之报文交换和分组交换 分组交换 vs 电路交换 计算机网络性能(1)——速率、带宽、延迟 计算机网络性能(2)…

实验一 Anaconda安装和使用(上机Python程序设计实验指导书)

实验一 Anaconda安装和使用 一、实验目的和要求 (一)掌握Windows下Anaconda的安装和配置。 (二)掌握Windows下Anaconda的简单使用,包括IDLE、Jupyter Notebook、Spyder工具的使用。 (三)掌…

05-Spring中Bean的生命周期

Bean的生命周期 生命周期就是对象从创建开始到最终销毁的整个过程 , Spring其实就是一个管理Bean对象的工厂,它负责对象的创建和销毁等 Bean生命周期的管理可以参考Spring的源码:AbstractAutowireCapableBeanFactory类的doCreateBean()方法 研究生命周期的意义&am…

2023最新版本 从零基础入门C++与QT(学习笔记) -1- C++输入与输出

🎏说在前面 🎈我预计是使用两个月的时间玩转C与QT 🎈所以这是一篇学习笔记 🎈根据学习的效率可能提前完成学习,加油!!! 输入(代码如下方代码块) 🎄分析一下构成 🎈…

【可解释AI】Alibi explain: 解释机器学习模型的算法

Alibi explain: 解释机器学习模型的算法 可解释人工智能简介Alibi特点算法Library设计展望参考资料 今天介绍Alibi Explain,一个开源Python库,用于解释机器学习模型的预测(https://github.com/SeldonIO/alibi)。该库具有最先进的分类和回归模型可解释性算…

springboot项目基本配置

接口入口日志 参数校验 业务逻辑执行 异常捕获-统一异常处理 统一数据返回体 接口返回日志 使用的是springboot2.x版本。 Mybatisplus 官网地址&#xff1a;https://baomidou.com/ 导入依赖 <dependency><groupId>com.baomidou</groupId><artifactId&g…

【Opencv】cv::dnn::NMSBoxes()函数详解

本文通过原理和示例对cv::dnn::NMSBoxes&#xff08;&#xff09;进行解读&#xff0c;帮助大家理解和使用。 原理 cv::dnn::NMSBoxes是OpenCV库中的一个函数&#xff0c;用于在目标检测中处理多个预测框。在目标检测中&#xff0c;模型可能会为同一个物体生成多个预测框&…

Web开发:一键复制到剪切板功能实现思路

在很多网页页面中我们都使用到过一键复制内容到剪切板的小功能&#xff0c;那么&#xff0c;具体如何实现呢&#xff1f;下面来讲述基于原生JavaScript API的两种实现思路。 同步方式&#xff1a;document.execCommand 这种方式&#xff1a; ①优点&#xff1a;是最传统的方法…

Resources接口和实现类

Spring Resources概述 Java的标准iava.net.URL类和各种URL前缀的标准处理程序无法满足所有对low-evel资源的访问&#xff0c;比如: 没有标准化的URL实现可用于访问需要从类路径或相对于 ServletContext 获取的资源。并且缺少某些Spring所需要的功能&#xff0c;例如检测某资源…

Ps:RGB 颜色模式

Ps菜单&#xff1a;图像/模式/RGB 颜色 Image/Mode/RGB Color RGB 颜色模式 RGB Color Mode是数字图像捕捉、处理以及显示的最常用模式&#xff0c;也是 Photoshop 默认的工作模式。 RGB 是 Red&#xff08;红色&#xff09;、Green&#xff08;绿色&#xff09;、Blue&#xf…

node实战——koa实现文件下载和图片/pdf/视频预览(node后端储备知识)

文章目录 ⭐前言⭐koa-send库实现下载⭐mime-types库实现图片预览&#x1f496; 渲染图片&#x1f496;渲染404&#x1f496;预览pdf&#x1f496;预览视频 ⭐总结⭐结束 ⭐前言 大家好&#xff0c;我是yma16&#xff0c;本文分享关于node实战——koa实现文件下载和图片预览。…

数据结构----链式栈的操作

链式栈的定义其实和链表的定义是一样的&#xff0c;只不过在进行链式栈的操作时要遵循栈的规则----即“先进后出”。 1.链式栈的定义 typedef struct StackNode {SElemType data;struct StackNode *next; }StackNode,*LinkStack; 2.链式栈的初始化 Status InitStack(LinkSta…

06-解决Spirng中的循环依赖问题

Bean的循环依赖问题 循环依赖: A对象中有B属性 , B对象中有A属性(丈夫类Husband中有Wife的引用, 妻子类Wife中有Husband的引用) toString()方法重写时直接输出wife/husband会出现递归导致的栈内存溢出错误 直接输出wife/husband会调用它们的toString()方法, 在toString()方法…

Halcon WPF 开发学习笔记(3):WPF+Halcon初步开发

文章目录 前言在MainWindow.xaml里面导入Halcon命名空间WPF简单调用Halcon创建矩形简单调用导出脚本函数 前言 本章会简单讲解如何调用Halcon组件和接口&#xff0c;因为我们是进行混合开发模式。即核心脚本在平台调试&#xff0c;辅助脚本C#直接调用。 在MainWindow.xaml里面…

【哈夫曼树的构造】

文章目录 如何构造哈夫曼树哈夫曼树构造算法的实现 如何构造哈夫曼树 哈夫曼算法口诀&#xff1a; 1.构造森林全是根&#xff1b;2.选用两小造新树&#xff1b; 3.删除两小添新人&#xff1b;4.重复2,3剩单根&#xff1b; 例&#xff1a;有4个新结点a,b,c,d&#xff0c;权值为…

数据结构 | 图

最小生成树算法 Prime算法 算法思路&#xff1a;从已选顶点所关联的未选边中找出权重最小的边&#xff0c;并且生成树不存在环。 其中&#xff0c;已选顶点是构成最小生成树的结点&#xff0c;未选边是不属于生成树中的边。 例子&#xff1a; 第一步&#xff1a; 假设我们从顶…

第十八章DOM操作控制

DOM操作分类&#xff1a; jQuery中的DOM操作 一。设置和获取样式值 1.追加样式 addClass&#xff1a;追加CSS效果 removeClass&#xff1a;去除CSS内容 2.切换样式 3.判断是否含有指定样式&#xff1a;判断的是布尔类型的值 二。内容操作&#xff1a; 1.HTML代码操作 2.TEXT代…

C++二分查找算法:132 模式

说明 本篇是视频课程的讲义&#xff0c;可以看直接查看视频。也可以下载源码&#xff0c;包括空源码。 题目 给你一个整数数组 nums &#xff0c;数组中共有 n 个整数。132 模式的子序列 由三个整数 nums[i]、nums[j] 和 nums[k] 组成&#xff0c;并同时满足&#xff1a;i &l…

【每日一题】—— B. Deja Vu(Codeforces Round 907 (Div. 2))(暴力枚举、队列)

&#x1f30f;博客主页&#xff1a;PH_modest的博客主页 &#x1f6a9;当前专栏&#xff1a;每日一题 &#x1f48c;其他专栏&#xff1a; &#x1f534; 每日反刍 &#x1f7e1; C跬步积累 &#x1f7e2; C语言跬步积累 &#x1f308;座右铭&#xff1a;广积粮&#xff0c;缓称…