一、数据存储类型

数据存储常见的类型有数据块存储、文件方式存储、对象存储。块存储和文件存储就是通常说的SAN和NAS,而对象存储(Object-based Storage)是一种新的网络存储架构,基于对象存储技术的设备就是对象存储设备(Object-based Storage Device),简称OSD。



1. 块存储

块概念(block):块是指以扇区为基础,一个或多个连续的扇区组成的一个块,也叫物理块。它存在于文件系统和块设备之间。

块存储主要是将裸磁盘空间整个映射给主机使用,在这种方式下,操作系统还需要对挂载的裸硬盘进行分区,格式化后,才能使用,与平常主机内置硬盘的方式没有差别。块存储的主要特点是:主机之间的数据共享困难:因为块存储裸盘映射给主机,需要格式化后使用,所以不同操作系统主机之间无法共享数据。



2. 文件存储

文件级概念:文件级是指文件系统,单个文件可能由于一个或多个逻辑块组成,且逻辑块之间是不连续分布,逻辑块大于或等于物理块整数倍,物理块与文件系统之间的映射关系:扇区->物理块->逻辑块->文件系统。

为了克服数据无法共享的问题,所以有了文件系统。文件存储服务器实现了文件管理功能,即具有文件系统。所以,与块存储不同,主机使用文件存储设备不需要再对文件存储进行格式化。

文件存储最常见的一种方式就是NAS,它是一种网络存储系统,提供文件访问的服务,采用NFS/CIFS等协议,通过TCP/IP进行网络传输。由于采用标准文件协议,在不同主机之间共享数据非常简单,但是由于NAS的协议开销大,延时大,不利于高性能集群和大量小文件存储模式。



3. 对象存储

综上所述,由于块存储和文件存储都存在一定的固有缺陷,但对存储系统的高性能和数据共享的需求不断增加,因此,对象存储应运而生。简单来说,对象存储克服了块存储和文件存储各自的缺点,发扬了它们各自的优点,是一种读写快,又利于共享的存储方式。目前对象存储系统已成为云存储的主流选择,开源系统中有ceph,glusterfs等。

对象存储系统一般由元数据服务器、数据存储服务器和客户端组成。元数据服务器负责管理文件的存储位置、状态等,同时管理数据存储服务器对外提供读写访问功能,数据存储服务器负责文件数据的存储,客户端则负责对外接口访问。



二、DAS/NAS/SAN/对象存储

首先按照服务器类型来分,存储可分为封闭系统的存储和开放系统的存储,封闭系统主要是指大型机,开放系统指基于Windows、UNIX、Linux等操作系统的服务器;开放系统的存储又分为内置存储和外挂存储,开放系统的外挂存储根据连接的方式又分为:直连式存储(Direct-Attached Storage 简称DAS)和网络化存储(Fabric-Attached Storage 简称FAS);开放系统的网络化存储根据传输协议又分为:网络附加存储(Network-Attached Storage 简称NAS)和存储区域网络(Storage Area Network 简称SAN)。



1. DAS

DAS(Direct Attached Storage)即“直接连接存储”,是指将外置存储设备通过连接线缆,直接连接到一台计算机上。DAS不算是网络存储,因为只有它所挂载的主机才可访问它。也就是说,服务器发生故障时,连接在服务器上的DAS存储设备中的数据暂时不能被存取。

DAS这种存储方式与我们普通的PC存储架构一样,外部存储设备都是直接挂载在服务器内部总线上,采用SCSI技术,或者FC技术,数据存储设备是整个服务器结构的一部分,在这种情况下往往是数据和操作系统都未分离。

DAS这种直连方式,能够解决单台服务器的存储空间扩展、高性能传输需求。DAS存储更多是依赖服务器主机操作系统进行数据的IO读写和存储维护管理,其本身是硬件的堆叠,不带有任何存储操作系统,数据备份和恢复要求占用服务器主机资源(包括CPU,系统IO等)。直连式存储的数据量越大,备份和恢复的时间就越长,对服务器硬件的依赖性和影响就越大。



2. NAS

