数据存储常见的类型有数据块存储、文件方式存储、对象存储。块存储和文件存储就是通常说的SAN和NAS,而对象存储(Object-based Storage)是一种新的网络存储架构,基于对象存储技术的设备就是对象存储设备(Object-based Storage Device),简称OSD。
块概念(block):块是指以扇区为基础,一个或多个连续的扇区组成的一个块,也叫物理块。它存在于文件系统和块设备之间。
块存储主要是将裸磁盘空间整个映射给主机使用,在这种方式下,操作系统还需要对挂载的裸硬盘进行分区,格式化后,才能使用,与平常主机内置硬盘的方式没有差别。块存储的主要特点是:主机之间的数据共享困难:因为块存储裸盘映射给主机,需要格式化后使用,所以不同操作系统主机之间无法共享数据。
文件级概念:文件级是指文件系统,单个文件可能由于一个或多个逻辑块组成,且逻辑块之间是不连续分布,逻辑块大于或等于物理块整数倍,物理块与文件系统之间的映射关系:扇区->物理块->逻辑块->文件系统。
为了克服数据无法共享的问题,所以有了文件系统。文件存储服务器实现了文件管理功能,即具有文件系统。所以,与块存储不同,主机使用文件存储设备不需要再对文件存储进行格式化。
文件存储最常见的一种方式就是NAS,它是一种网络存储系统,提供文件访问的服务,采用NFS/CIFS等协议,通过TCP/IP进行网络传输。由于采用标准文件协议,在不同主机之间共享数据非常简单,但是由于NAS的协议开销大,延时大,不利于高性能集群和大量小文件存储模式。
综上所述,由于块存储和文件存储都存在一定的固有缺陷,但对存储系统的高性能和数据共享的需求不断增加,因此,对象存储应运而生。简单来说,对象存储克服了块存储和文件存储各自的缺点,发扬了它们各自的优点,是一种读写快,又利于共享的存储方式。目前对象存储系统已成为云存储的主流选择,开源系统中有ceph,glusterfs等。
对象存储系统一般由元数据服务器、数据存储服务器和客户端组成。元数据服务器负责管理文件的存储位置、状态等,同时管理数据存储服务器对外提供读写访问功能,数据存储服务器负责文件数据的存储,客户端则负责对外接口访问。
首先按照服务器类型来分,存储可分为封闭系统的存储和开放系统的存储,封闭系统主要是指大型机,开放系统指基于Windows、UNIX、Linux等操作系统的服务器;开放系统的存储又分为内置存储和外挂存储,开放系统的外挂存储根据连接的方式又分为:直连式存储(Direct-Attached Storage 简称DAS)和网络化存储(Fabric-Attached Storage 简称FAS);开放系统的网络化存储根据传输协议又分为:网络附加存储(Network-Attached Storage 简称NAS)和存储区域网络(Storage Area Network 简称SAN)。
DAS(Direct Attached Storage)即“直接连接存储”,是指将外置存储设备通过连接线缆,直接连接到一台计算机上。DAS不算是网络存储,因为只有它所挂载的主机才可访问它。也就是说,服务器发生故障时,连接在服务器上的DAS存储设备中的数据暂时不能被存取。
DAS这种存储方式与我们普通的PC存储架构一样,外部存储设备都是直接挂载在服务器内部总线上,采用SCSI技术,或者FC技术,数据存储设备是整个服务器结构的一部分,在这种情况下往往是数据和操作系统都未分离。
DAS这种直连方式,能够解决单台服务器的存储空间扩展、高性能传输需求。DAS存储更多是依赖服务器主机操作系统进行数据的IO读写和存储维护管理,其本身是硬件的堆叠,不带有任何存储操作系统,数据备份和恢复要求占用服务器主机资源(包括CPU,系统IO等)。直连式存储的数据量越大,备份和恢复的时间就越长,对服务器硬件的依赖性和影响就越大。
NAS(Network Attached Storage)网络附加存储,一种网络存储系统,提供文件访问的服务。简单讲,NAS就是通过网络共享出来的文件系统,其共享的协议如NFS、CIFS、FTP、HTTP等,通过TCP/IP进行网络传输,是文件系统处于网络上的远端的存储系统。由于其文件系统运行在存储服务器上,由文件系统实现了命名空间、存储空间等管理,可以保障文件的共享,成为其最显著的优点。但也由于这些管理的开销,导致了NAS的性能、扩展性相对较弱,成为了NAS的劣势,简单来说NAS就是一台在网络上提供文档共享服务的网络存储服务器。
SAN(Storage Area Network)存储局域网络,一种专用网络连接存储设备,位于主机服务器的后端,主机之间可通过存储网络来共享存储空间,是一个集中式管理的高速存储网络。目前的SAN存储有两种:一是基于光纤通道的FC SAN;二是基于以太网的IP SAN(也就是常说的iSCSI),都是将存储系统以块的方式提供给网络上其他应用。SAN的概念是允许存储设备和处理器(服务器)之间建立直接的高速网络连接。其高速网络、直接块级访问保证了SAN的高性能,但由于应用服务器运行文件系统,所以块设备无法直接给其他应用提供共享能力,限制了其应用场景。
对象存储系统是综合了NAS和SAN的优点,同时又具有SAN的高速直接访问和NAS的数据共享等优势,提供了高可靠性、跨平台以及安全的数据空想的存储体系结构。
对象存储结构的核心是将数据通路(数据读或写)和控制通路(元数据)分离,并且基于对象存储设备(Object-based Storage Device)构建存储系统,每个对象存储设备具有一定的智能,能够自动管理其上的数据分布。
对象存储的典型架构如上图所示,由对象、元数据服务器、对象存储设备(OSD)、对象存储系统的客户端通过互联网络组成。元数据服务器和OSD为客户端提供元数据服务和数据服务,客户端对外接口呈现为对象存储系统。对象存储系统将元数据和数据分离,避免NAS提供数据和元数据服务引起的性能瓶颈问题。一方面,元数据服务器只提供元数据服务,其流量压力较小,而数据传输只发生在客户端和OSD存储设备上,充分发挥多OSD的并发IO性能;另一方面,OSD分担了存储系统大量的,面向磁盘一级的元数据管理功能,而这一块内容证实文件系统最主要的管理开销所在,由于分担了这些管理功能,因此元数据服务器不会成为系统的性能瓶颈。
对象(Object)是对象存储的基本单元,一个对象实际上就是文件的数据和一组属性信息(Meta data)的组合。这些属性可以定义基于文件的RAID参数,数据分布和服务质量等。而传统的存储系统中用文件或块作为基本的存储单位,在块存储系统中还需要始终追踪系统中每个块的属性,对象通过与存储系统通信维护自己的属性,从而简化了存储系统的管理任务,增加了灵活性。在存储设备中,所有对象都有一个对象标识,通过对象标识命令访问该对象。通常有多种类型的对象,存储设备上的根对象标识存储设备和该设备的各种属性,组对象是存储设备上共享资源管理策略的对象集合等。Object的大小可以不同,可以包含整个数据结构,如文件、数据库表项等。
(1)对象存储访问:为客户端提供元数据,主要是文件的逻辑视图,包括文件与目录的组织关系,每个文件所对应的OSD等。允许Client直接访问对象,MDS为client提供访问该文件所含对象的能力,OSD在接收到每个请求时将先验证该能力,然后才可以访问。
(2)文件目录访问管理:MDS在存储系统上构建一个文件结构,包括限额控制、目录和文件的创建和删除、访问控制等。
(3)client cache一致性
为乐提高client性能,在对象存储系统设计时通畅支持client方的cache。由于引入client的cache,带来了cache的一致性文件,MDS支持基于client的文件cache。当cache的文件发生改变时,将通知client刷新cache,从而防止cache不一致引发的问题。当多个客户端同时访问某些数据时,MDS提供分布的锁机制来确保cache的一致性。
(2)并发数据访问:对象存储体系结构定义了一个新的,更加智能话的磁盘接口OSD,OSD是雨网络连接的设备,它自身包含存储介质,如磁盘或磁带,并具有足够的智能可以管理本地存储的数据,计算节点直接与OSD通信,访问它存储的数据。由于OSD具有智能,因此不需要文件服务器的介入。如果将文件系统的数据分布在多个OSD上,则聚合I/O速率和数据吞吐率讲线性增长,对绝大多数Linux集群应用来说,持续的I/O聚合带宽和吞吐率对较多数目的计算节点是非常重要的。对象存储结构提供的性能是目前其他存储结构难以达到的。
=============================================
综上所述,对象存储系统可以理解为数据和控制分离,基于智能存储设备提供的数据存储访问能力,具备更好横向容量、性能扩展能力、提供高性能、可共享的数据存储服务的存储系统和架构,其架构的优越性成为大数据存储的最优选择。
参考:
http://storage.ctocio.com.cn/281/12110781.shtml
http://blog.csdn.net/liuaigui/article/details/17973039