luminous版本的ceph新增了一个功能crush class,这个功能又可以称为磁盘智能分组。因为这个功能就是根据磁盘类型自动的进行属性的关联,然后进行分类。无需手动修改crushmap,极大的减少了人为的操作。以前的操作有多麻烦可以看看:ceph crushmap

ceph中的每个osd设备都可以选择一个class类型与之关联,默认情况下,在创建osd的时候会自动识别设备类型,然后设置该设备为相应的类。通常有三种class类型:hdd,ssd,nvme。

由于当前实验环境下没有ssd和nvme设备,只好修改class标签,假装为有ssd设备,然后进行实验。

一. 修改crush class:

1,查看当前集群布局:

[root@node3 ~]# ceph osd tree
ID CLASS WEIGHT  TYPE NAME      STATUS REWEIGHT PRI-AFF
-1       0.05878 root default
-3       0.01959     host node1                         0   hdd 0.00980         osd.0      up  1.00000 1.00000 3   hdd 0.00980         osd.3      up  1.00000 1.00000
-5       0.01959     host node2                         1   hdd 0.00980         osd.1      up  1.00000 1.00000 4   hdd 0.00980         osd.4      up  1.00000 1.00000
-7       0.01959     host node3                         2   hdd 0.00980         osd.2      up  1.00000 1.00000 5   hdd 0.00980         osd.5      up  1.00000 1.00000

可以看到只有第二列为CLASS,只有hdd类型。
通过查看crush class,确实只有hdd类型

[root@node3 ~]# ceph osd crush class ls
["hdd"
]

2,删除osd.0,osd.1,osd.2的class:

[root@node3 ~]# for i in 0 1 2;do ceph osd crush rm-device-class osd.$i;done
done removing class of osd(s): 0
done removing class of osd(s): 1
done removing class of osd(s): 2

再次通过命令ceph osd tree查看osd.0,osd.1,osd.2的class

[root@node3 ~]# ceph osd tree
ID CLASS WEIGHT  TYPE NAME      STATUS REWEIGHT PRI-AFF
-1       0.05878 root default
-3       0.01959     host node1                         0       0.00980         osd.0      up  1.00000 1.00000 3   hdd 0.00980         osd.3      up  1.00000 1.00000
-5       0.01959     host node2                         1       0.00980         osd.1      up  1.00000 1.00000 4   hdd 0.00980         osd.4      up  1.00000 1.00000
-7       0.01959     host node3                         2       0.00980         osd.2      up  1.00000 1.00000 5   hdd 0.00980         osd.5      up  1.00000 1.00000

可以发现osd.0,osd.1,osd.2的class为空

3,设置osd.0,osd.1,osd.2的class为ssd:

[root@node3 ~]# for i in 0 1 2;do ceph osd crush set-device-class ssd osd.$i;done
set osd(s) 0 to class 'ssd'
set osd(s) 1 to class 'ssd'
set osd(s) 2 to class 'ssd'

再次通过命令ceph osd tree查看osd.0,osd.1,osd.2的class

[root@node3 ~]# ceph osd tree
ID CLASS WEIGHT  TYPE NAME      STATUS REWEIGHT PRI-AFF
-1       0.05878 root default
-3       0.01959     host node1                         3   hdd 0.00980         osd.3      up  1.00000 1.00000 0   ssd 0.00980         osd.0      up  1.00000 1.00000
-5       0.01959     host node2                         4   hdd 0.00980         osd.4      up  1.00000 1.00000 1   ssd 0.00980         osd.1      up  1.00000 1.00000
-7       0.01959     host node3                         5   hdd 0.00980         osd.5      up  1.00000 1.00000 2   ssd 0.00980         osd.2      up  1.00000 1.00000

可以看到osd.0,osd.1,osd.2的class变为ssd
再查看一下crush class:

[root@node3 ~]# ceph osd crush class ls
["hdd","ssd"
]

可以看到class中多出了一个名为ssd的class

4,创建一个优先使用ssd设备的crush rule:
创建了一个rule的名字为:rule-ssd,在root名为default下的rule

[root@node3 ~]# ceph osd crush rule create-replicated rule-ssd default  host ssd

查看集群的rule:

[root@node3 ~]# ceph osd crush rule ls
replicated_rule
rule-ssd

