如何使用Docker部署Ceph分布式文件系统

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用Docker部署Ceph分布式文件系统相关的知识,希望对你有一定的参考价值。

参考技术A 1.jpg 为什么想支持两个文件系统,把数据都导到一个集群上不就可以了。

Openstack+KVM+Ceph+Docker 集成云计算中

对于以基础架构即服务形式部署和设计云计算产品的公司而言,数据复制和存储机制仍然是确保为客户提供完整性和服务连续性的实际前提条件。云计算提供了一种模型,其中数据的位置没有其他基础架构模型中那么重要(比如在一些模型中,公司直接拥有昂贵的存储硬件)。Ceph 是一个开源、统一、分布式的存储系统,提供了一种便捷方式来部署包含商用硬件、低成本且可大规模扩展的存储平台。了解如何创建一个 Ceph 集群(从单一点实现对象、块和文件存储)、Ceph 的算法和复制机制,以及如何将它与您的云数据架构和模型相集成。作者提出了一种将 Ceph 集群集成到 OpenStack 生态系统中的简单而又强大的方法。

Ceph 是一个符合 POSIX (Portable Operating System for UNIX®)、开源的分布式存储系统,依据 GNU 次通用公共许可而运行。该项目最初由 Sage Weill 于 2007 年开发,该项目的理念是提出一个没有任何单点故障的集群,确保能够跨集群节点进行永久数据复制。

与在任何经典的分布式文件系统中一样,放入集群中的文件是条带化的,依据一种称为 Ceph Controlled Replication Under Scalable Hashing (CRUSH) 的伪随机的数据分布算法放入集群节点中。

Ceph 是一种有趣的存储替代方案,这得益于它实现的一些概念,比如元数据分区,以及一种复制或放置组策略(将一系列对象聚合到一个分组中,然后将该分组映射到一系列对象存储后台进程 (OSD))。

这些特性支持自动扩展、恢复和自主管理集群,因为他们使用以下绑定(在不同的级别上)提供了与您的 Ceph 集群的交互方式:

  • Reliable Autonomic Distributed Object Store (RADOS) 网关是一种 RESTful 接口,您的应用程序可与其通信,以便将对象直接存储在集群中。
  • librados 库是一种访问 RADOS 的便利方式,它支持 PHP、Ruby、Java™、Python 和 C/C++ 编程语言。
  • Ceph 的 RADOS 块设备 (RBD) 是一个完全分布式的块设备,它使用一个 Linux® 内核和一个 Quick EMUlator (QEMU)/基于内核的虚拟机 (KVM) 驱动程序。
  • 原生 CephFS 是一个分布式文件系统,全面支持 Filesystem in Userspace (FUSE)。

如 图 1 中所示,Ceph 生态系统可分解为 5 个组成部分:

  • librados 库
  • RADOS 网关
  • RBD
  • CephFS
  • 集群中的各种节点
图 1. Ceph 生态系统
该图显示了 Ceph 的组成部分

Ceph 生态系统原生支持许多与其交互的方式,这使得在已运行的基础架构中集成它变得既轻松又便捷,即使它执行的是一个在统一项目文件中提供块和对象存储功能的复杂任务。

接下来我们来看一下组成 Ceph 的各个部分以及它们在 Ceph 中分别扮演的角色。

RADOS 对象存储

图 1 表明 RADOS 对象存储是存储集群的基础。对于通过众多客户端或网关(RADOSGW、RBD 或 CephFS)执行的每个操作,数据会进入 RADOS 或者可以从中读取数据。图 2 显示了 RADOS 集群,它包含两个后台守护进程:Ceph 对象存储后台进程 (OSD) 和维护集群映射的主要副本的 Ceph 监视器。

图 2. The RADOS 对象存储
该图显示了 RADOS 对象存储的组成部分

集群映射描述了对象块的物理位置,以及一个将设备聚合到物理位置的 “桶” 列表。该映射由 Ceph 的高级放置算法控制,该算法在物理位置上建模逻辑位置。图 3 描绘了集群内的 “池”,即存储对象的逻辑分区。每个池被动态映射到 OSD。

图 3. RADOS 位置分组
该图给出了 RADOS 位置分组算法

现在让我们看看第一组后台进程 OSD,然后再看看监视器,最后看看属于 CephFS 分布式文件系统的 Ceph 元数据服务器。