版本:ceph L 版本 12.2.1
环境:单节点 15 osd

-1              0                 root        default -3       94.53119     host node1                                  0   hdd  5.37108         osd.0               up  1.00000 1.00000 1   hdd  5.37108         osd.1               up  1.00000 1.00000 2   hdd  5.37108         osd.2               up  1.00000 1.00000 3   hdd  5.37108         osd.3               up  1.00000 1.00000 4   hdd  1.75781         osd.4               up  1.00000 1.00000 5   hdd  7.12891         osd.5               up  1.00000 1.00000 6   hdd  7.12891         osd.6               up  1.00000 1.00000 7   hdd  7.12891         osd.7               up  1.00000 1.00000 8   hdd  7.12891         osd.8               up  1.00000 1.00000 9   hdd  7.12891         osd.9               up  1.00000 1.00000 10   hdd  7.12891         osd.10              up  1.00000 1.00000 11   hdd  7.12891         osd.11              up  1.00000 1.00000 12   hdd  7.12891         osd.12              up  1.00000 1.00000 13   hdd  7.12891         osd.13              up  1.00000 1.00000 14   hdd  7.12891         osd.14              up  1.00000 1.00000
创建根和crush 规则
  • 取出两个osd 并重新指定osd的根,方便查看
    ceph osd crush add osd.0 5.37108 host=test_rep_pool_1 root=test_rep
    ceph osd crush add osd.1 5.37108 host=test_rep_pool_2 root=test_rep

    ID  CLASS WEIGHT   TYPE NAME                STATUS REWEIGHT PRI-AFF
    -16       10.74216 root test_rep
    -15        5.37108     host test_rep_pool_1                         0   hdd  5.37108         osd.0                up  1.00000 1.00000
    -19        5.37108     host test_rep_pool_2                         1   hdd  5.37108         osd.1                up  1.00000 1.00000
    
  • 创建crush规则并指定根
    ceph osd crush rule create-simple test_rep_rule test_rep host firstn
    该命令中test_rep_rule为要创建的crush rule的名称,test_rep为该rule指定的根名称,即上一步创建的root命称test_rep
