Ceph简介

Ceph简介

Ceph是一个分布式存储系统, 具有高扩展性, 高可靠性, 高性能的存储集群, 它目前提供对象存储, 块设备存储, 文件系统存储三种存储应用

  • 高扩展性:使用普通x86服务器,支持TB到PB级的扩展。
  • 高可靠性:多数据副本,没有单点故障,自动管理,自动修复。
  • 高性能:数据分布均衡,并行化度高。对于对象存储和块设备存储,不需要元数据服务器。

目前Inktank公司掌控Ceph的开发,但Ceph是开源的,遵循LGPL协议。Inktank还积极整合Ceph和其他云计算和大数据平台,目前Ceph支持OpenStack、CloudStack、OpenNebula、Hadoop等。

当前Ceph的最新稳定版本0.80.5(Firefly),它的对象存储和块设备存储已经足够稳定,而且Ceph社区还在继续开发新功能,包括跨机房部署和容灾、支持Erasure encoding等。Ceph具有完善的社区设施和发布流程(每三个月发布一个稳定版本) 。

请在这里输入图片描述

Ceph各类型节点

Ceph的部署始于Ceph节点的部署, 1个Ceph存储集群至少需要一个Monitor节点和至少两个OSD节点, 如果需要文件系统存储则需要部署MDS

  • OSD: OSD节点负责存储数据, 处理数据副本, 数据恢复, 数据回填, 数据平衡调整, 提供监控数据给Mon(通过心跳包), Ceph存储集群要求至少两个处于active+clean的OSD Daemons
  • MON: MON节点维护集群状态图, 包含monitor map, OSD map, Placement Group(PG) map, CRUSH map. Ceph维护mon,OSD, PG的每一个变化历史, ceph称变化历史为epoch
  • MDSs: Ceph Metadata Serve 存储Ceph FS的元数据(ceph块存储和ceph对象存储不需要MDS)

Ceph以对象的方式来存储客户端的数据, 使用CRUSH算法, Ceph将计算出数据对象将存放在哪个PG, 并继续计算该PG在哪个OSD下面, CRUSH算法使得Ceph存储集群变得可扩展, 自动均衡, 动态自恢复

硬件需求

Ceph官方推荐使用专门的节点来运行Ceph, 并使用专门的节点来使用Ceph数据集群(如OpenStack, CloudStack)

1.CPU

  • MDS属于CPU密集型应用, 需要更好的计算性能, 它需要动态地分配负载
  • OSD使用多进程来运行, 需要更好的多核性能
  • Monitors不是CPU密集型, 它只是简单维护cluster map的主拷贝

2.内存

MDS, Mon需要大内存 (如每实例分配1GB), OSD只需要(每实例分配500MB, 但在数据恢复期间每1TB数据大概需要1GB的内存占用), 内存越多越好

3.磁盘

Ceph官方推荐采用更大的磁盘来降低成本, 至少1TB起, 不要在同个磁盘上开多个OSD, 这样可以避免资源竞争, 同时在同个磁盘上存储日志和数据, 会降低效率(ceph先写日志,再返回ACK), btrfs能并发的写日志与数据, xfs和ext4则做不到, 建议OSD数据与OSD日志分离

SSD的高性能, 适合用于Ceph的日志, 不会占用太多空间, 日志是写密集型的应用, 所以需要慎用廉价SSD, 市面上部分高性能磁盘比这些SSD的写性能更好

如果你在同个SSD上存储多个日志, 你需要考虑顺序写性能 
默认Ceph日志的配置位置: /var/lib/ceph/osd/clusterid/journal

4.网络

在同台机上运行多个OSD, 你需要考虑网络是否会成为瓶颈, 同时还要考虑特定机器上存储的数据是否平均, 过大的比率会导致这台机在故障时导致问题

推荐每台机有2路千兆网络接入, 1路处理外部数据, 1路处理集群数据, 考虑直接上10Gbps, 用1Gbps同步1TB数据需要3小时, 3TB需要9小时, 如果是万兆则只需要20分钟和1小时, 在PB级的集群中, 磁盘故障是可预测的, 而非不可预测, 所以更好的网络可以加快故障的恢复, 同样的, 到了汇聚层需要40Gbps到100Gbps

5.其它

在每台机上运行多个OSD, 需要确保内核最新, glibc和syncfs 
同台机上多于20个OSD时, 会在recovery和rebalancing时导致很多的线程, 有可能超出内核的默认限制(32k), 需要设置kernel.pid_max, 最大值为4,194,303

kernel.pid_max = 4194303

系统需求

Ceph内核要求

  • v3.16.3 or 更新的版本 (在v3.16.[0-2]版本中, rbd 有死锁的问题)
  • 不能使用v3.15.* (rbd死锁)
  • v3.14.*
  • v3.10.*

如果使用以下旧内核, 需要保证

  • v3.6内核: 使用v3.6.6 或 更加新的稳定版本
  • v3.4内核: 使用v3.4.20 或 更加新的稳定版本
  • firefly (CRUSH_TUNABLES3) tunables在v3.15内核中开始支持

Ceph版本

  • 0.80: Firefly (最新大版本)
  • 0.72: Emperor
  • 0.67: Dumpling
 
 
 
 
 
 

posted @ 2018-11-02 10:23  李尚衍  阅读(898)  评论(0编辑  收藏  举报