Ceph简介
Posted lifei02
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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/cluster?id/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
以上是关于Ceph简介的主要内容,如果未能解决你的问题,请参考以下文章