ceph 指定OSD建立pool

2022-05-21 22:30:08 字數 4854 閱讀 3955

ceph集群中允許使用混合型別的磁碟,比如一部分磁碟是ssd,一部分是stat。如果針對某些業務小高速磁碟ssd,某些業務需要stat,在建立資源池的時候可以指定建立在某些osd上。

基本步驟有8步:

當前只有stat沒有ssd,但是不影響實驗結果。

1    獲取crush map

[root@ceph-admin getcrushmap]# ceph osd getcrushmap -o /opt/getcrushmap/crushmap

got crush map from osdmap epoch 2482

2    反編譯crush map

[root@ceph-admin getcrushmap]# crushtool -d crushmap -o decrushmap

3    修改crush map

在root default 後面新增下面兩個bucket

root ssd 

root stat

在rules部分新增如下規則:

rule ssd

rule stat

4    編譯crush map

[root@ceph-admin getcrushmap]# crushtool -c decrushmap -o newcrushmap

5    注入crush map

[root@ceph-admin getcrushmap]# ceph osd setcrushmap -i /opt/getcrushmap/newcrushmap 

set crush map

[root@ceph-admin 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    建立資源池

[root@ceph-admin getcrushmap]# ceph osd pool create ssd_pool 8 8

pool 'ssd_pool' created

[root@ceph-admin getcrushmap]# ceph osd pool create stat_pool 8 8

pool 'stat_pool' created

[root@ceph-admin 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

[root@ceph-admin 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    修改資源池儲存規則

[root@ceph-admin getcrushmap]# ceph osd pool set ssd_pool crush_ruleset 1

set pool 28 crush_ruleset to 1

[root@ceph-admin getcrushmap]# ceph osd pool set stat_pool crush_ruleset 2

set pool 29 crush_ruleset to 2

[root@ceph-admin 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

[root@ceph-admin 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規則的語法是

[root@ceph-admin ceph]# ceph osd pool set ssd crush_rule ssd

set pool 2 crush_rule to ssd

[root@ceph-admin ceph]# ceph osd pool set stat crush_rule stat

set pool 1 crush_rule to stat

8    驗證

驗證前先看看ssd_pool 和stat_pool 裡面是否有物件

[root@ceph-admin getcrushmap]# rados ls -p ssd_pool

[root@ceph-admin getcrushmap]# rados ls -p stat_pool

#這兩個資源池中都沒有物件

用rados命令 新增物件到兩個資源池中

[root@ceph-admin getcrushmap]# rados -p ssd_pool put test_object1 /etc/hosts

[root@ceph-admin getcrushmap]# rados -p stat_pool put test_object2 /etc/hosts

[root@ceph-admin getcrushmap]# rados ls -p ssd_pool

test_object1

[root@ceph-admin getcrushmap]# rados ls -p stat_pool

test_object2

#物件新增成功

[root@ceph-admin 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)

[root@ceph-admin 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中。達到預期目

ceph增加osd流程

假如需要新增乙個主機名 osd4 ip 192.168.0.110的osd 1.在osd4建立掛載目錄及放置配置檔案的目錄 ssh 192.168.0.110 這裡是從mon主機ssh到osd4主機 mkdir ceph osd.4 mkdir etc ceph 2.在osd4上格式化ext4的sd...

ceph運維 新增osd

ceph osd create 獲取osd的id號,假設輸出的是2 ssh osd2 登入到要新增到集群的主機 sudo mkdir var lib ceph osd ceph 2 建立新的osd目錄 sudo mkfs.btrfs dev sdb 如果檔案系統用的不是btrfs,在終端輸入mkfs...

ceph 新增osd失敗問題

在ceph集群使用過程中遇到乙個問題,剔除一塊磁碟需要更換新磁碟,使用下面兩個新增命令反覆操作了多次,osd都沒有加到集群裡面,不知道是什麼原因,無奈之下重啟了伺服器,伺服器啟動後,osd設定到了集群中。新增命令應該是生效了,可能是機器處於某種狀態導致新增osd異常,遇到類似問題可以考慮重啟要新增o...