liuyuehua 发表于 2019-2-2 10:18:44

ceph学习笔记之十 副本放置策略

  副本放置策略
  CRUSH 算法的设置目的是使数据能够根据设备的存储能力和宽带资源加权平均地分布,并保持一个相对的概率平衡。副本放置在具有层次结构的存储设备中,这对数据安全也有重要影响。通过反射系统的物理安装组织,CRUSH算法可以将系统模块化,从而定位潜在的设备故障。这些潜在故障的资源包括物理的,比如共用电源,共用的网络。通过向集群映射编码信息,CRUSH副本放置策略可以将数据对象独立在不同故障域,同时仍然保持所需的分布。例如,为了定位可能存在的并发故障,应该确保设备上的数据副本放置在不同的机架、主机、电源、控制器、或其他的物理位置。
  Placement Rules
  Cluster Map反映了存储系统层级的物理拓扑;Placement Rules则决定了一个PG的对象副本选择规则,通过对规则进行设定,就可以使副本在集群中的分布位置。
  解读Placement Rules用法
  # rules
  rule replicated_ruleset {
        ruleset 0                //Ruleset的ID编号
        type replicated         //类型为replicated或者erasure code
        min_size 1             //副本数最小值为1
        max_size 10         //副本数最大值为10
        step take default   //选择一个名称为default的bucket,做下一步输入
        step chooseleaf firstn 0 type host   //firstn 0为表示为pool设置的副本数
        step emit
  }
  rule replicated_ssd_ruleset {
        ruleset 1
        type replicated
        min_size 1
        max_size 10
        step take ssd
        step chooseleaf firstn 0 type host
        step emit
  }
  # end crush map
  
  Placement Rules执行流程
  

  1、take操作选择一个Bucket ,一般是root类型的Bucket
  

  2、choose操作有不同的选择方式,其输入都是上一步的输出:
  

  choose firstn深度优先选择出num个类型为Bucket-type的子Bucket
  chooseleaf先选择出num个类型为Bucket-type的子Bucket,然后递归到叶节点,选择一个OSD设备。
  $、如果num为0,num为pool设置的副本数
  

  $、如果num大于0,小于pool的副本数,那么就选择出num个
  

  $、如果num小于0,就选择出pool的副本数减去num的绝对值。
  

  3、emit输出结果
  

  chooseleaf firstn {num} type {Bucket-type}等同于以下两个操作:
  

  1、choose firstn {num} type {Bucket-type}
  

  2、choose firstn 1 type osd
  




页: [1]
查看完整版本: ceph学习笔记之十 副本放置策略