分类:
2012-12-19 15:10:53
原文地址:CEPH:可扩展的高性能分布式文件系统 作者:fireaxe
Client:用户
I/O:输入/输出
MDS:Metadata Cluster Server 元数据簇服务器
OSD:Object Storage Device 对象存储设备
图1:系统架构。
Client通过与OSD的直接通讯实现I/O操作。这一过程有两种操作方式:1. 直接通过Client实例连接到Client;
2. 通过一个文件系统连接到Client。
总览:
CEPH文件系统有三个主要模块:
1. Client:每个Client实例向主机或进程提供一组类似于POSIX的接口。
2. OSD簇:用于存储所有的数据和元数据。
3. 元数据服务簇:协调安全性、一致性与耦合性时,管理命名空间(文件名和目录名),见图1。
CERP之所以使用类似于POSIX的接口,是为了保证接口的扩展性与一致性,便于与应用保持一致,有利于提高系统性能。
这种结构有利于提高扩展性、高效性与可靠性。扩展性需要在各种维度上被考虑到,包括总体存储能力、系统执行能力与每一个Client、目录或文件的性能。我们的目标工作量也许包括了某种极限情况。如,主机同一时刻对某一个文件进行几十万甚至几百万次的读写,或者在同一目录下同时生成几十万或几百万个文件。通常超级计算机上进行科学运算时会出现这种情况,而这种应用在未来会越来越普遍的出现。更重要的是,我们必须意识到分布式文件系统的工作量天生就是动态的。随着时间的变化,处于活动状态的应用的个数与数据量都会快速的变化。CEPH在同时达到高性能、考可靠性与搞可行性的同时,通过下面三种基本设计特性实现系统的扩展性:分解的数据域元数据、动态分布式元数据管理、可靠地自动分布式对象管理。
文件IO与性能:
当一个进行打开一个文件时,Client向MDS簇发送一个请求。MDS通过文件系统层级结构把文件名翻译成文件节点(inode),并获得节点号、模式(mode)、大小与其他文件元数据。注意文件节点号与文件意义对应。如果文件存在并可以获得操作权,则MDS通过结构体返回节点号、文件长度与其他文件信息。MDS同时赋予Client操作权(如果该Client还没有的话)。目前操作权有四种,分别通过一个bit表示:读(read)、缓冲读(cache read)、写(write)、缓冲写(buffer write)。在未来,操作权会增加安全关键字,用于client向OSD证明它们可以对数据进行读写(目前的策略是全部client都允许)。之后,包含在文件I/O中的MDS被用于限制管理能力,以保证文件的一致性与语义的合理性。
CEPH产生一组条目来进行文件数据到一系列对象的映射。为了避免任何为文件分配元数据的需要。对象名简单的把文件节点需要与条目号对应起来。对象复制品通过CRUSH(著名的映射函数,参考5.1节)分配给OSD。例如,如果一个或多个Client打开同一个文件进行读操作,一个MDS会赋予他们读与缓存文件内容的能力。通过文件节点号、层级与文件大小,Client可以命名或分配所有包含该文件数据的对象,并直接从OSD簇中读取。任何不存在的对象或字节序列被定义为文件洞或0。同样的。如果Client打开文件进行写操作。它获得使用缓冲写的能力。任何位置上的数据都被写到合适的OSD上的合适的对象中。Client关闭文件时,会自动放弃这种能力,并向MDS提供新的文件大小(写入时的最大偏移)。它重新定义了那些存在的并包含文件数据的对象的集合。