存储系统是数据中心IT环境的核心基础架构,是数据中心数据访问的最终承载体。存储在云计算、虚拟化、大数据等相关技术进入后已经发生了巨大的改变,块存储、文件存储、对象存储支撑起多种数据类型的读取;集中式存储已经不再是数据中心的主流存储架构,海量数据的存储访问,需要扩展性、伸缩性极强的分布式存储架构来实现。
在新的IT发展过程中,数据中心建设已经进入云计算时代,企业IT存储环境已经不能简单的从一般性业务运营需求来构建云计算的数据中心存储环境。云计算数据中心的建设不是为了满足某一个业务系统的特殊目标,是为了实现所有业务系统在云平台上能够实现灵活的资源调度、良好的伸缩性、业务扩展的弹性以及快速交付性。因此,是一种自下而上的建设模式(如图1所示),基于云计算平台的建设先于应用系统需求,并不再与具体的业务捆绑,应用系统的建设、扩容、升级主要以软件为主,硬件物理资源向资源池申请,存储系统成为云数据中心的可分配、可调度的资源,在这种情况下,有助于消除瓶颈、提高处理速度,使得业务系统稳定、高效、持久运行。
图1 数据中心的系统建设发展
一、数据中心存储架构的演进
随着数据中心从最初的孤立系统企业级应用,发展到互联网化阶段的大规模云计算服务,其存储架构也不断发展(如图2所示)。从满足关键系统的性能与容量需求,到以虚拟化架构来整合数据中心存储资源,提供按需的存储服务和自动化运维,并进一步向存储系统的智能化、敏捷化演进,应用需求的变化是存储架构不断改进提升的驱动力,竖井式、虚拟化、云存储三种架构并存是当前现状,软件定义存储架构的出现则是后云计算时代的存储发展阶段。
图2 存储系统系统架构和管理演进
竖井式架构
对于早期的系统,在主机架构下,数据和逻辑是一体的,采用面向过程的设计方法,每个应用是一个孤立的系统,维护相对容易,难于相互集成;客户机/服务器架构将逻辑与数据进行了分离(不论C/S还是B/S模式,本质都是客户机/服务器架构),同样采用面向对象的设计方法,每个应用是一个孤立的系统,提供了一定后台集成的能力。这种架构的存储也随着系统的建设形成了自身的独立性,业务平台的硬件设备按照规划期内最大用户数来配置,而在业务初期和业务发展情况难预测的情况下,无法真实评估存储的规模与性能要求,这往往会浪费不少硬件设备资源和空间、动力等资源,并且硬件资源不能灵活调度。 每个业务上线都需要经过软件选型、评估资源、硬件选型、采购和实施等环节,业务上线流程长、时间跨度大,不利于业务发展。
即使是企业数据中心进入云计算时代,大量的应用逐步向云的环境迁移,但因为某些系统独特的技术要求,这种竖井式架构也会长期存在。
存储虚拟化
随着业务发展,数据中心存储不可避免形成大量的异构环境,标准化的管理流程难以实施。存储虚拟化架构实现对不同结构的存储设备进行集中化管理,统一整合形成一个存储池,向服务器层屏蔽存储设备硬件的特殊性,虚拟化出统一的逻辑特性,从而实现了存储系统集中、统一而又方便的管理。使得存储池中的所有存储卷都拥有相同的属性,如性能、冗余特性、备份需求或成本,并实现自动化(如LUN管理)以及基于策略的集中存储管理。
同时,存储资源的自动化管理为用户提供更高层次策略的选择。在存储池中可以定义多种存储工具来代表不同业务领域或存储用户的不同服务等级。另外,还允许用户以单元的方式管理每一存储池内部的存储资源,根据需要添加、删除或改变,同时保持对应用服务器业务系统的透明性。基于策略的存储虚拟化能够管理整个存储基础机构,保持合理分配存储资源,高优先级的应用有更高的存储优先级,使用性能最好的存储,低优先级的应用使用便宜的存储。
云存储架构
云存储架构伴随着大规模云计算的数据时代的到来,将存储作为云的服务提供,不论是企业私有云还是公有云的存储,都着重于大量存储数据的创建和分布,并关注快速通过云获得数据的访问。云存储架构需要支持大规模的数据负载的存储、备份、迁移、传输,同时要求巨大的成本、性能和管理优势。
云存储的技术部署,通过集群应用或分布式文件系统等功能,网络中大量各种不同类型的存储设备通过应用软件集合起来协同工作,共同对外提供数据存储和业务访问功能的一个系统,保证数据的安全性,并节约存储空间。
在大规模系统支撑上,分布式文件系统、分布式对象存储等技术,为云存储的各种应用提供了高度可伸缩、可扩展和极大的弹性支撑和强大的数据访问性能,并且因为这些分布式技术对标准化硬件的支持,使得大规模云存储得以低成本的建设和运维。
云存储不是要取代现有的盘阵,而是为了应付高速成长的数据量与带宽而产生的新形态存储系统,因此云存储在构建时重点考虑的三点:扩容简便、性能易于增长、管理简易。
软件定义存储
软件定义存储当前还未有确切的定义,但软件定义存储代表了一种趋势,即存储架构中软件和硬件的分离,也就是数据层和控制层的分离。对于数据中心用户而言,通过软件来实现对存储资源的管理和调度,如灵活的卷迁移等而无需考虑硬件设备本身。
通过软件定义存储实现存储资源的虚拟化 、抽象化、自动化,能够完整的实现数据中心存储系统的部署、管理、监控、调整等多个要求,使得存储系统具备灵活、自由和高可用等特点。
传统存储的虚拟化、自动化都是由专用的存储设备来实现,许多厂商虚拟化存储都要使用自己定制的设备,或者是在特定服务器上加载的一款软件来支持。软件定义存储将存储服务从存储系统中抽象出来,且可同时向机械硬盘及固态硬盘提供存储服务,软件定义存储消除硬件设备的限制,采用开放的存储架构,提供存储的性能、可管理性,增强存储系统的智能性和敏捷的服务能力,同时软件定义存储也以分布式技术如分布式文件存储、对象存储等大规模可扩展架构为数据基础,对上支持灵活的控制管理,这将是存储领域发展的大趋势。
二、数据中心存储的技术架构
1.数据类型
数据中心的存储数据类型发生了很大的变化,按照结构化程度来分,可以大致分为以下三种。
结构化数据的存储及应用。这是一种用户定义的数据类型,它包含了一系列的属性,每一个属性都有一个数据类型,存储在关系数据库里。一般的业务系统都有大量的结构化数据,一般存储在Oracle或MySQL的等的关系型数据库中,在企业级数据中心,一般在集中存储架构中保存,或成为主存储系统,以块存储访问为主。
非结构化数据的存储及应用。相对于结构化数据而言,不方便用数据库二维逻辑表来表现的数据即称为非结构化数据,包括所有格式的办公文档、文本、图片、XML、HTML、各类报表、图像和音频/视频信息等等,分布式文件系统是实现非结构化数据存储的主要技术。
半结构化数据的存储及应用。介于完全结构化数据(如关系型数据库、面向对象数据库中的数据)和完全无结构的数据(如声音、图像文件等)之间的数据,半结构化数据模型具有一定的结构性,但较之传统的关系和面向对象的模型更为灵活。半结构数据模型完全不基于传统数据库模式的严格概念,这些模型中的数据都是自描述的。由于半结构化数据没有严格的语义定义,所以不适合用传统的关系型数据库进行存储,适合存储这类数据的数据库被称作“NoSQL”数据库。
2.块、文件、对象
块存储
对于存储系统,块读写一般是在存储介质上的数据概念,对于磁盘来说,块数据的存储单元是一个或多个磁盘扇区。因此块级数据的读写,是面向最底层的物理层的,数据操作基于起始扇区编号、操作码(读、写等)、连续扇区数量等,块数据访问接口是SCSI接口。有两种常用的两种块存储方式。
DAS(Direct Attach STorage)。是直接连接于主机服务器的一种储存方式,每一台主机服务器有独立的储存设备,每台主机服务器的储存设备无法互通,需要跨主机存取资料时,必须经过相对复杂的设定,若主机服务器分属不同的操作系统,要存取彼此的数据,更是复杂,有些系统甚至不能存取。通常用在单一网络环境下且数据交换量不大,性能要求不高的环境下,是早期的技术实现。
SAN(Storage Area Network)。是一种用高速网络联接主机服务器与存储设备的一种储存方式,存储系统会位于主机群的后端,它使用高速I/O网络联结方式,以FC、iSCSI、FCOE为当前主流形式。一般而言,SAN应用在对网络速度要求高、对数据的可靠性和安全性要求高、对数据共享的性能要求高的应用环境中,特点是代价高,性能好。它采用SCSI 块I/O的命令集,在SAN网络级的数据访问提供高性能的随机I/O和数据吞吐率,具有高带宽、低延迟的优势,但是由于SAN系统的价格较高,且不具备大规模可扩展性,不能满足大型云计算数据中心的存储需求。
文件存储
对于文件,是“按名存取”的,为了区分磁盘上各个不同的文件,需要给每个文件取一个确定的名字,称为文件名,它用来表示磁盘上的文件,以便于在磁盘上能够“按名查找”这些文件。文件的数据操作基于文件名、偏移量、读写字节数等,但是文件本身并无文件自身的属性、元数据信息。基于对不同环境的文件存储发展了多种形式的文件系统(如表1所示)。
表1 几种文件系统
对象存储
对象是自完备的,包含元数据、数据和属性,可以进行自我管理,对象本身是平等的。也就是说,对象分布在一个平坦的空间中,而非文件系统那样的树状逻辑结构之中,对象存储以ID为基础,根据ID可以直接访问数据,核心是将数据通路(数据读或写)和控制通路(元数据)分离,并且基于对象存储设备(Object-based Storage Device,OSD)构建存储系统,每个对象存储设备具有一定的智能,能够自动管理其上的数据分布。典型代表:Swift、CEPH
从设备级别看块、文件、对象存储(如表2所示)
表2 块、文件、对象存储的设备级访问比较
3.主存储架构
主存储是数据中心的重要存储系统,通常称为Tier1存储,用于存储活动数据(经常需要访问的数据)以及要求高性能、低延迟、高可用性的数据。主存储通常用于支撑数据中心关键任务程序(如数据库、电子邮件和事务处理)。大多数重要程序采用随机数据访问模式,具有不同的访问要求,但是都能产生大量数据,企业可以利用这些数据完成业务。
即使在虚拟领域中出现越来越多的新的数据存储技术,传统的主存储系统仍然普遍。DAS是最早的主存储架构,但SAN已经成为当前使用最广泛、也最为主流的存储架构。而NAS则在数据中心用于文件共享应用,并且也在后端采用了SAN的扩展。在数据中心领域,绝大多数厂商也均以SAN架构来部署面向高级用户的主存储解决方案,以及在此基础上相关的容灾备份方案和存储虚拟化方案(如图3所示)。
图3 数据中心主存储架构
SAN的特点是性能高、稳定性强、价格高。在一些需要集中存储的数据库等实时服务要求高的重要应用领域,依然是当前的主流的技术,在存储应用中,需要集中存储的高端应用由SAN来承担,基于文件的小规模应用由NAS承担更合适,使得SAN与NAS成为互补存储架构出现。
最初的数据中心,大部分数据都是主数据。随着数据的存在时间增长,大量数据会通常移动到次级和三级存储。因此,随着存储各方面技术发展和业务的成熟,数据中心逐步开始寻求能够减少主存储的途径,以充分利用容量,降低整个数据生命周期的成本。
4.分布式文件存储架构
分布式文件系统主要的功能是用于存储文档、图像、视频之类的非结构化数据,该系统建立在网络之上的,以全局方式管理系统资源,它可以任意调度网络中的存储资源,并且调度过程是“透明”的。
分布式存储系统采用可扩展的系统结构,利用多台存储服务器分担存储负荷,利用位置服务器定位存储信息,不但提高了系统的可靠性、可用性和存取效率,还易于扩展。以高性能、高容量为主要特性的分布式存储系统,一般满足以下四个条件:
应用于网络环境中;
单个文件数据分布存放在不同的节点上;
支持多个终端多个进程并发存取;
提供统一的目录空间和访问名称。
HDFS(Hadoop Distributed File System)是开源项目Hadoop的家族成员,是谷歌文件系统GoogleFS(Google File System)的开源实现,以下仅简单介绍HDFS工作模式。
HDFS被设计成适合运行在通用硬件上的分布式文件系统,是一个高度容错性的系统,适合部署在廉价的机器上。HDFS能提供高吞吐量的数据访问,非常适合大规模数据集上的非结构化数据、半结构化应用。运行在HDFS之上的程序有很大量的数据集,典型的HDFS文件大小是GB到TB的级别,因此,HDFS被调整成支持大文件。一个HDFS集群是有一个Namenode和一定数目的Datanode组成(如图4所示):
NameNode(名称节点)是一个或一组中心服务器,是HDFS的中枢,负责管理文件系统的目录名字空间信息(namespace)和客户端对文件的访问,并且管理所有的DataNode;
DataNode(数据节点)在HDFS中负责管理本节点上附带的存储Block(数据块)。在HDFS内部,文件不是放在一块磁盘上,一个文件其实分成多个block(数据块),这些block存储分散在Datanode组成的集群中,NameNode记录block对应在不同的DataNode上的映射关系。
NameNode接受客户端的元数据请求,然后对DataNode发出Block Ops(块操作)指令,文件的创建、删除和复制操作,同时决定block到具体Datanode节点的映射。Datanode在Namenode的管理下进行block的创建、删除和复制。
图4 HDFS经典体系架构图示
HDFS可靠性和性能主要通过数据块的副本来实现,并且HDFS采用一种称之为Rack-aware(机架感知)的策略来改进数据的可靠性、有效性和网络带宽的利用。
在通常副本数为3的情况下,HDFS的策略将一个副本存放在本地机架上,一个副本放在同一个机架上的另一个节点,最后一个副本放在不同机架上的一个节点。在读取时,为了降低整体的带宽消耗和读延时,如果客户端同一个机架上有一个副本,那么就读该副本。
HDFS依然是主从结构,Namenode成为整个系统的瓶颈和关键故障点,因此,众多使用分布式文件系统的用户均在此基础上不断完善其高可用性,比如发展出无中心存储架构。
5.分布式对象存储架构
在对象存储中,存储的不仅是数据,还有与丰富的数据相关的属性信息。系统会给每一个对象分配一个唯一的OID(Object ID)。对象本身是平等的,所有的OID都属于一个平坦的地址空间,而并非文件系统那样的树状逻辑结构。对象存储空间访问对象只通过一个唯一的OID标识即可,不需要复杂的路径结构,没有“路径”他“文件夹”的概念。对象存储架构有以下组成部分。
对象
对象是系统中数据存储的基本单位。一个对象实际上就是文件的数据和一组属性信息(Meta Data)的组合(如图5所示),这些属性信息可以定义基于文件的RAID参数、数据分布和服务质量等;而传统的存储系统中用文件或块作为基本的存储单位,在块存储系统中还需要始终追踪系统中每个块的属性,对象通过与存储系统通信维护自己的属性。在存储设备中,所有对象都有一个对象标识,通过对象标识命令访问该对象。通常有多种类型的对象,存储设备上的根对象标识存储设备和该设备的各种属性,组对象是存储设备上共享资源管理策略的对象集合等。
图5 对象存储数据
对象存储设备(OSD,Object Storage Device)
OSD有自己的CPU、内存、网络和磁盘系统,和块设备的区别不在于存储介质,而在于两者提供的访问接口。OSD的主要功能包括数据存储和安全访问,目前国际上通常采用标准化计算单元结构实现对象存储设备。OSD执行从对象到块的映射,这个动作允许本地实体以最佳方式决定怎样存储一个对象,OSD存储节点不仅具备存储功能,还包括智能化的高级能力。传统的存储驱动只是作为Target响应客户端的I/O请求,而对象存储设备是智能设备,它能同时执行Target和Initiator的功能,支持与其他对象存储设备的通信和协作,如数据分配、复制与恢复。
元数据服务器(MDS ,Metadata Server)
元数据服务器的工作就是管理文件系统的名称空间、控制客户端与OSD对象的交互,缓存和同步分布式元数据。虽然元数据和数据两者都存储在对象存储集群,但两者分别管理,支持可扩展性。
对象存储系统的客户端Client
为了有效支持Client支持访问OSD上的对象,需要在计算节点实现对象存储系统的Client,通常提供POSIX文件系统接口,允许应用程序像执行标准的文件系统操作一样。
在客户端,用户使用文件系统是透明的,Linux通过内核虚拟文件系统交换(VFS)来进行底层的操作访问。终端用户访问大容量的存储系统,无需知道下面聚合成大容量存储池的元数据服务器、监视器、独立的对象存储设备。文件系统的智能化处理分布在节点上,这简化了客户端接口,可以支撑大规模动态扩展能力。
对象存储构筑在标准硬件存储基础设施之上,无需采用RAID(磁盘冗余阵列),通过在软件层面引入一致性散列技术和数据冗余性,牺牲一定程度的数据一致性来达到高可用性和可伸缩性,支持多租户模式、容器和对象读写操作,适合解决互联网的应用场景下非结构化数据存储问题。
与通常的分布式文件系统一样,放入对象存储集群中的文件是条带化的,依据特定的数据分布式算法放入集群节点中。应用程序可以通过RESTful接口与各OSD节点其通信,将对象直接存储在集群中.
以OpenStack中的对象存储组件Swift为例。从Swift的架构与特性来看,除了极高的数据持久性,各个存储的节点完全对等,是对称的系统架构;扩容的时候只需简单的增加机器,扩展性很好;没有主从结构,不存在单节点故障,任意一个节点出现故障时,数据并不会丢失。如图6所示分别表示了上传文件PUT和下载文件GET请求的数据流,两个请求操作的是同一个对象。上传文件时,PUT请求通过负载均衡挑选一台Proxy Server,将请求转发到后者,后者通过查询本地的Ring文件,选择3个不同Zone中的后端来存储这个文件,再给用户返回文件写成功的消息。下载文件时,GET请求也通过负载均衡挑选一台Proxy Server,后者上的Ring文件能查询到这个文件存储在哪三个节点中,然后同时去向后端查询,Proxy Server从中选择一个节点下载文件。
图6 对象存储Swift的部署与文件存取
三、结束语
企业及互联网数据以每年50%的速率在增长,新增数据中结构化数据总量有限,多数为非结构化、半结构化数据,数据中心存储架构随着业务发展需要极强的弹性适应能力,低成本、大容量(海量)扩展、高并发性能是面向大型云数据中心运营存储架构的基本技术属性。如何进行数量庞大且杂乱无章的数据存储与深度应用处理,并迅速提取有价值的信息,形成迅速商业决策成为各类型企业生存基础是今后存储以及围绕存储架构不断衍生的业务发展方向。因此数据存储技术变革方向必然是分布式并行文件系统,并行数据库、高效统一的数据装载及存取,多接口、灵活扩展、多业务承载的解决方案能力是大容量、海量存储技术架构的关键。
核心关注:拓步ERP系统平台是覆盖了众多的业务领域、行业应用,蕴涵了丰富的ERP管理思想,集成了ERP软件业务管理理念,功能涉及供应链、成本、制造、CRM、HR等众多业务领域的管理,全面涵盖了企业关注ERP管理系统的核心领域,是众多中小企业信息化建设首选的ERP管理软件信赖品牌。
转载请注明出处:拓步ERP资讯网http://www.toberp.com/
本文标题:数据中心存储架构