【IT168 评论】高性能计算机体系结构的发展变化,使得性能、可扩展性、安全性、可管理性都会出现瓶颈。而对象存储技术可以轻易突破这种瓶颈。本专题以对象存储技术为引,通过回顾分布式文件系统的发展,并对相关技术进行深入剖析,让读者对分布式文件系统有一个全景式的了解。最后,通过构建Lustre系统的一个实例,让你切实感受到分布式文件系统的巨大威力。
随着网络技术的飞速发展,网络化存储系统逐渐成为主流。网络化存储系统能否成功,必须有效解决以下三个主要问题:第一,提供高性能的存储,在I/O级和数据吞吐率方面能满足成百上千台规模的集群服务器聚合访问需求;第二,提供安全的共享数据访问,便于集群应用程序的编写和存储的负载均衡;第三,提供强大的容错能力,确保存储系统的高可用性。
目前,国际上主流的网络化存储结构主要有存储局域网(SAN,Storage Area Network)和网络附加存储(NAS,Network-attached Storage)。SAN采用交叉开关结构,可为较大数目的结点机和存储设备提供一个快速、可扩展的互连。它采用SCSI块I/O的命令集,通过在磁盘或FC(Fiber Channel)级的数据访问,提供高性能的随机I/O和数据吞吐率,具有高带宽、低延迟的优势,在高性能计算中占有一席之地。如2004年12月,TOP 500排名第二的SGI Columbia就采用基于SAN的CXFS文件系统,实现高性能文件存储。但是,SAN系统的价格较高,且在可扩展性方面仍有一定局限性,随着SAN连接规模的扩大,其安全性也存在着隐患。NAS采用NFS或CIFS命令集访问数据,以文件为传输协议,通过TCP/IP实现网络化存储,支持多个平台间的数据共享,具有可扩展性好、价格便宜、用户易管理等特点。但是,由于NAS的协议开销高、带宽低、延迟大,不利于在高性能I/O集群中应用,因此,通常用于与其他异构系统的互连,如IBM BlueGene通过NFS与外部存储系统互联。
对象存储
对象存储综合了NAS和SAN的优点,同时具有SAN的高速直接访问和NAS的数据共享等优势,提供了具有高性能、高可靠性、跨平台以及安全的数据共享的存储体系结构。
对象存储体系结构
对象存储具有高性能、高可靠性。其组成包括智能存储接口和设备,以及分布的元数据管理。在对象存储系统中,客户端可以直接访问存储设备,减少了数据存储路径中的控制路径。
在对象存储中,使用对象存储设备(Object-based Storage Device,OSD)进行物理的数据存储。OSD是连接到网络上的存储设备。它可以是磁盘、磁带或者其他的存储介质,并具有自我管理功能。
在当前的存储结构中,元数据服务器主要提供两种功能:为客户端提供数据的逻辑视图,包括文件名、目录构成等;为客户端提供物理视图,描述数据在物理介质上的存放。在对象存储中,数据的逻辑视图和物理视图被分开,元数据服务器只负责逻辑视图,物理视图则由OSD自己进行管理。由于逻辑视图只占用了文件服务器10%的元数据负载,因此,这种划分大大减轻了元数据服务器的负担,使得存储系统的扩展成为可能。
对象存储系统的组成
对象存储包括几个组成部分:对象(Object)、OSD、文件系统、元数据服务器(Metadata Server,MDS)和网络连接。Object包含了文件数据以及相关的属性信息,可以进行自我管理。OSD是一个智能设备,是Object的集合。文件系统运行在客户端上,将应用程序的文件系统请求传输到MDS和OSD上。MDS为系统提供元数据、Cache一致性等服务。网络连接将整个系统连接起来。
1.Object
Object是对象存储的基本单元。每个Object是数据和数据属性集的综合体。数据属性可以根据应用的需求进行设置,包括数据分布、服务质量等。在传统的存储中,块设备要记录每个存储数据块在设备上的位置。Object维护自己的属性,从而简化了存储系统的管理任务,增加了灵活性。Object的大小可以不同,可以包含整个数据结构,如文件、数据库表项等。
每个存储设备中的Object可以分为三类,即RootObject、GroupObject、UserObject。每个存储设备都包含一个惟一的RootObject。此Object中包含了存储设备的全局属性,包括GroupObject数目、UserObject数目、服务特性等,由存储设备负责维护。GroupObject对UserObject进行管理,其中包括了一个UserObject列表、最大可用的UserObject数目、当前Group的容量等。GroupObject的默认属性从RootObject中继承而来,所包含的数据是当前可使用的ObjectID。UserObject是存放具体数据的Object类型,每个UserObject都包括用户数据、存储属性和用户属性。UserObject中的用户数据同传统存储系统中的文件数据是相同的。存储属性则用来决定Object在磁盘上的块分布,包括逻辑长度、ObjectID等。用户属性则定义了包括Object拥有者、访问控制列表等属性信息。 2.OSD
OSD是Object-based Storage Device的缩写。每个OSD都是一个智能设备,具有自己的存储介质、处理器、内存以及网络系统等,负责管理本地的Object,是对象存储系统的核心。OSD同块设备的不同不在于存储介质,而在于两者提供的访问接口。
OSD的主要功能包括数据存储和安全访问。
作为存储设备,数据存储是OSD的主要功能。OSD使用Object对所保存的数据进行管理。它将数据存放到磁盘的磁道和扇区,将若干磁道和扇区组合起来构成Object,并且通过此Object向外界提供对数据的访问。每个Object同传统的文件相似,使用同文件类似的访问接口,包括Open、Read、Write等。但是两者并不相同,每个Object可能包括若干个文件,也可能是某个文件的一部分,且是独立于操作系统的。除了具体的用户数据外,OSD还记录了每个Object的属性信息,主要是物理视图信息。将这些信息放到OSD上,大大减轻了元数据服务器的负担,增强了整个存储系统的并行访问性能和可扩展性。
当客户端对Object的请求到达后,OSD对请求进行解释,并读取相关数据,再返回给客户端。在进行数据读写过程中,客户端同OSD进行直接通信,获取存储的数据,通信过程不需要额外服务的参与。如果文件系统将数据分布到多个OSD上,那么客户端在操作数据时就可以在多个OSD上并发执行,从而得到较高的性能。同样,当多个客户端进行访问时,由于多个OSD的存在,仍然可以提供较高的吞吐率,实现存储的可扩展性。客户端和OSD之间的直接并发通信,使整个系统可以得到高性能和高可扩展性。
3.文件系统
OSD只是提供了Object的数据访问接口,而应用程序通常不直接使用Object接口。因此,对于对象存储系统来说,必须提供一种标准的文件访问接口。这种接口具有和通用文件系统相同的访问方式,同时为了提高性能,也具有对数据的Cache功能和文件的条带功能。
现有的应用对数据的访问大部分都是通过POSIX文件方式进行的,因此,对象存储系统提供给用户的也是标准的POSIX文件访问接口。文件系统对用户的文件操作进行解释,并在元数据服务器和OSD间通信,完成所请求的操作。以读为例,客户端发出读请求以后,文件系统首先向元数据服务器发送请求,获取要读取的数据所在的OSD,然后直接向每个OSD发送数据读取请求;OSD得到请求以后,判断要读取的Object,并根据此Object要求的认证方式,对客户端进行认证,如果此客户端得到授权,则将Object的数据返回给客户端;文件系统收到OSD返回的数据以后,读操作完成。
尽管存储系统的性能已经得到了较高提升,但和内存的缓冲器相比,其速度仍然较低。因此,文件系统中的Cache就成为提高性能的重要途径。此外,由于并行访问的特性,文件系统必须维护不同客户端上Cache的一致性,保证文件系统的数据一致。###NextPage###
4.元数据服务器
元数据服务器(Metadata Server,MDS)为客户端提供元数据,主要是文件的逻辑视图,包括文件与目录的组织关系、每个文件所对应的OSD等。在传统的文件系统中,元数据由本机或者文件服务器负责维护,每次对数据块的操作都要获取元数据。当操作频繁发生时,元数据操作就成为整个系统的瓶颈,限制了性能的扩展。这一现象在NAS系统中非常明显。在对象存储系统中,由于每次操作只有一次对元数据的访问,具体的数据传输都由OSD和客户端通过直接连接进行,大大减少了元数据的操作,降低了元数据服务器的负担,从而为系统的扩展提供了可能性。
在对象存储系统中,为了提高性能,客户端采用Cache来缓存数据。当多个客户端同时访问某些数据时,MDS提供分布的锁机制来确保Cache的一致性。
为了增强系统的安全性,MDS为客户端提供认证方式。OSD将依据MDS的认证来决定是否为客户端提供服务。
此外,尽管对象存储体系结构降低了MDS的负担,但是当客户端数据扩展到数以千计时,其访问量仍然是十分巨大的,单一的MDS结构就不能满足整个系统的操作需求了。因此,将MDS扩展成为集群方式,提供并行的元数据访问成了提高整个系统可用性的必由之路。
5.网络连接
网络连接是对象存储系统的重要组成部分。它将客户端、MDS和OSD连接起来,构成了一个完整的系统。网络技术的不断进步使网络连接的方式有了更多选择。千兆以太网具有性能高、性价比高、易于管理等优点,因此成了构建对象存储系统的首选。随着光纤通道技术的成熟及成本的降低,应用也越来越广泛。此外,各种新的网络技术也不断出现,如Myrinet、Infiniband等,都具有较高的性能。尤其是Infiniband,不断扩展的性能使其具有很强的竞争力。
对象存储的特性
OSD的结构特性使其在处理高性能计算环境中的存储请求时具有较大优势,主要体现在以下几方面。
● 性能优势。存储体系结构的最大竞争力在于存储性能。对象存储由于其存储设备的智能化以及访问的并行化,可以最大限度地利用网络的带宽,提高应用的存储能力。
● 存储设备的智能化。Object的自我管理功能大大增强了存储设备的智能化,降低了整个系统的管理负担,使其更高效。
● 数据的共享更容易。在对象存储系统中,任何客户端都可以通过访问提供的标准文件接口,访问存储设备上的数据,其Cache策略保证了客户端访问数据的一致性,使得文件级的数据共享更容易。
● 管理更方便。OSD的自我管理减少了系统管理员的工作量,提高了管理质量。管理员只需要关注存储系统的逻辑视图,不需要知道设备的细节。此外,OSD的智能化使其可对应用访问模式进行统计,并根据统计结果更有效地组织Object,提高设备的空间利用效率和访问效率。
● 更好的安全性。同块设备不同,Object可利用自身的属性对用户访问进行验证,只有通过验证的请求才能执行。
相关链接
对象存储实例
对象存储的标准最初来自于卡内基梅隆大学(Carnegie Mellon University,CMU)并行数据实验室(Parallel Data Lab,PDL)1995年到1999年的“Network Attached Secure Disks”(NASD)项目。该项目的目标是“使用商业存储设备构建高带宽、低延迟、安全、可扩展的存储系统”。1997年,CMU在美国存储工业联盟(National Storage Industry Consortium)发起一个工作组。该组织包括了惠普、IBM、希捷、StorageTek以及昆腾等厂商。该工作组在CMU的NASD研究基础上,于1999年成立了全球网络存储工业协会(Sotrage Networking Industry Association,SNIA)的对象存储设备(Object Storage Device)工作组,发布了ANSI的X3 T10标准。从此以后,SNIA的OSD工作组促进了对象存储设备接口的变革,众多厂商纷纷在其实验室中开展了对该技术的研究。尽管OSD的标准正在制定中,但是一些厂商已经开始了对象存储设备的生产,如IBM将在其StorageTank中使用对象存储技术,BlueArc、Data Direct也开始生产使用对象存储接口的设备。
存储的智能化也是学术研究的热点。CMU的PDL在继续研究self-存储,其中包括self-managing、self-configuring、self-organizing、self-tuning、self-healing。这种存储的self-特性代表了存储的智能化,操作系统可以利用这些特性获取更好的存储性能。威斯康星大学的研究人员采用了另外一种方式,试图分析智能磁盘系统的语义,学习文件系统的数据结构。
在CMU NASD项目的基础上,诞生了两个基于对象存储设备的分布式文件系统Lustre和Panasas。两个项目的创始人Peter J.Braam和Garth Gibson都曾经参与该项目。
Lustre
Lustre是一个开放源码的、基于对象存储的高性能分布式文件系统,由Cluster File System(CFS)公司研发,已经开放的版本为1.2.4,在其官方网站可以自由下载。美国的三大实验室(Los Alamos、Lawrence Livermore、Sandia National Laboratories)都部署了该系统。Lustre运行在商业设备上,使用基于对象的磁盘(Object-based Disks,OBD)存储数据,元数据服务器(MDS)为整个文件系统提供元数据服务。Lustre由三个部分组成,即客户端、MDS和OST(Object Storage Ttarget)。其中,OST负责管理保存在OBD上的数据,并为客户端的访问提供数据服务,MDS为客户端提供元数据服务和分布式锁服务。对于客户端而言,Lustre是一个透明的文件系统,无需知道具体数据所在的位置,可以透明地访问整个文件系统中的数据。客户端同OST进行文件数据的交互,包括文件数据的读写、对象属性的改变等;同MDS进行元数据的交互,包括目录管理、命名空间管理等。三个组成部分除了各自的独特功能以外,相互之间共享诸如锁、请求处理、消息传递等模块。Lustre是一个高度模块化的系统,三个组成部分可以在一个节点上工作,也可以在不同的节点上工作。
Panasas
同Lustre一样,Panasas也是一个对象存储系统,应用于大规模的Linux集群环境。该系统由OSD、Panasas文件系统和MDS组成。数据保存在OSD上,每个OSD由两个SATA驱动器组成。Panasas文件系统运行在客户端上,为应用程序提供文件系统接口,将应用程序的文件请求发送给MDS和OSD,并将MDS和OSD返回的数据交给应用程序。Panasas文件系统在客户端将需要写到OSD的数据进行RAID分带,将包括校验数据在内的所有分带分别写入各个OSD,从而使数据的存储更可靠。Panasas的MDS也为文件系统提供了元数据访问、文件和目录访问管理,以及客户端上数据的Cache一致性。