ceph 指定OSD创建pool

https://my.oschina.net/wangzilong/blog/1549690

ceph集群中允许使用混合类型的磁盘,比如一部分磁盘是SSD,一部分是STAT。如果针对某些业务小高速磁盘SSD,某些业务需要STAT,在创建资源池的时候可以指定创建在某些OSD上。

基本步骤有8步:

当前只有STAT没有SSD,但是不影响实验结果。

1    获取crush map

[[email protected] getcrushmap]# ceph osd getcrushmap -o /opt/getcrushmap/crushmap
got crush map from osdmap epoch 2482

2    反编译crush map

[[email protected] getcrushmap]# crushtool -d crushmap -o decrushmap

3    修改crush map

在root default 后面添加下面两个bucket

root ssd {
	id -5
	alg straw
	hash 0
	item osd.0 weight 0.01
}
root stat {
        id -6
        alg straw
        hash 0
        item osd.1 weight 0.01
}

在rules部分添加如下规则:

rule ssd{
	ruleset 1
	type replicated
	min_size 1
	max_size 10
	step take ssd
	step chooseleaf firstn 0 type osd
	step emit
}
rule stat{
        ruleset 2
        type replicated
        min_size 1
        max_size 10
        step take stat
        step chooseleaf firstn 0 type osd
        step emit
}

4    编译crush map

[[email protected] getcrushmap]# crushtool -c decrushmap -o newcrushmap

5    注入crush map

[[email protected] getcrushmap]# ceph osd setcrushmap -i /opt/getcrushmap/newcrushmap
set crush map
[[email protected] getcrushmap]# ceph osd tree
ID WEIGHT  TYPE NAME           UP/DOWN REWEIGHT PRIMARY-AFFINITY
-6 0.00999 root stat
 1 0.00999     osd.1                up  1.00000          1.00000
-5 0.00999 root ssd
 0 0.00999     osd.0                up  1.00000          1.00000
-1 0.58498 root default
-2 0.19499     host ceph-admin
 2 0.19499         osd.2            up  1.00000          1.00000
-3 0.19499     host ceph-node1
 0 0.19499         osd.0            up  1.00000          1.00000
-4 0.19499     host ceph-node2
 1 0.19499         osd.1            up  1.00000          1.00000
# 重新查看osd tree 的时候已经看见这个树已经变了。添加了名称为stat和SSD的两个bucket

6    创建资源池

[[email protected] getcrushmap]# ceph osd pool create ssd_pool 8 8
pool ‘ssd_pool‘ created
[[email protected] getcrushmap]# ceph osd pool create stat_pool 8 8
pool ‘stat_pool‘ created
[[email protected] getcrushmap]# ceph osd dump|grep ssd
pool 28 ‘ssd_pool‘ replicated size 3 min_size 2 crush_ruleset 0 object_hash rjenkins pg_num 8 pgp_num 8 last_change 2484 flags hashpspool stripe_width 0
[[email protected] getcrushmap]# ceph osd dump|grep stat
pool 29 ‘stat_pool‘ replicated size 3 min_size 2 crush_ruleset 0 object_hash rjenkins pg_num 8 pgp_num 8 last_change 2486 flags hashpspool stripe_width 0

注意:刚刚创建的两个资源池ssd_pool 和stat_pool 的 crush_ruleset  都是0,下面需要修改。

7    修改资源池存储规则

[[email protected] getcrushmap]# ceph osd pool set ssd_pool crush_ruleset 1
set pool 28 crush_ruleset to 1
[[email protected] getcrushmap]# ceph osd pool set stat_pool crush_ruleset 2
set pool 29 crush_ruleset to 2
[[email protected] getcrushmap]# ceph osd dump|grep ssd
pool 28 ‘ssd_pool‘ replicated size 3 min_size 2 crush_ruleset 1 object_hash rjenkins pg_num 8 pgp_num 8 last_change 2488 flags hashpspool stripe_width 0
[[email protected] getcrushmap]# ceph osd dump|grep stat
pool 29 ‘stat_pool‘ replicated size 3 min_size 2 crush_ruleset 2 object_hash rjenkins pg_num 8 pgp_num 8 last_change 2491 flags hashpspool stripe_width 0

# luminus 版本设置pool规则的语法是
[[email protected] ceph]# ceph osd pool set ssd crush_rule ssd
set pool 2 crush_rule to ssd
[[email protected] ceph]# ceph osd pool set stat crush_rule stat
set pool 1 crush_rule to stat

8    验证

验证前先看看ssd_pool 和stat_pool 里面是否有对象

[[email protected] getcrushmap]# rados ls -p ssd_pool
[[email protected] getcrushmap]# rados ls -p stat_pool
#这两个资源池中都没有对象

用rados命令 添加对象到两个资源池中

[[email protected] getcrushmap]# rados -p ssd_pool put test_object1 /etc/hosts
[[email protected] getcrushmap]# rados -p stat_pool put test_object2 /etc/hosts
[[email protected] getcrushmap]# rados ls -p ssd_pool
test_object1
[[email protected] getcrushmap]# rados ls -p stat_pool
test_object2
#对象添加成功
[[email protected] getcrushmap]# ceph osd map ssd_pool test_object1
osdmap e2493 pool ‘ssd_pool‘ (28) object ‘test_object1‘ -> pg 28.d5066e42 (28.2) -> up ([0], p0) acting ([0,1,2], p0)
[[email protected] getcrushmap]# ceph osd map stat_pool test_object2
osdmap e2493 pool ‘stat_pool‘ (29) object ‘test_object2‘ -> pg 29.c5cfe5e9 (29.1) -> up ([1], p1) acting ([1,0,2], p1)

