ceph rados

    crush规则集

    自我管理,自我修复的能力

    文件系统的选择
    Btrfs: 一个优点:写时复制 可写的快照
    XFS: 可靠,成熟且稳定的文件系统,在元数据扩展性上存在性能问题
    XFS:是一种日志文件系统,也就是说,每次客户端发送数据以写入Ceph集群时,首先需要写入日志空间,然后再写入XFS文件系统。
    这样的两次写入操作增加了开销
    ext4:

    1. XATTR允许通过xattr_name xattr_value来存储对象的额外信息,
    2. 从而提供更多的元数据信息来标记对象提供了一种方法。

    Ceph OSD日志
    日志系统的写入: 常见的日志大小是10GB
    随机写都是首先使用顺序模式写入日志中,然后在写入后段文件系统
    可以采用SSD型日志中

    Btrfs:

    monitor节点应该有足够的磁盘空间来存储集群日志,包括:OSD,MDS,和 monitor日志

    然而,在开启调试模式时,集群的日志存储需求会显著增加,可能需要增加好几千兆字节的磁盘空间来存储日志

    推荐设置日志轮换策略以及常规文件系统利用率检测

    1.特别是在monitor节点上增加调试级别时可能导致巨大的日志量,平均增长速度达到每小时1GB

    4.2 对象
    一个对象通常包含绑定在一起的数据和元数据,并且用一个全局唯一的标识符标识 这个标识确保在整个存储集群中没有其他对象使用相同的对象ID,从而保证对象唯一性

    1. 定位对象
    2. ceph中的所有数据单元都是以对象的形式存储在一个池中。
    3. Ceph的池是一个用来存储对象的逻辑分区,它提供了有组织的存储方式。

    CRUSH
    CRUSH是按需计算元数据,而不是存储元数据

    恢复和再平衡
    在ceph将该OSD标记为down 和 out 并初始化恢复操作前,默认情况下Ceph会等待300秒。

    1. 这个值可以在Ceph集群的配置文件中通过参数mon osd down out interval进行修改。
    2. 建议:
    3. 先将新添加的OSD的权重设为0,再逐渐增加权重到依据磁盘容量确定的更高的权重值。

    编辑CRUSH map
    1.提取已有的CRUSH map,使用-o参数,Ceph将输出一个经过编译的CRUSH map到指定的文件
    ceph osd getcrushmap -o crushmap.txt

    1. 反编译 CRUSH map, 使用-d参数制定需要fan

    2.使用paxos算法为集群提供了分布式决策机制

    ceph daemon mon.ceph-node1 mon_status

    企业级生产环境建议:
    建议使用专门的monitor节点。这样一旦你的OSD节点发生故障,只要你有足够的monitor运行在独立的机器上,你仍然可以连接到你的Ceph集群

    1. 在存储的规划阶段,也应该考虑物理机架的布局。
    2. 你应该将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) / 最大副本数

    1. 假设Ceph集群有160OSD且副本数是3,这样计算得到PG总数是533.3,因此舍入靠近2N次幂结果是8192
    2. 每个池中的PG总数
    3. 计算公式:
    4. PG总数 = ((OSD总数*100)/最大副本数)/池数
    5. 假设Ceph集群有160OSD且副本数是3,池总数是3 每个池总数应该是1777.7 ,最后舍入 每个池2048PG

    再平衡机制