删除一个OSD的最佳实践

当你要缩小集群规模或者处理坏盘时,你就需要通过删除OSD来实现,但是在删除之前你要确保集群不会达到full的状态。

虽然社区的文档给出了删除一个OSD的步骤(http://docs.ceph.com/docs/hammer/rados/operations/add-or-rm-osds/),并且也能够work,但是它不是最好的方案,因为这其中会涉及到两次数据迁移,即在执行‘ceph osd out osd.x'和‘ceph osd crush remove osd.x‘时。标记一个OSD out会使得它上面的pg重新临时remap到另外的OSD上,当然有些时候会出现不能找到OSD来存放,这主要取决于你的crushmap如何设计。而将一个OSD从crush中remove出去,则会使得它的pg永久性的map的另外的OSD上。那么如何才能避免这两次数据迁移呢?

这要看你要删除什么样的OSD:
1正常的OSD,那么你可以遵循以下步骤,

1)ceph osd crush reweight osd.x 0.0
... 等待平衡结束....
2)ceph osd out osd.x
3)service ceph stop osd.x
4)ceph osd crush remove osd.x
5)ceph auth del osd.x
6)ceph osd rm osd.X
这么做的目的是,先将osd的crush 权重调整为0,则osd可以参与到数据重建过程。

2有问题的OSD,则可以按照社区的文档来操作,只是在ceph osd out osd.x之后要立马执行ceph osd crush remove osd.x,而不要等待平衡结束

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章