对象存储几个组成部分

对象存储包括几个组成部分:对象(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,不断扩展的性能使其具有很强的竞争力。