http://limu713.blog.163.com/blog/static/15086904201222024847744/css
http://www.dostor.com/article/2012-12-27/7887715.shtmlhtml
块存储和文件存储是咱们比较熟悉的两种主流的存储类型,而对象存储(Object-based Storage)是一种新的网络存储架构,基于对象存储技术的设备就是对象存储设备(Object-based Storage Device)简称OSD。node
首先,咱们介绍这两种传统的存储类型。一般来说,全部磁盘阵列都是基于Block块的模式,而全部的NAS产品都是文件级存储。swift
一、块存储后端
如下列出的两种存储方式都是块存储类型:安全
1) DAS(Direct Attach STorage):是直接链接于主机服务器的一种储存方式,每一台主机服务器有独立的储存设备,每台主机服务器的储存设备没法互通,须要跨主机存取资料时,必须通过相对复杂的设定,若主机服务器分属不一样的操做系统,要存取彼此的资料,更是复杂,有些系统甚至不能存取。一般用在单一网络环境下且数据交换量不大,性能要求不高的环境下,能够说是一种应用较为早的技术实现。服务器
2)SAN(Storage Area Network):是一种用高速(光纤)网络联接专业主机服务器的一种储存方式,此系统会位于主机群的后端,它使用高速I/O 联结方式, 如 SCSI, ESCON 及 Fibre- Channels。通常而言,SAN应用在对网络速度要求高、对数据的可靠性和安全性要求高、对数据共享的性能要求高的应用环境中,特色是代价高,性能好。例如电信、银行的大数据量关键应用。它采用SCSI 块I/O的命令集,经过在磁盘或FC(Fiber Channel)级的数据访问提供高性能的随机I/O和数据吞吐率,它具备高带宽、低延迟的优点,在高性能计算中占有一席之地,可是因为SAN系统的价格较高,且可扩展性较差,已不能知足成千上万个CPU规模的系统。网络
二、文件存储架构
一般,NAS产品都是文件级存储。 NAS(Network Attached Storage):是一套网络储存设备,一般是直接连在网络上并提供资料存取服务,一套 NAS 储存设备就如同一个提供数据文件服务的系统,特色是性价比高。例如教育、政府、企业等数据存储应用。分布式
它采用NFS或CIFS命令集访问数据,以文件为传输协议,经过TCP/IP实现网络化存储,可扩展性好、价格便宜、用户易管理,如目前在集群计算中应用较多的NFS文件系统,但因为NAS的协议开销高、带宽低、延迟大,不利于在高性能集群中应用。
下面,咱们对DAS、NAS、SAN三种技术进行比较和分析:
表格 1 三种技术的比较
针对Linux集群对存储系统高性能和数据共享的需求,国际上已开始研究全新的存储架构和新型文件系统,但愿能有效结合SAN和NAS系统的优势,支持直接访问磁盘以提升性能,经过共享的文件和元数据以简化管理,目前对象存储系统已成为Linux集群系统高性能存储系统的研究热点,如Panasas公司的Object Base Storage Cluster System系统和Cluster File Systems公司的Lustre等。下面将详细介绍对象存储系统。
三、对象存储
整体上来说,对象存储同兼具SAN高速直接访问磁盘特色及NAS的分布式共享特色。
核心是将数据通路(数据读或写)和控制通路(元数据)分离,而且基于对象存储设备(Object-based Storage Device,OSD)构建存储系统,每一个对象存储设备具备必定的智能,可以自动管理其上的数据分布。
对象存储结构组成部分(对象、对象存储设备、元数据服务器、对象存储系统的客户端):
3.一、对象
对象是系统中数据存储的基本单位,一个对象实际上就是文件的数据和一组属性信息(Meta Data)的组合,这些属性信息能够定义基于文件的RAID参数、数据分布和服务质量等,而传统的存储系统中用文件或块做为基本的存储单位,在块存储系统中还须要始终追踪系统中每一个块的属性,对象经过与存储系统通讯维护本身的属性。在存储设备中,全部对象都有一个对象标识,经过对象标识OSD命令访问该对象。一般有多种类型的对象,存储设备上的根对象标识存储设备和该设备的各类属性,组对象是存储设备上共享资源管理策略的对象集合等。
3.二、对象存储设备
对象存储设备具备必定的智能,它有本身的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不一致引起的问题。
3.四、对象存储系统的客户端Client
为了有效支持Client支持访问OSD上的对象,须要在计算节点实现对象存储系统的Client,一般提供POSIX文件系统接口,容许应用程序像执行标准的文件系统操做同样。
四、GlusterFS 和对象存储
GlusterFS是目前作得最好的分布式存储系统系统之一,并且已经开始商业化运行。可是,目前GlusterFS3.2.5版本还不支持对象存储。若是要实现海量存储,那么GlusterFS须要用对象存储。值得高兴的是,GlusterFS最近宣布要支持对象存储。它使用openstack的对象存储系统swift的上层PUT、GET等接口,支持对象存储。