NAS(Network Attached Storage)网络附加存储,一种网络存储系统,提供文件访问的服务。简单讲,NAS就是通过网络共享出来的文件系统,其共享的协议如NFS、CIFS、FTP、HTTP等,通过TCP/IP进行网络传输,是文件系统处于网络上的远端的存储系统。由于其文件系统运行在存储服务器上,由文件系统实现了命名空间、存储空间等管理,可以保障文件的共享,成为其最显著的优点。但也由于这些管理的开销,导致了NAS的性能、扩展性相对较弱,成为了NAS的劣势,简单来说NAS就是一台在网络上提供文档共享服务的网络存储服务器。



3. SAN

SAN(Storage Area Network)存储局域网络,一种专用网络连接存储设备,位于主机服务器的后端,主机之间可通过存储网络来共享存储空间,是一个集中式管理的高速存储网络。目前的SAN存储有两种:一是基于光纤通道的FC SAN;二是基于以太网的IP SAN(也就是常说的iSCSI),都是将存储系统以块的方式提供给网络上其他应用。SAN的概念是允许存储设备和处理器(服务器)之间建立直接的高速网络连接。其高速网络、直接块级访问保证了SAN的高性能,但由于应用服务器运行文件系统,所以块设备无法直接给其他应用提供共享能力,限制了其应用场景。



4. 对象存储

对象存储系统是综合了NAS和SAN的优点,同时又具有SAN的高速直接访问和NAS的数据共享等优势,提供了高可靠性、跨平台以及安全的数据空想的存储体系结构。

对象存储结构的核心是将数据通路(数据读或写)和控制通路(元数据)分离,并且基于对象存储设备(Object-based Storage Device)构建存储系统,每个对象存储设备具有一定的智能,能够自动管理其上的数据分布。

对象存储的典型架构如上图所示,由对象、元数据服务器、对象存储设备(OSD)、对象存储系统的客户端通过互联网络组成。元数据服务器和OSD为客户端提供元数据服务和数据服务,客户端对外接口呈现为对象存储系统。对象存储系统将元数据和数据分离,避免NAS提供数据和元数据服务引起的性能瓶颈问题。一方面,元数据服务器只提供元数据服务,其流量压力较小,而数据传输只发生在客户端和OSD存储设备上,充分发挥多OSD的并发IO性能;另一方面,OSD分担了存储系统大量的,面向磁盘一级的元数据管理功能,而这一块内容证实文件系统最主要的管理开销所在,由于分担了这些管理功能,因此元数据服务器不会成为系统的性能瓶颈。

  • 对象

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

  • 对象存储设备

    对象存储设备也叫智能存储设备它有自己的CPU,内存和网络系统,负责管理本地的Object,时对象存储系统的核心。OSD同块设备的不同不在于存储介质,而在于两者提供的访问借口,OSD主要包括数据存储和安全访问功能,OSD使用Object对所保存的数据进行管理。它将数据存放到磁盘的磁道和扇区,将若干磁道和扇区组合起来构成Object,并且通过此Object向外界提供对数据的访问。每个Object同传统的文件相似,使用同文件类似的访问接口,包括Open、Read、Write等。但是两者并不相同,每个Object可能包括若干个文件,也可能是某个文件的一部分,且是独立于操作系统的。除了具体的用户数据外,OSD还记录了每个Object的属性信息,主要是物理视图信息,将这些信息放到OSD上,大大减轻了元数据服务器的负担,增强了整个存储系统的并行访问性能和可扩展性。

 

  • 元数据服务器

    元数据服务器(Metadata Server,MDS)控制client与OSD对象的交互,主要提供以下几个功能

 

    (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的一致性。

  • 对象存储系统的客户端

    为乐有效支持client访问OSD上的对象,需要在计算节点实现对象存储系统的client,通畅提供POSIX文件系统接口,允许应用程序像执行标准的文件系统操作一样。

  • 关键技术

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

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

=============================================

综上所述,对象存储系统可以理解为数据和控制分离,基于智能存储设备提供的数据存储访问能力,具备更好横向容量、性能扩展能力、提供高性能、可共享的数据存储服务的存储系统和架构,其架构的优越性成为大数据存储的最优选择。

 

参考:

http://storage.ctocio.com.cn/281/12110781.shtml