上面验证结果可以看出,test_object1 存入osd.0中,test_object2 存入osd.1中。达到预期目的

原文地址:https://www.cnblogs.com/wangmo/p/11125697.html

时间: 2024-11-08 08:23:48

ceph 指定OSD创建pool的相关文章

创建 Pool & VIP - 每天5分钟玩转 OpenStack(122)

上节完成了 LBaaS 配置,今天我们开始实现如下 LBaaS 环境. 环境描述如下:1. 创建一个 Pool "web servers".2. 两个 pool member "WEB1" 和 "WEB2",均为运行 Ubuntu cloud image 的 instance.3. load balancer VIP 与 floating IP 关联.4. 位于外网的 client 通过 floating IP 外网访问 web server.

ceph增加osd流程

假如需要新增一个主机名:osd4 ip:192.168.0.110的OSD1.在osd4创建挂载目录及放置配置文件的目录 ssh 192.168.0.110 (这里是从mon主机ssh到osd4主机) mkdir /ceph/osd.4 mkdir /etc/ceph 2.在osd4上格式化ext4的sda3分区,挂载分区. mkfs.ext4 /dev/sda3 mount -o user_xattr /dev/sda3 /ceph/osd.43.将mon主机的id_dsa.pub拷至osd4

Openstack针对nova,cinder,glance使用ceph的虚拟机创建机制优化

 今天在开源中国社区看到有如下一个问题: 已经成功把ceph作为cinder和 glance的后端,但是如果作为nova的后端,虚拟机启动速度非常慢,网上查了一下是因为openstack创建虚拟机的时候通过ceph取镜像创建虚拟机再把虚拟机存回ceph的步骤浪费了很多时间,是否有办法不把镜像取到本地,而是直接在ceph的存储池里完成虚拟机的创建呢? 实际上,我当前也是把ceph作为nova,cinder,glance三者的后端,创建虚拟机速度非常慢.查了一下相关和资料,是有新的处理方式,当前

ceph摘掉osd节点

1.关闭ceph osd进程 service ceph stop osd 2.让ceph集群中的数据进行平衡 3.等所有的pg都达到active+clean平衡度时删除osd节点 删除前ceph集群状态 [[email protected] ~]# ceph osd tree # id    weight  type name       up/down reweight -1      4       root default -2      1               host os-n

Android 在指定目录创建并写入文件

目标: 在file目录中创建文件,写入文本信息.用于和App之间进行数据共享. 经过关键字的搜索,发现都是推荐的以下方法: FileOutputStream outputStream = openFileOutput(fileName, mode); 其中: name:用于指定文件名称,不能包含路径分隔符"/",如果文件不存在,Android会自动创建它.比如 info.txt 创建的文件保存在/data/data/<package name>/files/目录中. mod

Java如何在指定端口创建套接字?

在Java编程中,如何在指定端口创建套接字并连接到指定服务器的端口? 下面的例子演示了Socket类的Socket构造函数,并且使用getLocalPort(),getLocalAddress(),getInetAddress()以及getPort()方法获取Socket细节. package com.yiibai; import java.io.IOException; import java.net.InetAddress; import java.net.Socket; import ja

CEPH之osd批量创建

一直出差都没时间写了... 今天创建150个osd,发现手动写ceph.conf有点头大,研究了下vim的递增功能. 很简单就是一条命令: :let i=0|g/REG/s//\=i/|let i=i+1 它可以匹配你文本中的REG,然后按照你i+n,每次递增加+n 上面这条命令的作用就是,查找文本中的REG字符,然后从第一个开始替换成0,然后依次+1 这样在ceph.conf中,我们可以首先复制出来150个[osd.gggg],然后在使用上面的命令来递增,同时vim还支持ctrl+A来对数字+

理解 OpenStack &amp; Ceph (4):Ceph 的基础数据结构 [Pool, Image, Snapshot, Clone]

本系列文章会深入研究 Ceph 以及 Ceph 和 OpenStack 的集成: (1)安装和部署 (2)Ceph RBD 接口和工具 (3)Ceph 物理和逻辑结构 (4)Ceph 的基础数据结构 (5)Ceph 与 OpenStack 集成的实现 (6)TBD 1 Pool(池) Pool 的概念前面讲过了,Ceph 支持丰富的对 Pool 的操作,主要的包括: 列表.创建和删除 pool ceph osd pool create {pool-name} {pg-num} [{pgp-num

ceph学习笔记之五 Pool与映射过程

Pool Pool是一个抽象的存储池,它规定了数据冗余的类型以及对应的副本分布策略.目前实现了两种Pool类型: Replicated类型和Erasure Code类型.一个Pool由多个PG构成. 对象映射过程 对象映射过程指的是查找对象在集群中分布的位置信息,其过程分为两步: A.对象到PG的映射.这个过程是静态HASH映射(加入PG Split后实际变成了动态HASH映射方式),通过Object_id计算出HASH值, 用该Pool的PG的总数量PG_Num对HASH值取模,就可以获得该对