ceph学习记录1-相关问题

参考文档:

https://blog.csdn.net/kozazyh/article/details/79904428

ceph源码分析(常涛)


1. iSCSI如何维持多通道并行?

MPIO允许1个Initiator(client)通过多个Session连入同1个Target(server)设备,以便利用多网卡或iSCSI HBA启用负载均衡与故障失效切换机制。(Multiple Sessions per Initiator)

2. Ceph(0.94)为什么先写journal,后写底层?

优点:可以先在journal中合并小IO,形成顺序写盘,提高IOPS;

           出现故障可以从journal中恢复;

           提供了事物的一致性和原子性,避免 FileStore 在执行多个操作时发生意外造成中间状态而无法追溯或者回滚;

缺点:性能抖动,一段高速率之后会有一段低速率

                      FileJournal 与 FileStore 耦合严重,优化阻力大。

3. Journal写失败怎么办?

从副本需要给主副本发送两次ACK,一次是事务提交到journal,并没有应答到实际的对象数据中,一次是完成应按操作返回ACK。如果是收到事务提交到journal中的ACK,就从ip_op.waiting_for_applied中删除对应的osd。最后检查,如果ip_op.waiting_for_applied空了,就说明所有的从osd的请求都已经返回来了。

如果journal写失败了,则最后检查会发现ip_op.waiting_for_applied并不空,此时就会调用该Context的complete函数。

4. Crush算法能否保证分布均匀?

crush采用以概率为基础的统计上的均衡,在大规模集群中可以实现数据均衡,但是在小规模集群中,会有一定的数据不均衡现象。

5. bucket选择算法?

  • Uniform Bucket
  • List Bucket
  • Tree Bucket
  • Straw Bucket

6. PG状态变化契机?

           creating:PG正在创建,当创建或增加一个pool里的pg数量时,PG会出现creating状态。

           down:PG处于失效或离线状态。

           repair:PG正在被检查,出现不一致将被修复。

           peering:等待互联,由主osd发起,使所有存放pg副本的osd,就pg的所有对象和元素数据的状态达成一致。

           active:完成peering过程后,pg状态变为active,意味着pg中的数据可以进行读写了。

           clean:此时,主osd与副本osd成功同步并且没有异步复制,pg中的所有对象都已经具有正确的副本数量了。

           replay:当osd崩溃后,pg等待客户端重新发起操作。

           degraded:当客户端写对象到主osd,主osd会把数据复制到副本osd,在主osd把对象写入存储后,pg会显示为degraded状态,直到主osd从副本osd中接收到创建副本对象完成信息。

当pg处于active+degraded,原因是因为OSD是处于活跃,但并没有完成所有对象副本的写入,加入osd down,ceph会标记每个pg分配到这个相关osd的状态为degraded,当osd重新上线,osd将会重新恢复。

假如osd down并且degraded状态持续,ceph会标记down osd,并且会迁移相关osd的数据,时间由mon osd down out interval决定。

pg被标记为degraded状态后,如果在pg中找不到相关的对象时,不可以读写unfound对象,但仍然可以访问标记为degraded的pg.

            inconsistent:pg副本出现不一致,对象大小不正确或者某个副本出现对象丢失的现象。

            recovering:ceph设备容忍在一定范围的软件与硬件问题,当osd变down,那么包含该osd的pg的副本都会有问题,当osd恢复时,osd对应的pg将会更新,并出现当前状态,一段时间后,osd将会恢复recovering状态。

            backfilling:当新的osd加入集群中,crush将会为集群新添加的osd重新分配pg,强制新的osd接收重新分配的pg并把一定数量的负载转移到新的osd中,backfilling osd会在后台处理,当backfilling完成,新的osd完成后,将开始对请求进行服务。

             remapped:当pg改变,数据从旧的osd迁移到新的osd,新的主osd应该请求将会话费一段时间,在这段时间内,将会继续向旧主osd请求服务,直到pg迁移完成,当数据迁移完成后,mapping将会继续向新的osd响应主osd服务。

当pg的action set变化后,数据将会从旧的acting set迁移到新的acting set,新主osd需要过一段时间后才能提供服务,因此它会让旧的主osd继续提供服务,直到pg迁移完成,pgmap将会使用新的acting set中的主osd.

              scrubbing:pg在做不一致性校验。

              inactive:pg很长时间没有显示为active状态,不可执行读写请求,等待osd更新数据到最新的备份状态。

              unclean:pg很长时间都不是clean状态,不可以完成之前恢复的操作。

              stale:pg很长时间没有被ceph-osd更新过,存储在该pg中的节点标记为down,pg处于unknow状态,因为osd没有报告monitor,由mon osd report timeout定义超时时间。

                             

                              

 

      

      

猜你喜欢

转载自blog.csdn.net/qq_20283969/article/details/81980941