ceph rados
crush规则集
自我管理,自我修复的能力
文件系统的选择
Btrfs: 一个优点:写时复制 可写的快照
XFS: 可靠,成熟且稳定的文件系统,在元数据扩展性上存在性能问题
XFS:是一种日志文件系统,也就是说,每次客户端发送数据以写入Ceph集群时,首先需要写入日志空间,然后再写入XFS文件系统。
这样的两次写入操作增加了开销
ext4:
XATTR允许通过xattr_name xattr_value来存储对象的额外信息,
从而提供更多的元数据信息来标记对象提供了一种方法。
Ceph OSD日志
日志系统的写入: 常见的日志大小是10GB
随机写都是首先使用顺序模式写入日志中,然后在写入后段文件系统
可以采用SSD型日志中
Btrfs:
monitor节点应该有足够的磁盘空间来存储集群日志,包括:OSD,MDS,和 monitor日志
然而,在开启调试模式时,集群的日志存储需求会显著增加,可能需要增加好几千兆字节的磁盘空间来存储日志
推荐设置日志轮换策略以及常规文件系统利用率检测
1.特别是在monitor节点上增加调试级别时可能导致巨大的日志量,平均增长速度达到每小时1GB
4.2 对象
一个对象通常包含绑定在一起的数据和元数据,并且用一个全局唯一的标识符标识 这个标识确保在整个存储集群中没有其他对象使用相同的对象ID,从而保证对象唯一性
定位对象
ceph中的所有数据单元都是以对象的形式存储在一个池中。
Ceph的池是一个用来存储对象的逻辑分区,它提供了有组织的存储方式。
CRUSH
CRUSH是按需计算元数据,而不是存储元数据
恢复和再平衡
在ceph将该OSD标记为down 和 out 并初始化恢复操作前,默认情况下Ceph会等待300秒。
这个值可以在Ceph集群的配置文件中通过参数mon osd down out interval进行修改。
建议:
先将新添加的OSD的权重设为0,再逐渐增加权重到依据磁盘容量确定的更高的权重值。
编辑CRUSH map
1.提取已有的CRUSH map,使用-o参数,Ceph将输出一个经过编译的CRUSH map到指定的文件
ceph osd getcrushmap -o crushmap.txt
- 反编译 CRUSH map, 使用-d参数制定需要fan
2.使用paxos算法为集群提供了分布式决策机制
ceph daemon mon.ceph-node1 mon_status
企业级生产环境建议:
建议使用专门的monitor节点。这样一旦你的OSD节点发生故障,只要你有足够的monitor运行在独立的机器上,你仍然可以连接到你的Ceph集群
在存储的规划阶段,也应该考虑物理机架的布局。
你应该将monitor节点分散到所有的故障域中,例如:不同的开关,电源和物理机架。
ceph对象网关
RADOS网关,它是一个代理,可以将HTTP 请求转换为RADOS,同时可以把RADOS请求转为HTTP请求,从而提供RESTful对象存储,这兼容S3 和Swift
Crush为每个OSD分配权重,OSD权重越高,表示物理存储容量越大,这样Crush将会写入更多的数据到这个OSD上
编辑CrushMap
定制集群布局
PG是一组对象的逻辑集合
PGP是用于定位的PG的总数,它应该等于PG的总数
计算PG数
PG在一定程度上能够提高或者影响存储性能
集群中PG数
PG 总数 = (OSD总数 * 100) / 最大副本数
假设Ceph集群有160个OSD且副本数是3,这样计算得到PG总数是533.3,因此舍入靠近2的N次幂结果是8192
每个池中的PG总数
计算公式:
PG总数 = ((OSD总数*100)/最大副本数)/池数
假设Ceph集群有160个OSD且副本数是3,池总数是3。 每个池总数应该是1777.7 ,最后舍入 每个池2048个PG
再平衡机制