创建资源池
  • 创建资源池并指定根
    ceph osd pool create test_rep_pool 128 128 test_rep_rule
    创建名称为test_rep_pool的资源池,pg数目为128,pgp数目为128,指定的crush规则为test_rep_rule
  • 查看创建后的资源池详细信息
    ceph osd pool ls detail

    pool 2 'test_rep_pool' replicated size 3 min_size 2 crush_rule 2 object_hash rjenkins pg_num 128 pgp_num 128 last_change 98 flags hashpspool stripe_width 0
    
  • 查看该存储池使用的crush 规则信息
    [root@node1 ~]# ceph osd crush rule dump test_rep_rule
    `{"rule_id": 2, #当前规则的编号
    "rule_name": "test_rep_rule", #当前规则名称
    "ruleset": 2, #当前规则所属的规则集,
    "type": 1, #一个字符串值,指定存储池类型是副本还是纠删吗,1 则为副本,3则为纠删码
    "min_size": 1,#如果存储池副本数小于该值,则crush不会为该存储池使用该规则
    "max_size": 10,#如果存储池副本数大于该值,则crush不会为该存储池使用该规则,即副本池目前支持的最大副本数为10副本,再大就会报异常
    "steps": [{"op": "take","item": -16,"item_name": "test_rep"},{"op": "chooseleaf_firstn","num": 0,"type": "host"},{"op": "emit"}
    ]
    }
    
修改crush规则
  • 从当前节点的mon获取CURSH map(如果在集群中,可以在任何一个节点获取)
    ceph osd getcrushmap -o crush_map_file
    该命令会在当前目录下生成一个名叫crush_map_file的文件,名称可以自己去更改

    [root@node1 ~]# ceph osd getcrushmap -o crush_map_test
    41
    [root@node1 ~]# ll crush_map_test
    -rw-r--r-- 1 root root 2337 May  4 15:45 crush_map_test
    
  • 使用crushtool工具反编译以上文件,使其成为我们能够阅读的格式
    crushtool -d crush_map_test -o crush_map_test_decompiel

    [root@node1 ~]# crushtool -d crush_map_test -o crush_map_test_decompiel
    [root@node1 ~]# ll crush_map_*
    -rw-r--r-- 1 root root 2337 May  4 15:45 crush_map_test
    -rw-r--r-- 1 root root 3658 May  4 15:48 crush_map_test_decompiel
    
  • crush_map_test_decompiel文件进行编辑修改
    #可以看到在begin crush map和end crush map之间有很对crush map相关的信息,我们只修改部分我们自己的信息
    #begin  crush map
    ...
    rule test_rep_rule {id 2type replicatedmin_size 1 max_size 5 #修改该max_size 为5step take test_repstep chooseleaf firstn 0 type hoststep emit
    }
    
  • 修改完成后需要重新编译修改后的crush map文件为新的文件
    crushtool -c crush_map_test_decompiel -o crush_new_map
  • 将修改后的crush_new_map注入到原ceph集群中
    ceph osd setcrushmap -i crush_new_map
  • 重新查看修改后的crush规则
    [root@node1 ~]# ceph osd crush rule dump test_rep_rule
    {"rule_id": 2,
    "rule_name": "test_rep_rule",
    "ruleset": 2,
    "type": 1,
    "min_size": 1,
    "max_size": 5, #最大的副本数已经变为5
    "steps": [{"op": "take","item": -16,"item_name": "test_rep"},{"op": "chooseleaf_firstn","num": 0,"type": "host"},{"op": "emit"}
    ]
    }
    

修改ceph crush map,并指定到资源池相关推荐

  1. ceph admin socket修改ceph配置文件

    目前有两种动态修改的方式来让ceph中各个组件的配置生效,所以介绍如下两种方式方便我们进行功能或者代码的调试 使用ceph daemon方式修改 ceph daemon osd.0 help用于osd ...

  2. CentOS 修改源为163和指定epel源和Docker安装

    CentOS 修改源为163和指定epel源和Docker安装 地址:http://mirrors.163.com/.help/centos.html 使用说明 首先备份/etc/yum.repos. ...

  3. js用map筛选指定元素(ES6的map方法)

    1.js用map筛选指定元素 let arr = [1,2,3] //如果条件是true,就加入新newArr中 let newArr = arr.filter(item => item> ...

  4. 修改VisualSVN Server地址为指定的ip地址(亲测可用)

    1.打开svn服务端,如下图: 2.选中[VisualSVN Server(Local)],右键选择[Properties],如下图: 3.在VisualSVN Server Properties窗口 ...

  5. 微信小程序——数组操作 (增加删除修改遍历)map、filter、forEach、find的用法、二维数组,排序,求和、指定长度数组赋值

    一.数组的操作 Array.push() ->在数组后面继续插入内容 Array.pop() ->拿走数组最后一个内容 Array-shift()->拿走数组的第一个内容 (unsh ...

  6. elastic 修改map_Amazon Elastic Map Reduce使用Apache Mahout计算建议

    elastic 修改map Apache Mahout是一个"可扩展的机器学习库",其中包括各种单节点和分布式推荐算法的实现. 在上一篇博客文章中, 我描述了如何在单个节点上实现在 ...

  7. 设置开机ceph自动map rbd块设备

    2019独角兽企业重金招聘Python工程师标准>>> 1. 先下载init-rbdmap到/etc/init.d目录: wget https://raw.github.com/ce ...

  8. 利用Google Map显示指定位置地理位置

    首先,到google申请Google Maps API,申请后会给你一个key还有一段代码 http://code.google.com/apis/maps/index.html 要注意的是一个 AP ...

  9. 从一致性hash到ceph crush算法演进图谱(持续更新)

    参考文档: https://ceph.com/wp-content/uploads/2016/08/weil-crush-sc06.pdf Ceph剖析:数据分布之CRUSH算法与一致性Hash

最新文章

  1. 学生的新增mySQL文档_MySQL增删改查
  2. 彻底卸载 RAD Studio 2009/2010/XE+ 的步骤
  3. dicom虚拟打印服务器,DICOM打印服务器软件
  4. 内蒙古农大孙志宏教授证实超深度混合宏基因组测序能够对人类肠道微生物组中的低丰度物种进行基因组和功能表征...
  5. 二叉搜索树 (BST)
  6. MyBatis复习(四):#{}占位符与SQL传参
  7. freeswitch 基于webrtc网页视频、语音通话官方例子video_demo安装
  8. Qt程序运行时报错C:\user\administrator\SogouInput\Components\Error程序异常终止
  9. Java 代理中转下载 url 文件
  10. C语言输出9 * 9口诀。
  11. C语言中绝对值的表示的巧妙方法和累加的解题
  12. 分享史上Java最牛逼,最简短的代码
  13. IMX6ull_Linux驱动编写(1)
  14. IDEA官方中文插件!!!
  15. adb的问题“No command ‘adb’ found, did you mean:”
  16. Node.js的环境搭建方法和 npm 的使用方法
  17. lstrcpyn和strncpy
  18. 计算机电子琴歌声号码,电子琴歌音色节奏一览表.xls
  19. 【Codecs系列】几个开源的视频编解码器介绍
  20. 微模块动环检测(动环监控模块)

热门文章

  1. DP UVALive 6506 Padovan Sequence
  2. [翻译]自动维护索引重新生成组织的SQL批处理语句
  3. stm32f302实现斩波控制步进电机_什么是步进电机控制器?
  4. iphone如何信任软件_你还在用大众点评吗?评价软件失去信任还如何活下去
  5. Java数组传参sql_Java中如何传一个数组作为筛选条件操作数据库(sql中foreach的使用)...
  6. 野火开发版屏幕_鸿蒙OS手机版正式发布!副总裁现场表态:我们已经准备好了...
  7. 另存为里面没有jpg_选用打印捕捉功能将 SolidWorks 画面另存为JPG格式高清大图
  8. linux双物理机weblogic集群,linux下weblogic多机器集群部署要点
  9. 函数重载需要注意的点
  10. 第52章,bitmap图像处理(从零开始学android),第52章、Bitmap图像处理(从零开始学Android)...