什么是对象存储?什么是OSD对象存储设备?
存储局域网(SAN)和网络附加存储(NAS)是我们比较熟悉的两种主流网络存储架构,而对象存储(Object-based Storage)是一种新的网络存储架构,基于对象存储技术的设备就是对象存储设备(Object-based Storage Device)简称OSD。
对象存储的发展历史:
1999年成立的全球网络存储工业协会(SNIA)的对象存储设备(Object Storage Device)工作组发布了ANSI的X3T10标准。
对象存储的优点:
总体上来讲,对象存储同兼具SAN高速直接访问磁盘特点及NAS的分布式共享特点。
SAN(Storage Area Network)结构
采用SCSI 块I/O的命令集,通过在磁盘或FC(Fiber Channel)级的数据访问提供高性能的随机I/O和数据吞吐率,它具有高带宽、低延迟的优势,在高性能计算中占有一席之地,如SGI的CXFS文件系统就是基于SAN实现高性能文件存储的,但是由于SAN系统的价格较高,且可扩展性较差,已不能满足成千上万个CPU规模的系统。
NAS(Network Attached Storage)结构
它采用NFS或CIFS命令集访问数据,以文件为传输协议,通过TCP/IP实现网络化存储,可扩展性好、价格便宜、用户易管理,如目前在集群计算中应用较多的NFS文件系统,但由于NAS的协议开销高、带宽低、延迟大,不利于在高性能集群中应用。
对象存储结构
核心是将数据通路(数据读或写)和控制通路(元数据)分离,并且基于对象存储设备(Object-based Storage Device,OSD)构建存储系统,每个对象存储设备具有一定的智能,能够自动管理其上的数据分布。
对象存储与传统网络存储的区别
对象存储在很多重要方面与SAN和NAS迥然不同,对存储管理员而言最显著的区别在于对象存储没有LUNs,卷以及RAID等要素。对象数据不是存储在固定的块,而是在大小可变的“容器”里。鉴于元数据(metadata)和数据本身可通过传统数据访问方法进行访问,对象存储允许数据被直接访问。此外,支持对象级和命令级的安全策略设置。
对象存储结构组成部分(对象、对象存储设备、元数据服务器、对象存储系统的客户端):
对象存储架构
1、对象
对象是系统中数据存储的基本单位,一个对象实际上就是文件的数据和一组属性信息(Meta Data)的组合,这些属性信息可以定义基于文件的RAID参数、数据分布和服务质量等,而传统的存储系统中用文件或块作为基本的存储单位,在块存储系统中还需要始终追踪系统中每个块的属性,对象通过与存储系统通信维护自己的属性。在存储设备中,所有对象都有一个对象标识,通过对象标识OSD命令访问该对象。通常有多种类型的对象,存储设备上的根对象标识存储设备和该设备的各种属性,组对象是存储设备上共享资源管理策略的对象集合等。
对象的层次关系理解(图片来源SNIA)
对象的组成(图形来源Oracle)
2、对象存储设备
对象存储设备具有一定的智能,它有自己的CPU、内存、网络和磁盘系统,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对象的交互,主要提供以下几个功能:
(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文件系统接口,允许应用程序像执行标准的文件系统操作一样。
对象存储文件系统的关键技术
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。
各厂商的对象存储产品
当前的对象存储解决方案从即用型的云服务,软硬件捆绑或纯软件的应用交付,直到完全的融合型阵列。有些实现试图拥抱并包容传统存储架构,而另一些则是纯粹的专门设计。
惠普 从Helion公有云开始,惠普提供了全系列的对象存储产品。对于内部和私有云环境,惠普的StoreAll 820存储网关应用可作为前端搭载StoreServe 7000型或10000型阵列,也就是3PAR阵列。StoreAll 8800则是基于3PAR的一个完全的融合性阵列,在同一设备里支持SAN,NAS和对象存储。因此,惠普的产品针对了每种类型和大小的客户,从小型到中小型(SMBs)再到最大的企业集团。 当前的对象存储产品从即用型的云服务,软硬件捆绑或纯软件的应用交付,直到完全的融合型阵列。
Exablox 新兴对象存储厂商Exablox的第一个产品是OneBlox应用,其架构是一群对等节点组成的“环”,待存储对象通过支持SMB/CIFS的通用文件系统在这些节点上被存储。有一点值得注意,OneBlox应用可以支持任何SAS或SATA硬盘驱动器,即使是刚刚发行的最新款—如西数的HGST Ultrastar He66TB充氦型硬盘。IT企业可以从它们喜爱的电子设备商采购硬盘,因而避免了常见的阵列加价。Exablox针对中小型企业和云服务提供商,目前已有2000用户。
EMC EMC提供多种对象存储产品。Atmos可以以云服务的形式交付,称为Atmos Geo Drive,但也可以作为完全的阵列形式交付。EMC的SourceOne归档应用则通过采用CIFS和NFS协议将文件接口转换为Atmos对象存储,从而提供归档,合规和电子发现功能。此外,EMC的ViPR软件定义存储平台提供对象服务,作为EMC Isilon,VNX,或NetApp阵列的前端,可允许对象访问到达后端数据层。
昆腾 昆腾Lattus对象存储应用的配置可以从6节点扩展到20节点,这些节点在地理上分散以使得广域接入和协作成为可能。Lattus有三种模式:D,X和M模式。D模式支持原生的S3接口(HTTP Rest);X模式支持NFS,CIFS和HTTPREST协议;M模式则支持昆腾的StorNext存储管理接口。Lattus是业务无中断,自修复和自迁移的系统,主要面向大中型企业,尤其是媒体和娱乐行业,或者那些需要进行计算/处理/编辑的应用场景。
应用优势
特别是在归档和非结构化数据存储方面。对象存储可以提供更低的每GB价格,而最大的优点则是简化了存储管理。按照通常所认为的那样,如果存储管理的成本占据了总拥有成本的85%,那么对象存储系统由于无需配置,重新配置和部署任务,必将极大地影响总拥有成本。
那么现在阿里云/腾讯云/华为等都推出了云对象存储,这些云对象存储产品与以上的传统IT厂商的对象存储设备在交付形式上是很大不同,但是基本原理不变的,我们只要了解对象存储的概念就好。可见文章:深度体验华为云对象存储服务。
另外推荐参考文档:
Oracle:Object-Based Storage Devices
SNIA:OSD系统架构 英文
推荐文章:
对象存储的兴起及发展之路(客观的讲了对象存储的优势及不足,以及适用场景)
什么是对象存储?
首先我们来看一看什么是对象存储?目前,独立的存储形态有三种:块存储、文件存储,以及新出现的对象存储。
块存储我们简单的理解就是一块一块的硬盘,直接挂载在主机上,在主机上我们能够看到的就是一块块的硬盘以及硬盘分区。从存储架构的角度而言,块存储又分为DAS存储(Direct-Attached Storage,直连式存储)和SAN存储(Storage Area Network,存储区域网络)。
文件存储,我们指的是在文件系统上的存储,也就是主机操作系统中的文件系统。我们知道,文件系统中有分区,有文件夹,子文件夹,形成一个自上而下的文件结构;文件系统下的文件,用户可以通过操作系统中的应用程序进行打开、修改等操作,如打开word、编辑word。从架构上来说,文件存储提供一种NAS(Network Attached Storage,网络附属存储)架构,使得主机的文件系统不仅限于本地的文件系统,还可以连接基于局域网的共享文件系统。
而新的对象存储是面向对象/文件的、海量的互联网存储,它也可以直接被称为“云存储”。对象尽管是文件,它是已被封装的文件(编程中的对象就有封装性的特点),也就是说,在对象存储系统里,你不能直接打开/修改文件,但可以像ftp一样上传文件,下载文件等。另外对象存储没有像文件系统那样有一个很多层级的文件结构,而是只有一个“桶”的概念(也就是存储空间),“桶”里面全部都是对象,是一种非常扁平化的存储方式。其最大的特点就是它的对象名称就是一个域名地址,一旦对象被设置为“公开”,所有网民都可以访问到它;它的拥有者还可以通过REST API的方式访问其中的对象。因此,对象存储最主流的使用场景,就是存储网站、移动app等互联网/移动互联网应用的静态内容(视频、图片、文件、软件安装包等等)。
以下是对三种存储形态和存储架构的示意图。