this is my first ‘ceph’  article ,just start .....................! ! !

一,手动增加OSD

在ceph里,一个OSD一般是一个ceph-osd守护进程,它运行在硬盘之上,当集群容量达到使用上限,或接近near full 比率后,需要增加OSD或OSD主机来扩容。

在一个运行的ceph集群里添加一个osd要依次创建数据目录,把硬盘挂载到数据目录,把OSD加入集群,然后把OSD加入CRUSHMAP, ceph集群尽量使用统一

硬件,如果新增容量不一的磁盘,创建过程中还需调整它的权重。

添加OSD前,保证集群环境OK

当前集群环境三台主机,6个OSD

1,创建OSD,如果未指定UUID,OSD启动时会自动生成一个,下列命令会输出OSD号(VDD是新添加的磁盘)

#ceph osd create [ uuid   或 id ]   (如果指定了ID  那么它将作为OSD id,一般来说不建议指定ID,让ceph按顺序自动分配)

#ceph osd tree

2,在新OSD主机上创建默认目录

3,格式化磁盘,挂载到刚创建的目录下

# mkfs.xfs /dev/vdd

4,初始化OSD数据目录

# ceph-osd -i 6 --mkfs --mkkey

正常报错不用担心

5,注册OSD的认证秘钥,

# ceph auth add osd.6 osd 'allow *' mon 'allow rwx' -i /var/lib/ceph/osd/ceph-6/keyring

6,把OSD加入CRUSHMAP 这样新加入的OSD才能开始接受数据,(也可以通过反编译crushmap 把OSD加入列表设备)

#ceph osd crush add 6 0.00999 host=ceph3

注意:对在使用中的ceph集群,为降低对用户 I/O 性能的影响,加入 CRUSH 图时应该把 OSD 的初始权重设为 0 ,然后每次增大一点、逐步增大 CRUSH 权重。例如每次增加 0.2 :

#ceph osd crush reweight {osd-id} .2

迁移完成前,可以依次把权重重置为 0.4 、 0.6 等等,直到达到期望权重

为降低 OSD 失败的影响,你可以设置:

#mon osd down out interval = 0

它防止挂了的 OSD 自动被标记为 out ,然后逐步降低其权重:

#ceph osd reweight {osd-num} .8

等着集群完成数据迁移,然后再次调整权重,

注意/var/lib/ceph/osd/ceph-X的权限,应该属主属组都是ceph

以下为通过反编译CRUSHMAP的方式添加OSD到CRUSH

(1)利用ceph工具获取当前的crush map

#ceph osd getcrushmap -o ./mycrushmap

(2)反编译crush map       ./mycrushmap 是一个二进制文件,需要通过crushtool反编译成文本文件才能进行编辑

#crushtool -d ./mycrushmap > ./mycrushmap.txt

(3)编辑crush map 文本文件

[root@ceph3 ~]# vi mycrushmap.txt

# begin crush map
tunable choose_local_tries 0
tunable choose_local_fallback_tries 0
tunable choose_total_tries 50
tunable chooseleaf_descend_once 1
tunable straw_calc_version 1

# devices
device 0 osd.0
device 1 osd.1
device 2 osd.2
device 3 osd.3
device 4 osd.4
device 5 osd.5
device 6 osd.6

# types
type 0 osd
type 1 host
type 2 chassis
type 3 rack
type 4 row
type 5 pdu
type 6 pod
type 7 room
type 8 datacenter
type 9 region
type 10 root

