对象存储_对象存储oss - CSDN
精华内容
参与话题
  • 对象存储作为一种新型存储解决方案, 相对于传统的 NAS、SAN 存储, 具有无限扩容、安全可靠、简单易用、高性能、低成本等特点, 可以通过 SDK、HTTP RESTFul API、S3 等方式和企业服务集成, 提供高效高性能的存储服务,...
  • 对象存储简介

    2020-09-15 22:02:26
    对象存储简介 一 导读 计算机系统是图灵机的高效实现,即根据输入数据的规则得到输出数据。现在的计算机系统由CPU、内存、总线、外设(如网络设备、存储设备)等组成,其中,存储是非常重要的一部分。 近年来,...

    一 导读

    如今云计算、大数据发展得如火如荼,PB容量单位早已经进入国内企业存储采购单,DT时代即将来临。Ceph对象存储的优秀特性吸引越来越多开发者,本文对Ceph对象存储进行架构详解。

    二 对象存储

     

    文件存储,通常指的是遵循POSIX协议,同时具备并行化访问和冗余机制的存储方式,现在也将非POSIX协议的GFS、HDFS、FastDFS等归为文件存储。同时文件存储引进了目录,十分类似我们平时Windows的文件结构,当单个目录文件数量过大时,文件查找效率会急剧下降。

    对象存储是在文件存储的基础上发展而来的,对象存储抛弃了文件存储的命名空间、文件目录等结构。对象存储相比文件存储更加简洁,抛弃了命名空间、文件目录等结构,更加扁平化,在使用、扩展、维护方面更加符合大众化思想。操作主体由文件变为对象,对象的操作主要以Put、Get和Delete为主,十分类似Java的HashMap,只不过对象存储中的对象不支持修改。总体来说,对象存储是为了克服文件存储的缺点,并发挥文件存储的优点而出现的。但对于存储内容而言,文件存储和对象存储并无本质区别,只是存储方式发生了变化。

    三 Ceph

    Ceph是一个去中心化、强一致性、易扩展性的分布式对象存储系统,并消除了对系统单一中心节点的依赖,从而实现了真正的无中心结构的设计思想,这也是其他分布式存储系统不能比的。目前业界自研商业存储例如阿里云存储、华为云存储、七牛云存储等或多或少都借鉴Ceph的设计思想和物理架构。

    3.1 设计思想

    Ceph最初针对的应用场景,就是大规模的、分布式的存储系统。所谓大规模和分布式,至少是能够承载PB级别的数据和成千上万的存储节点组成的存储集群

    如今云计算、大数据发展得如火如荼,PB容量单位早已经进入国内企业存储采购单,DT时代即将来临。Ceph起源于2004年,那是一个商用处理器以单核为主流,常见硬盘容量只有几十GB的年代。当时SSD也没有大规模商用,正因如此,Ceph之前版本对SSD的支持不是很好,发挥不了SSD的性能。如今Ceph高性能面临的最大挑战正是这些历史原因,目前社区和业界正在逐步解决这些性能上的限制。Ceph的技术特性,总体表现在集群可靠性、集群扩展性、数据安全性、接口统一性4个方面。

    3.1.1 集群可靠性

    所谓可靠性,首先从用户角度来说数据是第一位的,要尽可能保证数据不会丢失。其次,就是数据写入过程中的可靠性,在用户将数据写入Ceph存储系统的过程中,不会因为意外情况出现而造成数据丢失。最后,就是降低不可控物理因素的可靠性,避免因为机器断电等不可控物理因素而产生的数据丢失。

    3.1.2 集群扩展性

    这里的可扩展概念是广义的,既包括系统规模和存储容量的可扩展,也包括随着系统节点数增加的聚合数据访问带宽的线性扩展。

    3.1.3 数据安全性

    所谓数据安全性,首先要保证由于服务器死机或者是偶然停电等自然因素的产生,数据不会丢失,并且支持数据自动恢复,自动重平衡等。总体而言,这一特性既保证了系统的高度可靠和数据绝对安全,又保证了在系统规模扩大之后,其运维难度仍能保持在一个相对较低的水平。

    3.1.4 接口统一性

    所谓接口统一性,指的是Ceph可以同时支持3种存储,即块存储、对象存储和文件存储,Ceph支持市面上所有流行的存储类型。严格来说,Ceph只支持对象存储,块存储和文件存储也是借助对象存储来实现的。

    根据Ceph的技术特性,可以总结出Ceph的设计思路,概述为两点:充分发挥存储本身计算能力和去除所有的中心点。充分发挥存储设备自身的计算能力:其实就是采用廉价的设备和具有计算能力的设备(最简单的例子就是普通的服务器)作为存储系统的存储节点。当前阶段只是将这些服务器当做功能简单的存储节点,从而产生资源过度浪费(如同虚拟化的思想一样,都是为了避免资源浪费)。而如果充分发挥节点上的计算能力,则可以实现前面提出的技术特性。这一点成为了Ceph系统设计的核心思想。去除所有的中心点:如果系统中出现中心点,一方面会引入单点故障,另一方面也必然面临着当系统规模扩大时的可扩展性和性能瓶颈。除此之外,如果中心点出现在数据访问的关键路径上,也必然导致数据访问的延迟增大。虽然在大多数存储软件实践中,单点故障点和性能瓶颈的问题可以通过为中心点增加HA或备份加以缓解,但Ceph系统最终采用CRUSH、Hash环等方法更彻底地解决了这个问题。

    3.2 架构设计

    Ceph底层核心是RADOS,整体架构如下图。

    3.2.1 RADOS

    RADOS具备自我修复等特性,提供了一个可靠、自动、智能的分布式存储,是Ceph存储集群的基础。Ceph中的一切都以对象的形式存储,而RADOS就负责存储这些对象,而不考虑它们的数据类型。RADOS确保数据一致性和可靠性,对于数据一致性,它执行数据复制、故障检测和恢复,还包括数据在集群节点间的Recovery。

    OSD,数据存储单元,主要功能包括数据存储、数据复制、数据恢复、数据回补、数据平衡等功能,并将一些相关数据提供给Monitor,例如OSD心跳等。一般情况下,一块磁盘对于一个OSD。对于整个存储集群,需要多个OSD,只有当OSD数量足够多时,Ceph的虚随机算法才能实现数据均匀分布。

    Monitor,监视器,主要功能是维护整个集群健康状态,提供一致性决策。Ceph需要多个Monitor组成小集群,它们通过Paxos同步数据,用来保存OSD的元数据。Monitor同时维护着Ceph集群中的各种Map图,比如OSD Map、PG Map和CRUSH Map,这些Map统称为Cluster Map,Cluster Map是RADOS的关键数据结构,管理集群中的所有成员、关系、属性等信息以及数据的分发,比如当用户需要存储数据到Ceph集群时,OSD需要先通过Monitor获取最新的Map图,然后根据Map图和ObjectId等计算出数据最终存储的位置。

    3.2.2 LIBRADOS

    对RADOS进行抽象和封装,简化访问RADOS的一种方法,并向上层提供API,以便直接基于RADOS进行应用开发,API目前支持PHP、Ruby、Java、Python、C和C++语言。它提供了Ceph 存储集群的一个本地接口RADOS ,并且是其他服务(如RBD 、RGW)的基础,以及为Ceph FS提供POSIX接口。LIBRADOS API支持直接访问RADOS ,使得开发者能够创建自己的接口来访问Ceph集群存储。

    3.2.3 RBD

    Ceph块设备,对外提供块存储。可以像磁盘一样被映射、格式化已经挂载到服务器上,支持快照,常用于虚拟化场景。

    3.2.4 RGW

    提供与Amazon S3和Swift兼容的RESTful API的网关,以供相应的对象存储应用开发使用。RGW提供的API抽象层次更高,但在类S3或Swift LIBRADOS的管理比便捷,因此,开发者应针对自己的需求选择使用。

    3.2.5 Ceph FS

    提供了一个任意大小且兼容POSlX的分布式文件系统(类似TFS、HDFS、FastDFS等文件系统),Ceph FS依赖元数据服务Ceph MDS来跟踪文件层次结构。

    3.3 智能分布

    数据分布是分布式存储系统的一个重要部分,数据分布算法至少要考虑以下3个因素。故障隔离:同份数据的不同副本分布在不同的故障域,降低数据损坏的风险。负载均衡:数据能够均匀地分布在磁盘容量不等的存储节点,避免部分节点空闲,部分节点超载,从而影响系统性能。数据迁移:控制节点加入离开时引起的数据迁移量。当节点离开时,最优的数据迁移是只有离线节点上的数据被迁移到其他节点,而正常工作的节点的数据不会发生迁移。

    对象存储中一致性Hash和CRUSH算法是使用比较多的数据分布算法。在Aamzon的Dyanmo键值存储中采用一致性Hash算法,并且对它做了很多优化。OpenStack的Swift对象存储中也使用了一致性Hash算法。

    CRUSH(Controlled Replication Under Scalable Hashing)是一种基于伪随机控制数据分布、复制的算法。Ceph是为大规模分布式存储系统(PB级的数据和成百上千台存储设备)而设计的,在大规模的存储系统里,必须考虑数据的平衡分布和负载(提高资源利用率)、最大化系统的性能,以及系统的扩展和硬件容错等。CRUSH就是为解决以上问题而设计的。在Ceph集群里,CRUSH只需要一个简洁而层次清晰的设备描述,包括存储集群和副本放置策略,就可以有效地把数据对象映射到存储设备上,且这个过程是完全分布式的,在集群系统中的任何一方都可以独立计算任何对象的位置。另外,大型系统存储结构是动态变化的(存储节点的扩展或者缩容、硬件故障等), CRUSH能够处理存储设备的变更(添加或删除),并最小化由于存储设备的变更而导致的数据迁移。

    简单来说,CRUSH算法的核心意义在于,在存储策略不变、PG和OSD数量足够多的情况下,均匀选择一个PG。因为PG管理存储集群所有的OSD,因此均匀选择一个PG,等价于选择一组OSD。

    3.3.1 数据寻址

    分布式存储系统,必须要能够解决两个最基本的问题,即现在应该把数据写到什么地方与之前把数据写到什么地方了,因此会涉及数据如何寻址的问题。Ceph数据寻址要经历以下三个阶段:

    3.3.1 File -> Object映射

    Ceph条带化之后,将获得N个带有唯一OID的Object。OID是进行线性映射生成的,即由File的元数据INO以及Ceph条带化产生的Object序号ONO连缀而成,举例而言,如果1个ID为Filename的File被切分为3个Object,则Object序号依次为0、1和2,最终得到的OID依次为Filename0、Filename1和Filename2。

    3.3.2 Object -> PG映射

    在File被映射为一个或者多个Object之后,接下来就需要将每个Object独立地映射到PG中,这个映射过程也很简单,其计算公式PG ID=Hash(OID)&Mask,其中Mask=PG总数-1,PG总数需要设置为2的整数幂。当有足够数量的Object,PG被选中的概率近似均匀。

    3.3.3 PG -> OSD映射

    在得到PG ID之后,就需要将PG映射到数据实际存储单元OSD上,其计算过程CRUSH(PG ID)=(OSD1,OSD2,OSD3)。CRUSH算法的结果是得到一组OSD,在PG数量、OSD数量、以及存储策略不变的情况下,其结果一般不会变化。

    3.4 冗余方式

    数据冗余能在分布式系统发生故障时起到恢复数据的作用,也是分布式系统可靠性的常用手段。数据冗余方式有两种,一种是多副本,一种是纠删码。Ceph因为能同时支持多副本与纠删码,因此是多数商业存储公司首选的技术方案。

    3.4.1 多副本

    多副本是分布式系统常见的冗余方式,简单易用,可靠性极高。多副本相对纠删码更加成熟、稳定,也是大部分中间件冗余数据的常见手段,例如Kafka分区副本。缺点是磁盘利用率低,在N副本模式下,磁盘利用率只有1/N。在分布式存储中,除了可靠性要考虑之外,磁盘利用率也是要考虑的一个指标。

    3.4.2 纠删码

    纠删码主要是通过利用算法将原始的数据进行编码得到校验,并将数据和校验一并存储起来,以达到容错的目的。其基本思想是将K块原始数据元素通过一定的编码计算,得到M块校验元素。当其中任意m块元素出错(包括数据和校验出错),均可以通过对应的重构算法恢复出原来的K块数据。生成校验的过程被成为编码,恢复丢失数据块的过程被称为解码。

    纠删码能够基于更少的冗余设备,提供和多副本近似的可靠性,但是纠删码也带来了计算量和网络负载的额外负担,磁盘利用率越高,就需要花费更多的计算量和网络负载。在对象存储中,需要在磁盘利用率和可靠性之间做一个平衡。在纠删码模式下,磁盘利用率为K/(K+M),远比多副本1/N高。一般而言,纠删码模式下,磁盘利用率推荐在75%(K=9,M=3)较为合适,磁盘利用率更高的话,可靠性会进一步降低,进而影响对象存储的稳定性。可以归纳为:纠删码是一种用计算换存储空间的存储方式,相比多副本能节省非常多的磁盘空间,但是在数据恢复的时候代价比多副本大得多。

    在对象存储实际生产环境中,对于热数据会使用多副本策略来冗余,冷数据使用纠删码来冗余。

    四 结语

    存储方式没有好坏之分,只有适合与不适合之分,满足当前业务系统需求的存储方式就是最好的存储方式。并不能说Ceph对象存储就一定比TFS、HDFS、FastDFS优秀。这就好像现在机械硬盘已经存在这么多年了,磁带仍然没有消失的原因,因为它用一种最廉价的方式解决了大容量离线数据的存储问题,尽管它是很慢的。

    展开全文
  • 对象存储(Object-based Storage)概述

    万次阅读 2018-09-13 15:40:49
    对象存储概述 什么是对象存储(OSD)? 存储局域网(SAN)和网络附加存储(NAS)是目前两种主流网络存储架构,而对象存储(Object-based Storage)是一种新的网络存储架构,基于对象存储技术的设备就是对象存储设备...

    对象存储概述

    什么是对象存储(OSD)?
    存储局域网(SAN)和网络附加存储(NAS)是目前两种主流网络存储架构,而对象存储(Object-based Storage)是一种新的网络存储架构,基于对象存储技术的设备就是对象存储设备(Object-based Storage Device)简称OSD。1999年成立的全球网络存储工业协会(SNIA)的对象存储设备工作组发布了ANSI的X3T10标准。总体上来讲,对象存储综合了NAS和SAN的优点,同时具有SAN的高速直接访问和NAS的分布式数据共享等优势,提供了具有高性能、高可靠性、跨平台以及安全的数据共享的存储体系结构。

    SAN存储架构
    采用SCSI快I/O命令集,通过磁盘或FC(iber Channel)级的数据访问提供高性能的随机I/O个数据吞吐率,它具有高宽带、低时延的优势,在高性能计算中占有一席之地,如SGI的CXFS文件系统就是基于SAN实现高性能文件存储的,但是由于SAN系统的价格较高,且扩展性较差,已不能满足成千上万个CPU规模的系统。

    NAS存储架构
    它采用NFS或CIFS命令集访问数据,以文件为传输协议,通过TCP/IP实现网络化存储,可扩展行好、价格便宜、用户易管理,如目前在集群计算中应用较多的NFS文件系统,但由于NAS的西医开销高、带宽低、延迟大,不利于在高性能集群中使用。

    对象存储架构

    核心是将数据通路(数据读或写)和控制通路(元数据)分离,并且基于对象存储设备构建存储系统,每个对象存储设备具有一定的只能,能够自动管理其上的数据分布。对象存储结构由对象、对象存储设备、元数据服务器、对象存储系统的客户端四部分组成。
    这里写图片描述

    1. 对象
    对象 是系统中数据存储的基本单位,每个Obeject是数据和数据属性集的综合体,数据属性可以根据应用的需求进行设置,包括数据分布、服务质量等。在传统的存储系统中用文件或块作为基本的存储单位,块设备要记录每个存储数据块在设备上的位置。Object维护自己的属性,从而简化了存储系统的管理任务,增加了灵活性。Object的大小可以不同,可以包含整个数据结构,如文件、数据表项等。在存储设备中,所有对象都有一个对象标识,通过对象标识OSD命令访问对象。通常由多种类型的对象,存储设备上的根对象标识存储设备和该设备的各种属性,组队象是存储设上共享资源管理策略的对象集合等。
    这里写图片描述
    这里写图片描述
                                                      传统的访问层次和虚拟数据访问模型
    2. 对象存储设备
    每个OSD都是一个智能设备,具有自己的存储介质、处理器、内存以及网络系统等,负责管理本地的Object,是对象存储系统的核心。OSD同块设备的不同不在于存储介质,而在于两者提供的访问接口。OSD的主要功能包括数据存储和安全访问、目前国际上通常采用刀片式结构实现对象存储设备。OSD提供三个主要功能:
    (1)数据存储。OSD管理对象数据,并将它们放置在标准的磁盘系统上,OSD不提供接口访问方式,Client请求数据时用对象ID、偏移进行数据读写。
    (2)智能分布。OSD用其自身的CPU和内存优化数据分布,并支持数据的预取。由于OSD可以智能地支持对象的预取,从而可以优化磁盘的性能。
    (3)每个对象数据的管理。OSD管理存储在其它对象上的元数据,该元数据与传统的inode元数据相似,通常包括对象的数据块和对象的长度。而在传统的NAS系统中,这些元数据是由文件服务器提供的,对象存储架构将系统中主要的元数据管理工作由OSD来完成,降低了Client的开销。
    这里写图片描述
    3. 元数据服务器(Metadata Server,MDS)
    MDS控制Client与OSD对象的交互,为客户端提供元数据,主要是文件的逻辑视图,包括文件与目录的组织关系、每个文件所对应的OSD等。主要提供以下几个功能:
    (1)对象存储访问。MDS构造、管理描述每个文件分布的视图,允许Client直接访问对象。MDS为Client提供访问该文件所含对象的能力,OSD在接收到每个请求时先验证该能力,然后才可以访问。
    (2)文件和目录访问管理。MDS在存储系统上构建一个文件结构,包括限额控制、目录和文件的创建和删除、访问控制等。
    (3)Client Cache一致性。为了提高Client性能,在对象存储系统设计时通常支持Client的Cache。由于引入Client方的Cache,带来了Cache一致性的问提,MDS支持基于Client的文件Cache,当Cache的文件发生改变时,将通知Client刷新Cvashe,从而防止Cache不一致引发的问提。
    4. 对象存储系统的客户端Client
    为了有效支持Client支持访问OSD上的对象,需要在计算节点实现对象存储系统的Client。现有的应用对数据的访问大部分都是通过POSIX文件方式进行的,同时为了提高性能,也具有对数据的Cache功能和文件的条带功能。同时,文件系统必须维护不同客户端上Cache的一致性,保证文件系统的数据一致。文件系统访问流程:
    1)客户端应用发出读请求;
    2)文件系统向元数据服务器发送请求,获取要读取的数据所在的OSD;
    3)然后直接向每个OSD发送数据读取请求;
    4)OSD得到请求后,判断要读取的Object,并根据此Object的认证方式,对客户端进行认证,如果客户端得到收授权,则将Object的数据返回给客户端;
    5)文件系统收到OSD返回的数据以后,读操作完成。

    对象存储文件系统的关键技术
    1、分布元数据 传统的存储结构元数据服务器通常提供两个主要功能。
    (1)为计算结点提供一个存储数据的逻辑视图(Virtual File System,VFS层),文件名列表及目录结构。
    (2)组织物理存储介质的数据分布(inode层)。对象存储结构将存储数据的逻辑视图与物理视图分开,并将负载分布,避免元数据服务器引起的瓶颈(如NAS系统)。元数据的VFS部分通常是元数据服务器的10%的负载,剩下的90%工作(inode部分)是在存储介质块的数据物理分布上完成的。在对象存储结构,inode工作分布到每个智能化的OSD,每个OSD负责管理数据分布和检索,这样90%的元数据管理工作分布到智能的存储设备,从而提高了系统元数据管理的性能。另外,分布的元数据管理,在增加更多的OSD到系统中时,可以同时增加元数据的性能和系统存储容量。

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

    展开全文
  • 对象存储(云存储)概述

    万次阅读 多人点赞 2019-08-14 10:04:35
    文章目录三种存储形态1、块存储2、文件存储3、对象存储对象存储对象存储需求对象存储含义对象存储与传统网络存储的区别扩展知识:NAS与SAN概述1、NAS(Network Attached Storage)优点局限2、SAN(Storage Area ...

    三种存储形态

    在这里插入图片描述

    三种存储形态和存储架构示意图

    1、块存储

      块存储我们简单的理解就是一块一块的硬盘,直接挂载在主机上,在主机上我们能够看到的就是一块块的硬盘以及硬盘分区。从存储架构的角度而言,块存储又分为DAS存储(Direct-Attached Storage,直连式存储)和SAN存储(Storage Area Network,存储区域网络)。

    2、文件存储

      文件存储,我们指的是在文件系统上的存储,也就是主机操作系统中的文件系统。我们知道,文件系统中有分区,有文件夹,子文件夹,形成一个自上而下的文件结构;文件系统下的文件,用户可以通过操作系统中的应用程序进行打开、修改等操作,如打开word、编辑word。从架构上来说,文件存储提供一种NAS(Network Attached Storage,网络附属存储)架构,使得主机的文件系统不仅限于本地的文件系统,还可以连接基于局域网的共享文件系统。

    3、对象存储

      对象存储是面向对象/文件的、海量的互联网存储,它也可以直接被称为“云存储”。对象尽管是文件,它是已被封装的文件(编程中的对象就有封装性的特点),也就是说,在对象存储系统里,你不能直接打开/修改文件,但可以像ftp一样上传文件,下载文件等。另外对象存储没有像文件系统那样有一个很多层级的文件结构,而是只有一个“桶”(bucket)的概念(也就是存储空间),“桶”里面全部都是对象,是一种非常扁平化的存储方式。其最大的特点就是它的对象名称就是一个域名地址,一旦对象被设置为“公开”,所有网民都可以访问到它;它的拥有者还可以通过REST API的方式访问其中的对象。因此,对象存储最主流的使用场景,就是存储网站、移动app等互联网/移动互联网应用的静态内容(视频、图片、文件、软件安装包等等)。

    对象存储

    对象存储需求

      随着互联网,Web应用创建出数百亿的小文件;人们上传海量的照片、视频、音乐,Facebook每天都新增数十亿条内容,人们每天发送数千亿封电子邮件。据IDC统计未来在10年间数据将增长44倍,到2020年全球数据将增加到35ZB,其中80%是非结构化数据,且大部分是非活跃数据。

      面对如此庞大的数据量,仅具备PB级扩展能力的块存储(SAN)和文件存储(NAS)显得有些无能为力:通常块存储(SAN)的一个LUN容量仅数TB。单个文件系统最优性能情况下支持的文件数量通常只在百万级别。人们需要一种全新的架构的存储系统,这种存储系统需要具备极高的可扩展性,能够满足人们对存储容量TB到EB规模的扩展的需求。

      2006年Amazon发布AWS, S3 服务及其使用的REST、SOAP访问接口成为对象存储的事实标准。Amazon S3成功为对象存储注入云服务基因。

    对象存储含义

      存储局域网(SAN)和网络附加存储(NAS)是目前两种主流网络存储架构,而对象存储(Object-based Storage)是一种新的网络存储架构,基于对象存储技术的设备就是对象存储设备(Object-based Storage Device)简称OSD。总体上来讲,对象存储(Object-Based Storage, OBS)综合了NAS和SAN的优点,同时具有SAN的高速直接访问和NAS的分布式数据共享等优势,提供了具有高性能、高可靠性、跨平台以及安全的数据共享的存储体系结构。
      对象存储核心是将数据通路(数据读或写)和控制通路(元数据)分离,并且基于对象存储设备(OSD)构建存储系统,每个对象存储设备具有一定的智能,能够自动管理其上的数据分布。

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

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

    对象存储与传统网络存储的区别

      对象存储在很多重要方面与SAN和NAS迥然不同,对存储管理员而言最显著的区别在于对象存储没有LUNs,卷以及RAID等要素。对象数据不是存储在固定的块,而是在大小可变的“容器”里。鉴于元数据(metadata)和数据本身可通过传统数据访问方法进行访问,对象存储允许数据被直接访问。此外,支持对象级和命令级的安全策略设置。


    扩展知识:NAS与SAN概述

    1、NAS(Network Attached Storage)

      NAS(Network Attached Storage:网络附属存储)按字面简单说就是连接在网络上,具备资料存储功能的装置,因此也称为“网络存储器”。它是一种专用数据存储服务器。它以数据为中心,将存储设备与服务器彻底分离,集中管理数据,从而释放带宽、提高性能、降低总拥有成本、保护投资。其成本远远低于使用服务器存储,而效率却远远高于后者。
      它采用NFS或CIFS命令集访问数据,以文件为传输协议,通过TCP/IP实现网络化存储,可扩展性好、价格便宜、用户易管理,如目前在集群计算中应用较多的NFS文件系统,但由于NAS的协议开销高、带宽低、延迟大,不利于在高性能集群中应用。

    优点

      NAS产品是真正即插即用的产品。NAS设备一般支持多计算机平台,用户通过网络支持协议可进入相同的文档,因而NAS设备无需改造即可用于混合Unix/Windows NT局域网内。   
      NAS设备的物理位置同样是灵活的。它们可放置在工作组内,靠近数据中心的应用服务器,或者也可放在其他地点,通过物理链路与网络连接起来。无需应用服务器的干预,NAS设备允许用户在网络上存取数据,这样既可减小CPU的开销,也能显著改善网络的性能。

    局限

      NAS没有解决与文件服务器相关的一个关键性问题,即备份过程中的带宽消耗。与将备份数据流从LAN中转移出去的存储区域网(SAN)不同,NAS仍使用网络进行备份和恢复。NAS 的一个缺点是它将存储事务由并行SCSI连接转移到了网络上。这就是说LAN除了必须处理正常的最终用户传输流外,还必须处理包括备份操作的存储磁盘请求。
      由于存储数据通过普通数据网络传输,因此易受网络上其它流量的影响。当网络上有其它大数据流量时会严重影响系统性能;由于存储数据通过普通数据网络传输,因此容易产生数据泄漏等安全问题;
      存储只能以文件方式访问,而不能像普通文件系统一样直接访问物理数据块,因此会在某些情况下严重影响系统效率,比如大型数据库就不能使用NAS。

    2、SAN(Storage Area Network and SAN Protocols)

      存储区域网络(Storage Area Network and SAN Protocols,简写SAN,即存储区域网络及其协议)是一种高速网络或子网络,提供在计算机与存储系统之间的数据传输。存储设备是指一台或多台用以存储计算机数据的磁盘设备,通常指磁盘阵列。存储区域网络能够使用多种技术,这就使得系统间的数据备份、操作、文件转移和数据复制很容易实现重定向。

    优点

      SAN提供了一种与现有LAN连接的简易方法,并且通过同一物理通道支持广泛使用的SCSI和IP协议。SAN不受现今主流的、基于SCSI存储结构的布局限制。特别重要的是,随着存储容量的爆炸性增长,SAN允许企业独立地增加它们的存储容量。 SAN的结构允许任何服务器连接到任何存储阵列,这样不管数据置放在那里,服务器都可直接存取所需的数据。因为采用了光纤接口,SAN还具有更高的带宽。 因为SAN解决方案是从基本功能剥离出存储功能,所以运行备份操作就无需考虑它们对网络总体性能的影响。SAN方案也使得管理及集中控制实现简化,特别是对于全部存储设备都集群在一起的时候。最后一点,光纤接口提供了10公里的连接长度,这使得实现物理上分离的、不在机房的存储变得非常容易。

    局限

      成本和复杂性,特别是在光纤信道中这些缺陷尤其明显。使用光纤信道的情况下,合理的成本大约是1千兆或者两千兆大概需要五万到六万美金。从另一个角度来看,虽然新推出的基于iSCSI的SAN解决方案大约只需要两万到三万美金,但是其性能却无法和光纤信道相比较。在价格上的差别主要是由于iSCSI技术使用的是现在已经大量生产的吉比特以太网硬件,而光纤通道技术要求特定的价格昂贵的设备。

    对象存储的特性

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

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

    在这里插入图片描述

    对象存储数据组织示意图

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

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

      在重复数据删除,绿色节能等特性基础上,为了更好的满足海量数据存储和公众云服务需求,对象存储系统还包括如下一些关键特性:

    1、优秀的扩展性

      扁平化的数据结构允许对象存储容量从TB级扩展到EB级,管理数十个到百亿个存储对象,支持从数字节(Byte)到数万亿字节(TB)范围内的任意大小对象,解决了文件系统复杂的iNode的机制带来的扩展性瓶颈,并使得对象存储无需像SAN存储那样管理数量庞大的逻辑单元号(LUN)。对象存储系统通常在一个横向扩展(或网格硬件)架构上构建一个全局的命名空间,这使得对象存储非常适用在云计算环境中使用。某些对象存储系统还可支持升级、扩容过程中业务零中断。

    2、基于策略的自动化管理

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

    3、多租户技术

      多租户特性可以使用同一种架构,同一套系统为不同用户和应用提供存储服务,并分别为这些用户和应用设置数据保护、数据存储策略,并确保这些数据之间相互隔离。

    扩展知识:多租户技术介绍

    多租户架构浅析

      多租户技术(英语:multi-tenancy technology)或称多重租赁技术,是一种软件架构技术,它是在探讨与实现如何于多用户的环境下共用相同的系统或程序组件,并且仍可确保各用户间数据的隔离性。

      云计算可以划分为以下几个层次的服务——IaaS、PaaS和SaaS,而今天我们今天讲的多租户架构就是一种常见的 SaaS 软件架构模式。多租户技术是实现如何在多用户环境下(此处的多用户一般是面向企业用户)共用相同的系统或程序组件,并且可确保各用户间数据的隔离性。 简单讲:在一台服务器上运行单个应用实例,它为多个租户(客户)提供服务。从定义中我们可以理解:多租户是一种架构,目的是为了让多用户环境下使用同一套程序,且保证用户间数据隔离。那么重点就很浅显易懂了,多租户的重点就是同一套程序下实现多用户数据的隔离。

    对象存储结构

    Alt

    对象存储结构

      对象存储结构由 对象、对象存储设备、元数据服务器、对象存储系统的客户端 四部分组成。

    1、对象(Object)

      对象(Object)是系统中数据存储的基本单位,一个对象实际上就是文件的数据和一组属性信息(Meta Data)的组合,每个对象是数据和数据属性集的综合体,数据属性可以根据应用的需求进行设置,包括数据分布、服务质量等。在传统的存储系统中用文件或块作为基本的存储单位,块设备要记录每个存储数据块在设备上的位置。对象维护自己的属性,从而简化了存储系统的管理任务,增加了灵活性。对象的大小可以不同,可以包含整个数据结构,如文件、数据库表项等。在存储设备中,所有对象都有一个对象标识,通过对象标识OSD命令访问该对象。通常有多种类型的对象,存储设备上的根对象标识存储设备和该设备的各种属性,组对象是存储设备上共享资源管理策略的对象集合等。

    在这里插入图片描述

    传统块存储和对象存储示意图

    在这里插入图片描述

    对象存储中对象(Object)的组成

    2、对象存储设备

      每个OSD都是一个智能设备,具有自己的存储介质、处理器、内存以及网络系统等,负责管理本地的Object,是对象存储系统的核心。OSD同块设备的不同不在于存储介质,而在于两者提供的访问接口。OSD的主要功能包括数据存储和安全访问。目前国际上通常采用刀片式结构实现对象存储设备。OSD提供三个主要功能:

    1. 数据存储。OSD管理对象数据,并将它们放置在标准的磁盘系统上,OSD不提供块接口访问方式,Client请求数据时用对象ID、偏移进行数据读写。
    2. 智能分布。OSD用其自身的CPU和内存优化数据分布,并支持数据的预取。由于OSD可以智能地支持对象的预取,从而可以优化磁盘的性能。
    3. 每个对象元数据的管理。OSD管理存储在其上对象的元数据,该元数据与传统的inode元数据相似,通常包括对象的数据块和对象的长度。而在传统的NAS系统中,这些元数据是由文件服务器维护的,对象存储架构将系统中主要的元数据管理工作由OSD来完成,降低了Client的开销。

    在这里插入图片描述

    传统模型与OSD模型示意

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

      MDS控制Client与OSD对象的交互,为客户端提供元数据,主要是文件的逻辑视图,包括文件与目录的组织关系、每个文件所对应的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不一致引发的问题。

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

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

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

    对象存储应用场景

      通常,无论是虚拟主机还是独立云主机,作为个人网站都会把所有的图片都存储在空间里,这样有一下几个问题:

    1. 随着网站的运行,图片越来越多,会导致主机的空间使用越来越多;
    2. 图片的增多会导致网站页面打开速度越来越慢,因为越来越多的图片需要从服务器上下载到本地浏览器的缓存目录,这样需要越来越多的宽带,而虚拟主机或云主机通常的宽带都是限定的;
    3. 网站迁移的成本越来越大。

      如果使用了云存储,这样可以把图片存储在第三方,所有的图片都不会再消耗虚拟主机的宽带资源和磁盘资源,保证网站访问速度不受影响,迁移网站只需要迁移数据库和基本程序文件即可,基本上几十M就可以打包所有的文件,所以云存储的好处显而易见。

    • 应用场景一:

      如果您的网站有大量的图片,如果都存储在本地,需要大量的磁盘空间,虽然现在磁盘空间的价格已经很低,但是用户访问却需要大量的宽带,超过10G的图片,主机宽带10M是不够的,而10M的云主机每年的价格8000左右,随着年限的增长,云主机需要的硬件和宽带需求会越来越多,那么网站基本成本支出也会越来越搞,如果把所有的图片都存储在云存储里,每年主机成本可以降低2/3,甚至更多。

    • 应用场景二:

      视频存储的问题,可以选择把视频存储在专门的视频网站,比如优酷,腾讯视频,爱奇艺等,但是这样的问题是,所有的视频都会被视频网站加上播放前的贴片广告,这样其实非常不友好,给客户看的视频,还要先看几十秒甚至2分钟广告,这有点尴尬了,但是如果放网站上,会出现磁盘和宽带不足的情况,如果上传到云存储上,设置好伪静态和防止BT软件下载,这样就非常好了。

    • 应用场景三:
        电商、互联网金融、在线教育等行业的Web和移动应用,架构里有数据库、应用服务器、负载均衡的应用,另外还需要存储比如商品图片,互联网金融行业的用户证件照,在线交易视频等文件等,需要存储,此前的做法是搭建文件服务器,文件服务器的扩展性、并发性都有问题,这时候就需要用到对象存储。

    • 应用场景四:
        企业网盘,其后端就是对象存储。企业遍布各地的各个部门文档都在用企业网盘,分享和管理文件,企业网盘可以非常容易地分享给特定的个人,群组或部门。企业网盘是单独的市场,与个人网盘有很大区别,企业对访问权限认证的管理更细致,数据管理要求更高。

    还有很多的应用场景,此处不一一列举。

    划重点(∩_∩)



    本人程序媛一枚,因为离港澳较近,周末兼职港澳人肉代购。

    欢迎各位大佬添加本人微信,还会经常有点赞活动送价值不菲的小礼品哦。

    即使现在不需要代购,等以后有了女(男)朋友、有了宝宝就肯定会需要的喽。

    动动手指头,扫码一下,就当是对本博文的支持嘛,也是对一个平凡、勤劳、勇敢、秀外慧中等等优点的程序媛莫大的支持哈。

    在这里插入图片描述

    http://www.chinastor.com/a/jishu/OSD.html
    https://blog.csdn.net/liuaigui/article/details/17973039
    https://www.wopus.org/tools/4868.html
    http://storage.chinabyte.com/145/12496645.shtml

    展开全文
  • 对象存储可以简单理解为用来存储图片、音频、视频等非结构化数据的数据池。相对于主机服务器,具有读写速度快,利于分享的特点。我为什么建议大家使用对象存储?我总结了这六点。 1、网站数据动静分离,大幅...

    对象存储可以简单理解为用来存储图片、音频、视频等非结构化数据的数据池。相对于主机服务器,具有读写速度快,利于分享的特点。我为什么建议大家使用对象存储?我总结了这六点。

    为什么建议大家使用对象存储?我总结了这六点

     

    1、网站数据动静分离,大幅提升网页性能

    一般情况下,我们都是建议使用主机服务器和对象存储分工合作的方式来存储网站数据。主机服务器主要负责存储网站的动态数据,对象存储则用来存储网站的静态文件。从而实现网站的动静分离,当用户访问一个网站时,分别从主机服务器和对象存储的服务器同步读取数据,可以大幅的提升网页性能。

    理想情况下,还会结合内容分发网络来使用,这个我们以后会说到。

     

    2、单独的文件管理界面,管理网站文件和本地电脑一样方便

    无论是腾讯云、阿里云、七牛云,对象存储都有单独的管理控制台,腾讯云和阿里云还有专门的电脑客户端。你不必打开网站,就可以像使用百度云盘一样使用对象存储来管理你的网站文件,除了上传、下载、预览等常用功能,还可以直接在对象存储上进行图片处理/媒体转码/数据分析等。

     

    3、本质是”内置大容量硬盘的分布式服务器“,同一个文件支持跨域共享

    对象存储的本质是“内置大容量硬盘的分布式服务器”,对象存储有自己的CPU、内存、网络和磁盘系统,具备一定的智能,同一个对象存储数据池可以新建不同的存储桶(bucket),分别用来存储不同网站的数据,彼此互不干扰。而且同一个文件可以引用到不同的网站,可以有效的减少数据冗余。

     

    4、储存节点多,支持跨地域实时同步,实现异地容灾

    假设你的图片等数据存储在你自己的服务器上,只能通过定期数据备份的方式保护你的数据。数据量大的话,每次备份都需要大量的时间和占用大量的磁盘空间,管理起来还不方便。

    如果你的数据放置在对象存储的数据池了,并与网站关联。那么静态文件的备份就可以交给对象存储。你只需要对网站少量的动态文件进行备份。省时省力。

     

    比如我使用对象存储,我在离我最近的节点【深圳】来存储网站的图片等静态文件。但是考虑到极端情况,比如深圳节点由于突然停电,可能导致数据全部丢失。但如果之前我选择了【杭州】作为第二个存储节点,而且设置【深圳】节点的数据实时增量同步到【杭州】节点。那么就算深圳节点的数据丢失了,但是我在杭州的数据还是可以使用。等到恢复供电,我再把数据从杭州节点同步回深圳节点就可以了。这就是我们说的异地容灾。

     

    5、成本低,资源弹性伸缩,按需付费

    现在阿里云对象存储(简称OSS)40G容量一年的价格大概是9块钱。腾讯云对象存储(简称cos)更是有免费的50G容量,加上10G的免费下行流量。已经可以满足大部分个人站点的使用需求。不像服务器的流量是固定的,包含在服务器的费用里面了。无论你用或不用,都是这么多。对象存储可以是根据你的实际使用量进行计费。

     

    6、节省服务器空间

    为什么选择将这一点放在最后说呢?因为现在服务器的价格还算实惠,活动也比较多。大部分站长已经不存在服务器空间不够用的问题。而且对象存储的出现也不是为了解决服务器空间不够用的问题。而是为了结合【块存储】、【文件存储】各自的优点,从而实现高效的文件读写和分享。但是节省了服务器空间还是不争得事实,所以还是提一下吧。

    展开全文
  • 三种存储类型比较-文件、块、对象存储    块存储和文件存储是我们比较熟悉的两种主流的存储类型,而对象存储(Object-based Storage)是一种新的网络存储架构,基于对象存储技术的设备就是对象存储设备(Object-...
  • https://blog.csdn.net/enweitech/article/details/51445087 块存储和文件存储是我们比较熟悉的两种主流的存储类型,而对象存储(Object-based Storage)是一种新的网络存储架构,基于对象存储技术的设备就是对象...
  • 对象存储 1、对象 2、对象存储设备 3、元数据服务器(Metadata Server,MDS) 4、对象存储系统的客户端Client 三者之间异同比较 参考文献 如果要实现一个计算机,那么这个计算机一定要有以下的三个部分构成:...
  • 对象存储

    千次阅读 2018-09-01 22:21:45
    对象存储到底是个什么鬼 对象存储到底是个什么鬼 小小河 2016-7-23   存储圈真会玩,块存储、文件存储、混合存储,今年又火了一个对象存储。银行,公安局,各大单位一言不合就换成对象存...
  • AWS S3(对象存储)基本操作

    万次阅读 热门讨论 2019-09-26 14:20:04
    1 AWS S3对象存储 1.1 基本概念 1.1.1 存储桶(bucket) 1.1.2 对象 1.1.3 对象标签(tag) 1.2 S3存储类型 2 使用 2.1 安装AWS SDK 2.2 编写基础配置文件 3 基础功能 3.1 桶操作 3.1.1 创建桶 3.1.2 桶的生命周期...
  • 工作6,7年了,在实际搭建私有云网络中常用NAS结构,而部署传统RAC集群的时候也需要配SAN网络,对这几种存储方式有直观的了解,却没能理论化系统化的梳理,今天看到一篇讲这方面的文章,我也就搞了个拿来主义,收录到...
  • 开源对象存储MinIO技术白皮书

    千次阅读 2019-10-25 22:40:59
    MinIO创始者是Anand Babu Periasamy, Harshavardhana(戒日王)等人, Anand是GlusterFS的初始开发者、Gluster公司的创始人与CTO,Harshavardhana曾经是GlusterFS的开发人员,直到2011年红帽收购了Gluster公司。...
  • 块存储和文件存储是我们比较熟悉的两种主流的存储类型,而对象存储(Object-based Storage)是一种新的网络存储架构,基于对象存储技术的设备就是对象存储设备(Object-based Storage Device)简称OSD。  首先,...
  • swift对象存储

    万次阅读 2016-05-23 12:18:50
    swift对象存储简介OpenStack Object Storage(Swift)是OpenStack开源云计算项目的子项目之一,被称为对象存储,提供了强大的扩展性、冗余和持久性。对象存储,用于永久类型的静态数据的长期存储。 Swift 最初是由 ...
  • HDFS对象存储--Ozone架构设计

    千次阅读 2016-03-06 13:43:27
    他们都提供了一个叫做**对象存储**的服务,就是目标数据是从Object中进行读写的,然后可以通过key来获取对应的Object,就是所谓的key-object的存储.这样的好处就在于用户使用起来很方便的,不需要走冗杂的操作流程.但是...
  • 前两篇介绍了对象存储的基础,包括存储类型,常用存储分类和分类方法。 SCSI,TCP/IP,FC等存储介质以及DAS\NAS\SAN等存储网络,请参考:对象存储1:传统存储类型和分类。 文件存储,块存储以及对象存储等数据存储...
  • 存储分类及对象存储osd的技术原理

    万次阅读 2018-12-21 18:03:06
    存储局域网(SAN)和网络附加存储(NAS)是我们比较熟悉的两种主流网络存储架构,而对象存储(Object-based Storage)是一种新的网络存储架构,基于对象存储技术的设备就是对象存储设备(Object-based Storage Device)...
  • COS对象存储服务的使用

    万次阅读 2016-12-14 15:59:18
    官网的简介是这样的:对象存储服务(Cloud Object Service)是面向企业和个人开发者提供的高可用,高稳定,强安全的云端存储服务。然后我最开始是抱着死马当活马医的心态来使用的,进度上面要求我是要尽快完成的,...
  • QingStor 对象存储服务提供可无限扩展的存储空间、快速的数据存取性能、高度的可靠性和数据的安全性、细粒度的权限控制及简单易用的接口,以向广大用户提供廉价、可靠的存储系统。 本次分享,QingCloud 系统工程师 ...
1 2 3 4 5 ... 20
收藏数 1,868,870
精华内容 747,548
关键字:

对象存储