ceph_OSD的添加删除
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的添加删除相关推荐
- linux小脚本批量添加/删除用户
批量添加/删除用户,当输入add时,判断用户是否存在,存在则显示存在,不存在则添加:当输入del时,判断用户是否存在,存在则删除用户,不存在则显示不存在. #!/bin/bash if [ $1 == ...
- 如何恢复,迁移,添加, 删除 Voting Disks
如何恢复,迁移,添加, 删除 Voting Disks 恢复流程 在11gR2 之前,我们可以直接直接使用dd命令对voting disk进行备份. DD示例 备份votedisk盘: [root@r ...
- [PHP] JQuery+Layer实现添加删除自定义标签代码
JQuery+Layer实现添加删除自定义标签代码 实现效果如下: 实现代码如下: <!doctype html> <html> <head> <meta c ...
- Absolute Uninstaller是类似于标准的Windows添加/删除卸载工具
Absolute Uninstaller是类似于标准的Windows添加/删除卸载工具,但更powerful.可以卸载一些windows系统自带的添加/删除程序无法删除的顽强程序,而且更加完全干净.A ...
- Oracle RAC 添加删除节点
百度搜索,会很多文章关于如何添加删除节点的,而且这个操作也没有什么很多的技术含量,但是自己测试过,记录一下,以备后续查询,同时也希望能给需要的朋友一些帮助. 环境介绍 环境为两个节点RAC:racno ...
- html增加删除线,HTML如何添加删除线?
HTML中可以使用<del>标签和<strike>标签来给文本文字添加删除线.<del> 标签用于定义文档中已被删除的文本:<strike> 标签用于定 ...
- angular指令:tm.tags添加/删除标签
一个添加删除标签angular指令: 在网上找了几个标签插件都不是angular的,而且过于庞大,最小的也要30kb还引用了其他样式. 最后实在受不了自己写了,花4个小时找插件,最后自己2小时写完了. ...
- SQL语句添加删除修改字段
用SQL语句添加删除修改字段 1.增加字段 alter table docdsp add dspcode char(200) 2.删除字段 ALTER TABLE table ...
- php修改新闻分类代码,完整的新闻无限级分类代码,可添加,删除,移动,修改
//连接数据库教程 $link = mysql教程_connect('localhost','root','密码') or die(mysql_error()); mysql_select_db('s ...
- jQuery使用toggleClass方法动态添加删除Class样式的方法
本文实例讲述了jQuery使用toggleClass方法动态添加删除Class样式的方法.分享给大家供大家参考.具体分析如下: jQuery通过toggleClass方法动态添加删除Class,一次执 ...
最新文章
- Hystrix入门指南
- OSPF特殊区域之STUB
- 被美国主流投资平台看好,虎牙缘何能在上市大军中脱颖而出?
- 更改putty字体颜色
- 软件实施培训前的准备工作
- Java基本语法(11)--三元运算符
- mysql jdbc 绑定变量_jdbc测试mysql数据库sql预解析(绑定变量)
- P1789 【Mc生存】插火把(python3实现)
- IDEA怎么换背景颜色
- linux文件分号意思,linux中的分号和,|和||的用法与区别
- buff系统 游戏中_泛娱产业:ARPG游戏的技能系统和buff系统的一种实现
- 连接共享打印机时提示无法访问计算机,win10共享打印机提示无法访问.你可能没有权限使用网络资源怎么解决...
- cad导入mysql_CAD插入一个数据库
- 两句css 搞定页面滚动时的卡顿问题?
- 性能测试工具loucst使用(最新版本)
- 发展型机器人:由人类婴儿启发的机器人. 2.3 类人婴儿机器人
- 尝试Ping百度域名后的思考
- Docker-windows使用教程
- 删除指定位置的元素(数组)
- 不是每个音乐节都值得狂欢,抖音就不一样
热门文章
- 原因及解决办法:Failed to load module “canberra-gtk-module“
- JDK数字格式,由星期几变为周几
- 南宁出租车绿灯表示有客,红灯表示空车
- 输入法候选词排列的两种新方式
- 前置指纹会逐步替代后置指纹
- 管理感悟:不要过度自我合理化
- java数组函数_Java数组
- 成都东软学院大学生计算机基础excel作业,成都东软学院
- 查询某个分区是那张表_分库、分表、分区的区别
- springboot加载过程_SpringBoot自定义Starter,分析加载过程