Chinaunix首页 | 论坛 | 博客
  • 博客访问: 317447
  • 博文数量: 42
  • 博客积分: 451
  • 博客等级: 下士
  • 技术积分: 890
  • 用 户 组: 普通用户
  • 注册时间: 2011-03-03 18:24
文章分类

全部博文(42)

文章存档

2015年(1)

2013年(9)

2012年(19)

2011年(13)

分类: 服务器与存储

2012-07-26 16:01:38

 Ceph-A Scalable, High-Performance Distributed File System.doc  


1Ceph文件系统架构。客户可以直接与OSD进行IO交互操作。

每个进程都可以直接与客户连接或者与挂载的文件系统交互。

概述:

   

    Ceph文件系统包含三个主要部分(见图1):

1、客户端:客户端要求能够提供类POSIX文件系统接口的能力(通俗来说,就是能与类POSIX文件系统进行交互操作的客户端);

2、对象存储设备(OSD)集群:存储所有数据和元数据;

3、元数据服务器(MDS)集群:管理命名空间(文件名称和目录),保证数据的安全性和一致性。

之所以成Ceph提供的接口是类POSIX,是因为它能适当地扩展接口以及有选择性地放宽一致性语义限制(所谓一致性语义,就是多个用户同时存取一个文件时需要的策略,比如两个用户同时对某文件写入不同的数据,就会产生数据的不一致,一致性语义就是要解决这类问题——译者注),从而获得更好的应用体验、提升系统性能。

Ceph主要的目标还是可扩展性(可存储几百个PB的数据)、高性能和高可靠性。可扩展性需从多方面考虑:整体存储容量;系统的吞吐量;各个客户端、目录和文件的性能。我们的工作负载是:几千台主机同一时刻对同一个文件进行几百万次并发读写,或者同时在某个目录下创建文件。这种只有在超级计算机集群进行科学运算时才出现的场景,将会在未来普遍出现。更重要的是我们认识到分布式文件系统的负载能力是动态的:随着时间的推移,实际应用中数据和元数据的组织结构的不断改进,分布式文件系统的负载能力将会有很大的提高。Ceph通过以下三个基本的设计特性,来保证高性能、高可靠性和高可用性的同时,还能保证可扩展性:将数据和元数据分开存储,动态分布元数据管理,以及可靠的自动(reliable autonomic)分布式对象存储。


文件IO和用户权限


当一个进程打开一个文件,客户端会向元数据服务器(MDS)集群发送一个请求。MDS通过文件系统目录结构将文件名转换为文件节点,此节点包含一个唯一的节点号、文件拥有者、文件模式(mode)、文件大小以及其他文件的元数据信息。如果文件存在并且允许访问,则MDS返回节点号、文件大小和一些文件拆分成对象的策略的信息(对象存储设备基于对象存储数据,即将一个文件分割成多份,装在不同的存储设备上,这样的好处是可以成倍成倍地提高读写文件速度。对于用户来说,看到的还是一个完整的文件,文件的分割、重组策略完全由存储服务器集群决定——译者注)。MDS还可以给客户指定一些权限,允许客户执行某些操作,目前这些权限包括四个方面:读、读缓存、写、写缓存,由4个比特指定。将来这种权限会包括密钥,用于客户端在授权的情况下才能读写数据(当前Ceph标准信任所有用户)。然后,MDS介入文件IO的管理,解决数据一致性问题。

Ceph掌握一系列的将文件分割并映射为对象的策略。为免除对记录文件位置的元数据的需求,对象名称简单地设为文件节点号加上分块(stripe)号。对象replicas通过CRUSH——一个闻名全球的映射函数(见5.1小节)——分配给OSD集群。例如,一个或多个用户读取某一个文件,MDS就给他们分配读文件以及读缓存信息的权限。如果用户拥有文件节点号、文件层次、文件大小的信息,就能获取该文件对应的所有对象的位置,就能直接从OSD集群读取该文件信息。任何不存在的对象或者字节序列,都被视为“黑洞”或zero

当用户打开一个文件进行写操作时,Ceph提供用户写文件以及写缓存的权限,文件中产生的新数据会被保存在合适的OSD与合适的对象中。用户关闭文件后,放弃Ceph提供的权限,并且将新文件的大小的数据提供给MDS,刷新该文件对应的对象组信息。

阅读(6568) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~