text: Ceph分布式存储技术解读
  首先，我们从 Ceph的官方网站上，可以看到：“Ceph is a unified, distributed storage system designed for excellent performance, reliability and scalability.” 从它的定义上我们可以明确它是一种存储系统，而且可以明确它所具备的两点特性：
  (2)分布式( distributed )：意味着其内部节点架构是以分布式集群算法为依托的。
  接下来，我们从其架构原理以及读写原理上来分析其如何支撑定义当中所提到的各个特性。
  2. Ceph的架构原理
  具体如图2.1所示：
  (1)基础存储系统(RADOS)
  RADOS是理解Ceph的基础与核心。
  物理上，RADOS由大量的存储设备节点组层，每个节点拥有自己的硬件资源(CPU、内存、硬盘、网络)，并运行着操作系统和文件系统。
  (2)基础库(LIBRADOS)
  LIBRADOS是基于RADOS对象在功能层和开发层进行的抽象和封装。
  从使用功能上，其向上提供使用接口API(RADOSGW、RBD、FS)。
  (3)存储应用接口( RADOS GW、 RBD 、 Ceph FS )
  读到此处，可能很多人都会有一个疑问：“既然Librados API能提供对象存储应用可以使用的接口，为什么还要搞一个RadosGW API”
  如图2.2所示，RADOS集群是由若干服务器组成，每一个服务器上都相应会运行RADOS的核心守护进程(OSD、MON、MDS)。
  图2.2 RADOS物理组件架构
  结合图2.2，我们首先来看每一个集群节点上面的守护进程的主要作用：
  其故障处理机制主要靠集群的Crush算法来维持Primary和Replication之间的转化和工作接替。
  MON Daemon：三方面主要作用，首先是监控集群的全局状态(OSD Daemon Map、MON Map、PG Map、Crush Map)，这里面包括了OSD和MON组成的集群配置信息，也包括了数据的映射关系。
  MDS Daemon：它是Ceph FS的元数据管理进程，主要是负责文件系统的元数据管理，它不需要运行在太多的服务器节点上。
  安装节点模式保持主备保护即可。
  首先，我们先来列出这些对象：
  (2)对象(Object)：RADOS所看到的“对象”。
  因此，当上层应用向RADOS存入很大的file时，需要将file切分进行存储。
  (3)PG(Placement Group)：PG是一个逻辑概念，阐述的是Object和OSD之间的地址映射关系，该集合里的所有对象都具有相同的映射策略;Object &PG，N：1的映射关系;PG &OSD，1：M的映射关系。
  (4)OSD(Object Storage Device)：存储对象的逻辑分区，它规定了数据冗余的类型和对应的副本分布策略;支持两种类型：副本和纠删码。
  图2.3 RADOS物理组件架构
  结合图2.3所示，我们来看数据的详细映射过程：
  具体映射操作本质上就是按照Object的最大Size对File进行切分，每一个切分后产生的Object将获得唯一的对象标识Oid。
  这 N 个OSD即共同负责存储和维护一个PG中的所有 Object 。
  ① 集群状态(Cluster Map)：系统中的OSD状态 。
  ② 存储策略配置。
  到这里，可能大家又会有一个问题“为什么这里要用CRUSH算法，而不是HASH算法”
  这一次映射，我们对映射算法有两种要求：
  而CRUSH算法正是符合了以上的两点要求，所以最终成为Ceph的核心算法。
  3. Ceph的读写原理
  结合图3.1，具体说来，包括如下几个详细步骤：
  Client读取配置文件。
  Client连接上元数据节点，获取集群上的数据映射信息。
  Client根据CRUSH算法，计算获得数据的所有OSD节点(Primary)，然后进行数据读写。
  如果是数据的写操作，Primary OSD会同时写入另外两个副本节点数据。
  Primary OSD等待另外两个副本节点写完数据状态返回并将ACK信息返回客户端。
  具体如图3.2所示：
  首先，我们来看从正常场景到发生OSD主节点故障的这个阶段：
  集群内部通过心跳机制发现故障，这个心跳机制分两种：Monitor和OSD之间的主动和被动检测机制，OSD之间的相互检测机制;
  新的OSD Primary节点接受任务并选择合适的OSD Replic节点进行数据同步;
  当新的OSD Primary节点数据同步完成后，进入到正常阶段：
  正式接管数据读写任务，成为Primary OSD节点，集群恢复新的稳定状态。
  从Ceph的架构原理上来看，我们不难看出其定义当中的“扩展性、稳定性”。
  但是关于“优秀性能”这个描述的特性来讲，其实是需要斟酌其语境的。
  因此，多维度去看Ceph，才能挖掘其真正价值，后续继续挖掘其他维度上的优劣。