可以看到多出了一个名为rule-ssd的rule
通过下面的命令下载集群crushmap查看有哪些变化:

[root@node3 ~]# ceph osd getcrushmap -o crushmap
20
[root@node3 ~]# crushtool -d crushmap -o crushmap
[root@node3 ~]# cat crushmap

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 chooseleaf_vary_r 1
tunable chooseleaf_stable 1
tunable straw_calc_version 1
tunable allowed_bucket_algs 54# devices
device 0 osd.0 class ssd
device 1 osd.1 class ssd
device 2 osd.2 class ssd
device 3 osd.3 class hdd
device 4 osd.4 class hdd
device 5 osd.5 class hdd# 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 node1 {id -3           # do not change unnecessarilyid -4 class hdd         # do not change unnecessarilyid -9 class ssd         # do not change unnecessarily# weight 0.020alg straw2hash 0  # rjenkins1item osd.0 weight 0.010item osd.3 weight 0.010
}
host node2 {id -5           # do not change unnecessarilyid -6 class hdd         # do not change unnecessarilyid -10 class ssd                # do not change unnecessarily# weight 0.020alg straw2hash 0  # rjenkins1item osd.1 weight 0.010item osd.4 weight 0.010
}
host node3 {id -7           # do not change unnecessarilyid -8 class hdd         # do not change unnecessarilyid -11 class ssd                # do not change unnecessarily# weight 0.020alg straw2hash 0  # rjenkins1item osd.2 weight 0.010item osd.5 weight 0.010
}
root default {id -1           # do not change unnecessarilyid -2 class hdd         # do not change unnecessarilyid -12 class ssd                # do not change unnecessarily# weight 0.059alg straw2hash 0  # rjenkins1item node1 weight 0.020item node2 weight 0.020item node3 weight 0.020
}# rules
rule replicated_rule {id 0type replicatedmin_size 1max_size 10step take defaultstep chooseleaf firstn 0 type hoststep emit
}
rule rule-ssd {id 1type replicatedmin_size 1max_size 10step take default class ssdstep chooseleaf firstn 0 type hoststep emit
}

end crush map

可以看到在root default下多了一行: id -12 class ssd。在rules下,多了一个rule rule-ssd其id为1

5,创建一个使用该rule-ssd规则的存储池:

[root@node3 ~]# ceph osd pool create ssdpool 64 64 rule-ssd
pool 'ssdpool' created

查看ssdpool的信息可以看到使用的crush_rule 为1,也就是rule-ssd

[root@node3 ~]# ceph osd pool ls detail
pool 1 'ssdpool' replicated size 3 min_size 2 crush_rule 1 object_hash rjenkins pg_num 64 pgp_num 64 last_change 39 flags hashpspool stripe_width 0

6,创建对象测试ssdpool:
创建一个对象test并放到ssdpool中:

[root@node3 ~]# rados -p ssdpool ls
[root@node3 ~]# echo "hahah" >test.txt
[root@node3 ~]# rados -p ssdpool put test test.txt
[root@node3 ~]# rados -p ssdpool ls
test

查看该对象的osd组:

[root@node3 ~]# ceph osd map ssdpool test
osdmap e46 pool 'ssdpool' (1) object 'test' -> pg 1.40e8aab5 (1.35) -> up ([1,2,0], p1) acting ([1,2,0], p1)

可以看到该对象的osd组使用的都是ssd磁盘,至此验证成功。可以看出crush class相当于一个辨别磁盘类型的标签。