# buckets
host ceph1 {
        id -2           # do not change unnecessarily
        # weight 0.020
        alg straw
        hash 0  # rjenkins1
"mycrushmap.txt" 77L, 1279C

此处不过多介绍,具体添加方式自行了解

(4)编辑完成后,在编译crush map 文本文件为二进制文件

# crushtool -c ./mycrushmap.txt -o ./newmap

(5)把新编译的crush map 应用于集群使之生效

#ceph osd setcrushmap -i ./newmap

(6)查看CRUSH结构,确认新的CRUSH MAP 已经生效

#ceph osd tree

启动OSD

还未把OSD加入到CEPH后,OSD就在集群配置里了,但是它处于运行状态,此时处于down 且out ,要启动OSD后它才开始接受数据

#/etc/init.d/ceph start osd.6

一旦启动了OSD后,其状态变为UP且IN

观察数据迁移,把新的OSD加入集群CRUSH  MAP 后,ceph会重新均衡数据,一些归置组会迁移到新的OSD里,观察集群数据迁移过程

#ceph -w

你会看到归置组状态从 active+clean 变为 active, some degraded objects (有降级的对象)、且迁移完成后回到 active+clean 状态

二,OSD的删除

当磁盘损坏,需要更换磁盘时,需要删除OSD ,通常,操作前应该检查集群容量,看是否快达到上限了,确保删除 OSD 后不会使集群达到 near full 比率。

1,把 OSD 踢出集群

删除 OSD 前,它通常是 up 且 in 的,要先把它踢出集群,以使 Ceph 启动重新均衡、把数据拷贝到其他 OSD

#ceph osd out osd.6

2,观察数据迁移

一旦把 OSD 踢出( out )集群, Ceph 就会开始重新均衡集群、把归置组迁出将删除的 OSD

#ceph -w

你会看到归置组状态从 active+clean 变为 active, some degraded objects 、迁移完成后最终回到 active+clean 状态

注意:

有时候,(通常是只有几台主机的“小”集群,比如小型测试集群)拿出( out )某个 OSD 可能会使 CRUSH 进入临界状态,这时某些 PG 一直卡在 active+remapped 状态。

如果遇到了这种情况,应该先把此 OSD 标记为 in

#ceph osd in {osd-num}

等回到最初的状态后,在把它的权重设置为 0 ,而不是标记为 out

#ceph osd crush reweight osd.{osd-num} 0

执行后,你可以观察数据迁移过程,应该可以正常结束。把某一 OSD 标记为 out 和权重改为 0 的区别在于,前者,包含此 OSD 的桶、其权重没变;而后一种情况下,

桶的权重变了(降低了此 OSD 的权重)。某些情况下, reweight 命令更适合“小”集群

3,停止OSD

把 OSD 踢出集群后,它可能仍在运行,就是说其状态为 up 且 out 。删除前要先停止 OSD 进程

#/etc/init.d/ceph stop osd.6                           停止 OSD 后,状态变为 down

4,删除OSD

(1),把OSD移除CRUSHMAP

#ceph osd crush remove osd.6

(2)删除OSD的认证秘钥

#ceph auth del osd.6

(3)删除OSD

#ceph osd rm osd.6

OSD.6 已被完全删除

(4)卸载OSD挂载目录,通过mount 查看

# umount /var/lib/ceph/osd/ceph-6/

删除osd.6相关信息

到此OSD的手动添加和删除基本完成,不同系统环境或者不同ceph版本 有些操作命令不近相同,

ceph H 版本启动命令:#/etc/init.d/ceph start osd.x

#/etc/init.d/ceph start mon

ceph J 版本启动命令:#systemctl stop ceph-mon@ceph01.service  停止mon 服务

#systemctl stop ceph-osd@12.service 停止各OSD服务

参考文档:ceph 官网, 《ceph分布式存储实战》

三,通过执行puppet 添加OSD

1,首先我在集群ceph2这台服务器上添加 一块磁盘VDD

2,修改ceph.yaml 文件

#vi /var/tmp/openstackha/tripleo/hieradata/ceph.yaml

删除原有磁盘信息,从新写入需要添加的磁盘,如下:      如有多块磁盘可依次写入相应信息

保存退出

3,执行osd.pp 文件

#puppet apply --modulepath /var/tmp/openstackha/puppet/modules/ /var/tmp/openstackha/tripleo/manifests/osd.pp -d

4,执行完成查看验证

#ceph -s

#ceph osd tree

注意:添加磁盘时最好在每台主机均匀添加,使每台主机磁盘数量保存一致,这样有利于数据均匀分布

转载于:https://www.cnblogs.com/lxqr/p/8496841.html

ceph_OSD的添加删除相关推荐

  1. linux小脚本批量添加/删除用户

    批量添加/删除用户,当输入add时,判断用户是否存在,存在则显示存在,不存在则添加:当输入del时,判断用户是否存在,存在则删除用户,不存在则显示不存在. #!/bin/bash if [ $1 == ...

  2. 如何恢复,迁移,添加, 删除 Voting Disks

    如何恢复,迁移,添加, 删除 Voting Disks 恢复流程 在11gR2 之前,我们可以直接直接使用dd命令对voting disk进行备份. DD示例 备份votedisk盘: [root@r ...

  3. [PHP] JQuery+Layer实现添加删除自定义标签代码

    JQuery+Layer实现添加删除自定义标签代码 实现效果如下: 实现代码如下: <!doctype html> <html> <head> <meta c ...

  4. Absolute Uninstaller是类似于标准的Windows添加/删除卸载工具

    Absolute Uninstaller是类似于标准的Windows添加/删除卸载工具,但更powerful.可以卸载一些windows系统自带的添加/删除程序无法删除的顽强程序,而且更加完全干净.A ...

  5. Oracle RAC 添加删除节点

    百度搜索,会很多文章关于如何添加删除节点的,而且这个操作也没有什么很多的技术含量,但是自己测试过,记录一下,以备后续查询,同时也希望能给需要的朋友一些帮助. 环境介绍 环境为两个节点RAC:racno ...

  6. html增加删除线,HTML如何添加删除线?

    HTML中可以使用<del>标签和<strike>标签来给文本文字添加删除线.<del> 标签用于定义文档中已被删除的文本:<strike> 标签用于定 ...

  7. angular指令:tm.tags添加/删除标签

    一个添加删除标签angular指令: 在网上找了几个标签插件都不是angular的,而且过于庞大,最小的也要30kb还引用了其他样式. 最后实在受不了自己写了,花4个小时找插件,最后自己2小时写完了. ...

  8. SQL语句添加删除修改字段

    用SQL语句添加删除修改字段 1.增加字段      alter table docdsp    add dspcode char(200) 2.删除字段      ALTER TABLE table ...

  9. php修改新闻分类代码,完整的新闻无限级分类代码,可添加,删除,移动,修改

    //连接数据库教程 $link = mysql教程_connect('localhost','root','密码') or die(mysql_error()); mysql_select_db('s ...

  10. jQuery使用toggleClass方法动态添加删除Class样式的方法

    本文实例讲述了jQuery使用toggleClass方法动态添加删除Class样式的方法.分享给大家供大家参考.具体分析如下: jQuery通过toggleClass方法动态添加删除Class,一次执 ...

最新文章

  1. Hystrix入门指南
  2. OSPF特殊区域之STUB
  3. 被美国主流投资平台看好,虎牙缘何能在上市大军中脱颖而出?
  4. 更改putty字体颜色
  5. 软件实施培训前的准备工作
  6. Java基本语法(11)--三元运算符
  7. mysql jdbc 绑定变量_jdbc测试mysql数据库sql预解析(绑定变量)
  8. P1789 【Mc生存】插火把(python3实现)
  9. IDEA怎么换背景颜色
  10. linux文件分号意思,linux中的分号和,|和||的用法与区别
  11. buff系统 游戏中_泛娱产业:ARPG游戏的技能系统和buff系统的一种实现
  12. 连接共享打印机时提示无法访问计算机,win10共享打印机提示无法访问.你可能没有权限使用网络资源怎么解决...
  13. cad导入mysql_CAD插入一个数据库
  14. 两句css 搞定页面滚动时的卡顿问题?
  15. 性能测试工具loucst使用(最新版本)
  16. 发展型机器人:由人类婴儿启发的机器人. 2.3 类人婴儿机器人
  17. 尝试Ping百度域名后的思考
  18. Docker-windows使用教程
  19. 删除指定位置的元素(数组)
  20. 不是每个音乐节都值得狂欢,抖音就不一样

热门文章

  1. 原因及解决办法:Failed to load module “canberra-gtk-module“
  2. JDK数字格式,由星期几变为周几
  3. 南宁出租车绿灯表示有客,红灯表示空车
  4. 输入法候选词排列的两种新方式
  5. 前置指纹会逐步替代后置指纹
  6. 管理感悟:不要过度自我合理化
  7. java数组函数_Java数组
  8. 成都东软学院大学生计算机基础excel作业,成都东软学院
  9. 查询某个分区是那张表_分库、分表、分区的区别
  10. springboot加载过程_SpringBoot自定义Starter,分析加载过程