Ubuntu 12.04 Ceph分布式文件系统之概述

1、   ceph文件系统概述node

Ceph 最初是一项关于存储系统的 PhD 研究项目,由 Sage Weil University of California, Santa CruzUCSC)实施。linux

Ceph 是开源分布式存储,也是主线 Linux 内核(2.6.34)的一部分。算法

1)          Ceph 架构

Ceph 生态系统能够大体划分为四部分(见图 1):客户端(数据用户),元数据服务器(缓存和同步分布式元数据),一个对象存储集群(将数据和元数据做为对象存储,执行其余关键职能),以及最后的集群监视器(执行监视功能)。缓存

 

1 Ceph 生态系统安全

如图 1 所示,客户使用元数据服务器,执行元数据操做(来肯定数据位置)。元数据服务器管理数据位置,以及在何处存储新数据。值得注意的是,元数据存储在一个存储 集群(标为元数据 I/O”)。实际的文件 I/O 发生在客户和对象存储集群之间。这样一来,更高层次的 POSIX 功能(例如,打开、关闭、重命名)就由元数据服务器管理,不过 POSIX 功能(例如读和写)则直接由对象存储集群管理。服务器

另外一个架构视图由图 2 提供。一系列服务器经过一个客户界面访问 Ceph 生态系统,这就明白了元数据服务器和对象级存储器之间的关系。分布式存储系统能够在一些层中查看,包括一个存储设备的格式(Extent and B-tree-based Object File System [EBOFS] 或者一个备选),还有一个设计用于管理数据复制,故障检测,恢复,以及随后的数据迁移的覆盖管理层,叫作 Reliable Autonomic Distributed Object StorageRADOS)。最后,监视器用于识别组件故障,包括随后的通知。架构

 

2 ceph架构视图app

2)          Ceph 组件

了解了 Ceph 的概念架构以后,您能够挖掘到另外一个层次,了解在 Ceph 中实现的主要组件。Ceph 和传统的文件系统之间的重要差别之一就是,它将智能都用在了生态环境而不是文件系统自己。异步

3 显示了一个简单的 Ceph 生态系统。Ceph Client Ceph 文件系统的用户。Ceph Metadata Daemon 提供了元数据服务器,而 Ceph Object Storage Daemon 提供了实际存储(对数据和元数据二者)。最后,Ceph Monitor 提供了集群管理。要注意的是,Ceph 客户,对象存储端点,元数据服务器(根据文件系统的容量)能够有许多,并且至少有一对冗余的监视器。那么,这个文件系统是如何分布的呢?分布式

 

3简单的 Ceph 生态系统

3)           Ceph 客户端

由于 Linux 显示文件系统的一个公共界面(经过虚拟文件系统交换机 [VFS]),Ceph 的用户透视图就是透明的。管理员的透视图确定是不一样的,考虑到不少服务器会包含存储系统这一潜在因素(要查看更多建立 Ceph 集群的信息,见 参考资料 部分)。从用户的角度看,他们访问大容量的存储系统,殊不知道下面聚合成一个大容量的存储池的元数据服务器,监视器,还有独立的对象存储设备。用户只是简单地看到一个安装点,在这点上能够执行标准文件 I/O

Ceph 文件系统或者至少是客户端接口 Linux 内核中实现。值得注意的是,在大多数文件系统中,全部的控制和智能在内核的文件系统源自己中执行。可是,在 Ceph 中,文件系统的智能分布在节点上,这简化了客户端接口,并为 Ceph 提供了大规模(甚至动态)扩展能力。

Ceph 使用一个有趣的备选,而不是依赖分配列表(将磁盘上的块映射到指定文件的元数据)。Linux 透视图中的一个文件会分配到一个来自元数据服务器的 inode numberINO),对于文件这是一个惟一的标识符。而后文件被推入一些对象中(根据文件的大小)。使用 INO object numberONO),每一个对象都分配到一个对象 IDOID)。在 OID 上使用一个简单的哈希,每一个对象都被分配到一个放置组。放置组(标识为 PGID)是一个对象的概念容器。最后,放置组到对象存储设备的映射是一个伪随机映射,使用一个叫作 Controlled Replication Under Scalable HashingCRUSH)的算法。这样一来,放置组(以及副本)到存储设备的映射就不用依赖任何元数据,而是依赖一个伪随机的映射函数。这种操做是理想的,由于它把存储的开销最小化,简化了分配和数据查询。

分配的最后组件是集群映射。集群映射 是设备的有效表示,显示了存储集群。有了 PGID 和集群映射,您就能够定位任何对象。

4)          Ceph 元数据服务器

元数据服务器(cmds)的工做就是管理文件系统的名称空间。虽然元数据和数据二者都存储在对象存储集群,但二者分别管理,支持可扩展性。事实上,元数据在一个元数据服务器集群上被进一步拆分,元数据服务器可以自适应地复制和分配名称空间,避免出现热点。如图 4 所示,元数据服务器管理名称空间部分,能够(为冗余和性能)进行重叠。元数据服务器到名称空间的映射在 Ceph 中使用动态子树逻辑分区执行,它容许 Ceph 对变化的工做负载进行调整(在元数据服务器之间迁移名称空间)同时保留性能的位置。

 

4 元数据服务器的 Ceph 名称空间的分区

     可是由于每一个元数据服务器只是简单地管理客户端人口的名称空间,它的主要应用就是一个智能元数据缓存(由于实际的元数据最终存储在对象存储集群中)。进行写操做的元数据被缓存在一个短时间的日志中,它最终仍是被推入物理存储器中。这个动做容许元数据服务器将最近的元数据回馈给客户(这在元数据操做中很常见)。这个日志对故障恢复也颇有用:若是元数据服务器发生故障,它的日志就会被重放,保证元数据安全存储在磁盘上。

元数据服务器管理 inode 空间,将文件名转变为元数据。元数据服务器将文件名转变为索引节点,文件大小,和 Ceph 客户端用于文件 I/O 的分段数据(布局)。

5)          Ceph 监视器

Ceph 包含实施集群映射管理的监视器,可是故障管理的一些要素是在对象存储自己中执行的。当对象存储设备发生故障或者新设备添加时,监视器就检测和维护一个有效的集群映射。这个功能按一种分布的方式执行,这种方式中映射升级能够和当前的流量通讯。Ceph 使用 Paxos,它是一系列分布式共识算法。

6)          Ceph 对象存储

和传统的对象存储相似,Ceph 存储节点不只包括存储,还包括智能。传统的驱动是只响应来自启动者的命令的简单目标。可是对象存储设备是智能设备,它能做为目标和启动者,支持与其余对象存储设备的通讯和合做。

从存储角度来看,Ceph 对象存储设备执行从对象到块的映射(在客户端的文件系统层中经常执行的任务)。这个动做容许本地实体以最佳方式决定怎样存储一个对象。Ceph 的早期版本在一个名为 EBOFS 的本地存储器上实现一个自定义低级文件系统。这个系统实现一个到底层存储的非标准接口,这个底层存储已针对对象语义和其余特性(例如对磁盘提交的异步通知)调优。今天,B-tree 文件系统(BTRFS)能够被用于存储节点,它已经实现了部分必要功能(例如嵌入式完整性)。

由于 Ceph 客户实现 CRUSH,并且对磁盘上的文件映射块一无所知,下面的存储设备就能安全地管理对象到块的映射。这容许存储节点复制数据(当发现一个设备出现故障时)。分配故障恢复也容许存储系统扩展,由于故障检测和恢复跨生态系统分配。Ceph 称其为 RADOS

相关文章
相关标签/搜索