ceph-创建使用rule-ssd规则的存储池相关推荐

  1. Ceph 创建/删除存储池、设置存储池副本数

    1.设置存储池副本数 $ ceph osd pool get cephrbd size $ ceph osd pool set cephrbd size 3 2. 打印存储池列表 $ ceph osd ...

  2. win10存储池_3个光威480G SSD组WIN10存储池,深度测试到底值不值得搞

    上次由于我SSD不够,所以我用虚拟硬盘的方式,虚拟了3个VHDX硬盘,组了个奇偶校验的存储池,并且简单的做了测试.测试结果是,组存储池确实提高了我们的数据安全性.WIN10存储池,可以让我们玩家省去组 ...

  3. 安卓应用安全指南 4.2.2 创建/使用广播接收器 规则书

    4.2.2 创建/使用广播接收器 规则书 原书:Android Application Secure Design/Secure Coding Guidebook 译者:飞龙 协议:CC BY-NC- ...

  4. linux 目录防篡改,Linux服务器下如何创建文件防篡改规则

    我的服务器里有十几个网站,过不了一二天每个网站的首页都会被修改,加入一段隐藏框架的代码,这段代码连接的文件是有毒的. 我在服务器上查了很多次都没有发现病毒. 怎么清除啊- 随着信息技术的飞速发展,信息 ...

  5. 【实操】创建云监控报警规则

    大家好,本期为大家介绍如何使用云监控报警服务.报警服务提供监控数据的报警功能,我们通过设置报警规则来定义报警系统如何检查监控数据,并在监控数据满足报警条件时发送报警通知.对我们的重要监控指标设置报警规 ...

  6. dw中html怎么创建css,Dreamweaver创建新的CSS规则

    在CSS样式表中,我们可以创建一个CSS规则来自动完成HTML标签的格式设置.class或者ID属性所标识的文本范围的格式设置. 一.使用Dreamweaver CS5创建新的CSS规则 1. 打开文 ...

  7. 【ceph相关】pcie ssd相关问题处理

    一.前言 1.背景 基于高性能计算场景,我们常常需要用到一些高性能的SSD作为缓存加速,譬如pcie ssd等,本文主要记录在使用pcie ssd作为ceph osd时遇到的一些问题及对应处理方法 2 ...

  8. 《解释性机器学习》笔记(五):Rule Fit 规则拟合

    原文:<Interpretable machine learning> Christophm 规则拟合 就是以决策规则的形式,检测特征间的交互.(决策规则见笔记四) 两部分: 从决策树间创 ...

  9. 哪些人能创建百度百科词条,创建百科有什么规则

    在百度上,我们搜索一个人名,如果是一个知名人物,往往排在第一位的都是介绍他的百度百科词条.于是很多人也想给自己创建一个百度百科,但是哪些人才可以创建百度百科呢,又该如何操作创建百科呢,下面洛希爱做百科 ...

  10. Login rule 权限规则设置自动跳转页面

    https://docs.servicenow.com/bundle/helsinki-platform-administration/page/administer/login/task/t_Log ...

最新文章

  1. 2018-1-20:左移和右移运算以及和(无符号右移)的区别以及位运算的小题目...
  2. QT+OPENCV实现录屏功能
  3. 算法的时间和空间复杂度
  4. ES6,Array.copyWithin()函数的用法
  5. 【网址收藏】VMware虚拟机安装Windows7
  6. 问题引发由于与GI相关的python脚本中的错误,Gnome终端无法启动
  7. 人工智能芯片设计pdf_在芯片设计中引入人工智能
  8. java多线程 生产者消费者_java多线程之生产者消费者经典问题 - 很不错的范例
  9. Java集合系列之四大常用集合(ArrayList、LinkedList、HashSet、HashMap)的用法
  10. url即统一资源定位符
  11. 2021年中国制药机械市场趋势报告、技术动态创新及2027年市场预测
  12. python办公自动化案例-用python进行办公自动化都需要学习什么知识呢?
  13. ExtraPhrase:一种针对抽象式(生成式)摘要的数据增强方法
  14. Linux进阶之bond链路聚合
  15. 关于UIAlertAction如何修改sheet上的字体颜色
  16. oracle查询asm的绝对路径,ASMCMD 工具管理ASM目录及文件
  17. 纯c语言----学生成绩管理系统
  18. 计算机第一级开机密码设置,电脑如何设置开机密码 电脑开机密码设置方法
  19. 【深入kotlin】 - 匿名函数、闭包和接收者
  20. 李沐动手学深度学习V2-RNN循环神经网络从零实现

热门文章

  1. cvpr 注意力机制_计算机视觉中的注意力机制
  2. Java项目:基于java+ssm生鲜超市进销存管理系统--计算机毕业设计
  3. 光盘显示0字节可用_多么愚蠢的想法:用光盘来代替U盘
  4. u盘提示需要格式化?怎么实现数据恢复?
  5. WPF中应用toolkit Chart控件安装
  6. Oracle并集union和union all
  7. BUUCTF misc 喵喵喵
  8. scrapy框架常用从头到尾巴
  9. 2014 年度 Git@OSC【非GitHub】 最热门的 50 个项目
  10. Python 面向对象 (六) 实例学员管理系统