Ceph實踐之存儲池

Ceph對集群中所有存儲資源進行池化管理,pool是一個邏輯上的概念缚甩,其表達的是一組約束條件谱净。本文旨在記錄一下存儲池相關的實際操作。

創(chuàng)建副本存儲池

  1. 創(chuàng)建副本類型的crushrule

命令形式:
ceph osd crush rule create-replicated {crushrule_name} {root_bucket_name} {failure_domain}

例如:
創(chuàng)建一個名為data_ruleset(故障域host擅威,使用data為root bucket)的副本crushrule
ceph osd crush rule create-replicated data_ruleset data host

輸出形如:

[root@node81 ~]# ceph osd tree
ID  CLASS WEIGHT  TYPE NAME                 STATUS REWEIGHT PRI-AFF 
 -9       0.05389 root data        ##root bucket的名字                              
-10       0.01797     host data_host_node81                         
  0   hdd 0.00899         osd.0                 up  1.00000 1.00000 
  1   hdd 0.00899         osd.1                 up  1.00000 1.00000 
-13       0.01797     host data_host_node82                         
  2   hdd 0.00899         osd.2                 up  1.00000 1.00000 
  3   hdd 0.00899         osd.3                 up  1.00000 1.00000 
-15       0.01794     host data_host_node85                         
  4   hdd 0.00897         osd.4                 up  1.00000 1.00000 
  5   hdd 0.00897         osd.5                 up  1.00000 1.00000 
 -1       0.05392 root default                                      
 -3       0.01797     host node81                                   
  0   hdd 0.00899         osd.0                 up  1.00000 1.00000 
  1   hdd 0.00899         osd.1                 up  1.00000 1.00000 
 -5       0.01797     host node82                                   
  2   hdd 0.00899         osd.2                 up  1.00000 1.00000 
  3   hdd 0.00899         osd.3                 up  1.00000 1.00000 
 -7       0.01797     host node85                                   
  4   hdd 0.00899         osd.4                 up  1.00000 1.00000 
  5   hdd 0.00899         osd.5                 up  1.00000 1.00000 
[root@node81 ~]# 
[root@node81 ~]# 
[root@node81 ~]# ceph osd crush rule create-replicated data_ruleset data host
[root@node81 ~]# ceph osd crush rule dump data_ruleset  //查看創(chuàng)建后的data_ruleset詳情
{
    "rule_id": 1,
    "rule_name": "data_ruleset",
    "ruleset": 1,   //crush rule id
    "type": 1,
    "min_size": 1,
    "max_size": 10,
    "steps": [
        {
            "op": "take",
            "item": -9,
            "item_name": "data"  //root bucket
        },
        {
            "op": "chooseleaf_firstn",
            "num": 0,
            "type": "host"   //故障域host
        },
        {
            "op": "emit"
        }
    ]
}

[root@node81 ~]# 


2.創(chuàng)建副本策略存儲池


命令形式:
ceph osd pool create {pool_name} {pg_num} {pgp_num} replicated {crushrule_name}
pg_num的算法:官網推薦100*{disksize}/{size} (size:數據份數)壕探,然后去取結果值最近的2的n次方的值

eg:創(chuàng)建一個名為data的副本存儲池
ceph osd pool create data 256 256 replicated data_ruleset

輸出形如:

[root@node81 ~]# ceph osd pool create data 256 256 replicated data_ruleset
pool 'data' created
[root@node81 ~]# 
[root@node81 ~]# ceph osd pool ls 
data
[root@node81 ~]# 
[root@node81 ~]# ceph osd pool ls  detail  //查看存儲池詳情, size 此時為3
pool 1 'data' replicated size 3 min_size 1 crush_rule 1 object_hash rjenkins pg_num 256 pgp_num 256 last_change 35 flags hashpspool stripe_width 0

[root@node81 ~]# 


3.修改存儲池副本size


如果創(chuàng)建存儲池后不調整size郊丛,那么該size為集群配置默認值李请,即osd_pool_default_size參數決定
手動調整存儲池size
命令形式:
ceph osd pool set {pool_name} size {number}
eg:
修改data為雙副本:
ceph osd pool set data size 2

輸出形如:

[root@node81 ~]# ceph osd pool ls  detail  //此時存儲池為3副本
pool 1 'data' replicated size 3 min_size 1 crush_rule 1 object_hash rjenkins pg_num 256 pgp_num 256 last_change 35 flags hashpspool stripe_width 0

[root@node81 ~]# 
//查看環(huán)境osd_pool_default_size默認值
[root@node81 ~]# cat /etc/ceph/ceph.conf | grep osd_pool_default_size
osd_pool_default_size = 3
[root@node81 ~]# 
[root@node81 ~]# ceph osd pool set data size 2  //修改存儲池為雙副本
set pool 1 size to 2
[root@node81 ~]# 
[root@node81 ~]# ceph osd pool ls  detail  //size此時為2
pool 1 'data' replicated size 2 min_size 1 crush_rule 1 object_hash rjenkins pg_num 256 pgp_num 256 last_change 38 flags hashpspool stripe_width 0

[root@node81 ~]# 
[root@node81 ~]# 


創(chuàng)建糾刪碼存儲池

1.創(chuàng)建erasure-code-profile


命令形式:
ceph osd erasure-code-profile set {profile_name} k={knum} m={mnum} crush-failure-domain={failure_domain} crush-root={root_bucket_name}
或者
ceph osd erasure-code-profile set {profile_name} k={knum} m={mnum} ruleset-failure-domain={failure_domain} ruleset-root={root_bucket_name}

eg:創(chuàng)建一個名為h_profile 策略2+1故障域host的profile
ceph osd erasure-code-profile set h_profile k=2 m=1 crush-failure-domain=host crush_root=data
ceph osd erasure-code-profile set h1_profile k=2 m=1 ruleset-failure-domain=host ruleset_root=data

輸出形如:

[root@node81 ~]# ceph osd erasure-code-profile set h_profile k=2 m=1 crush-failure-domain=host crush_root=data
[root@node81 ~]# 
[root@node81 ~]# ceph osd erasure-code-profile ls  //查看所有的profile文件
default
h_profile
[root@node81 ~]# 
[root@node81 ~]# ceph osd erasure-code-profile get h_profile //獲取某個profile文件詳情
crush-device-class=
crush-failure-domain=host
crush-root=default
crush_root=data
jerasure-per-chunk-alignment=false
k=2
m=1
plugin=jerasure
technique=reed_sol_van
w=8
[root@node81 ~]# 

2.創(chuàng)建糾刪碼類型crushrule


命令形式:
ceph osd crush rule create-erasure {crushrule _name} {erasure-code-profile}

eg:
ceph osd crush rule create-erasure h_ruleset h_profile

輸出形如:

[root@node81 ~]# ceph osd crush rule create-erasure h_ruleset h_profile
created rule h_ruleset at 2
[root@node81 ~]# 
[root@node81 ~]# 
[root@node81 ~]# ceph osd crush rule ls  //查看所有的crushrule
eplicated_rule
data_ruleset
h_ruleset
[root@node81 ~]# ceph osd crush rule dump h_ruleset //查看某個crushrule
{
    "rule_id": 2,
    "rule_name": "h_ruleset",
    "ruleset": 2,
    "type": 3,
    "min_size": 3,
    "max_size": 3,
    "steps": [
        {
            "op": "set_chooseleaf_tries",
            "num": 10
        },
        {
            "op": "set_choose_tries",
            "num": 200
        },
        {
            "op": "take",
            "item": -1,
            "item_name": "default"
        },
        {
            "op": "chooseleaf_indep",
            "num": 0,
            "type": "host"
        },
        {
            "op": "emit"
        }
    ]
}

[root@node81 ~]# 


  1. 創(chuàng)建糾刪碼存儲池

命令形式:
ceph osd pool create {pool_name} {pg_num} {pgp_num} erasure {erasure-code-profile} {crushrule_name}

eg:
ceph osd pool create h 256 256 erasure h_profile h_ruleset

輸出形如:

[root@node81 ~]# ceph osd pool create h 256 256 erasure h_profile h_ruleset
pool 'h' created
[root@node81 ~]# 
[root@node81 ~]# ceph osd pool ls
data
h
[root@node81 ~]# 
[root@node81 ~]# ceph osd pool ls detail
pool 1 'data' replicated size 2 min_size 1 crush_rule 1 object_hash rjenkins pg_num 256 pgp_num 256 last_change 38 flags hashpspool stripe_width 0
pool 2 'h' erasure size 3 min_size 2 crush_rule 2 object_hash rjenkins pg_num 256 pgp_num 256 last_change 42 flags hashpspool stripe_width 131072

[root@node81 ~]# 


刪除存儲池

  • 刪除存儲池
    ceph osd pool rm {pool_name} {pool_name} --yes-i-really-really-mean-it
  • 刪除crushrule
    ceph osd crush rule rm {crushrule_name}
  • 刪除erasure-code-profile(僅適用糾刪碼存儲池)
    ceph osd erasure-code-profile rm {profile_name}

eg:
ceph osd pool rm h h --yes-i-really-really-mean-it
ceph osd crush rule ls
ceph osd crush rule rm h_ruleset
ceph osd erasure-code-profile ls
ceph osd erasure-code-profile rm h_profile

輸出形如:

[root@node81 ~]# ceph osd pool ls 
data
h
[root@node81 ~]# ceph osd pool rm h h --yes-i-really-really-mean-it //刪除存儲池
pool 'h' removed 
[root@node81 ~]# 
[root@node81 ~]# ceph osd pool ls  //查看存儲池是否刪除成功
data
[root@node81 ~]# 
[root@node81 ~]# ceph osd crush rule ls
replicated_rule
data_ruleset
h_ruleset
[root@node81 ~]# 
[root@node81 ~]# ceph osd crush rule rm h_ruleset  //刪除crush rule
[root@node81 ~]# 
[root@node81 ~]# ceph osd crush rule ls //查看crush rule是否刪除成功
replicated_rule
data_ruleset
[root@node81 ~]# 
[root@node81 ~]# ceph osd erasure-code-profile ls
default
h_profile
[root@node81 ~]# 
[root@node81 ~]# ceph osd erasure-code-profile rm h_profile //刪除profile
[root@node81 ~]# 
[root@node81 ~]# ceph osd erasure-code-profile ls //查看profile是否刪除成功
default
[root@node81 ~]# 


調整存儲池屬性

  • 統(tǒng)一命令規(guī)則
    ceph osd pool set {pool_name} {key} {value}
  • 特殊
    調整存儲池配額:
    {max_objects}:數量配額
    {max_bytes}:容量配額
    ceph osd pool set-quota {pool_name} max_objects|max_bytes {value}
    eg:
    ceph osd pool set-quota h max_objects 1000
    ceph osd pool set-quota h max_bytes 1000M

Luminous新特性

ceph Luminous版本支持糾刪碼存儲池作為文件系統(tǒng)數據池/對象存儲數據池/塊設備數據池,但在使用之前厉熟,必須將糾刪碼存儲allow_ec_overwrites設置為true
命令:
ceph osd pool set {erasure_pool_name} allow_ec_overwrites true
New in Luminous: Erasure Coding for RBD and CephFS

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末捻艳,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子庆猫,更是在濱河造成了極大的恐慌认轨,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,755評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件月培,死亡現場離奇詭異嘁字,居然都是意外死亡,警方通過查閱死者的電腦和手機杉畜,發(fā)現死者居然都...
    沈念sama閱讀 93,305評論 3 395
  • 文/潘曉璐 我一進店門纪蜒,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人此叠,你說我怎么就攤上這事纯续。” “怎么了灭袁?”我有些...
    開封第一講書人閱讀 165,138評論 0 355
  • 文/不壞的土叔 我叫張陵猬错,是天一觀的道長。 經常有香客問我茸歧,道長倦炒,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,791評論 1 295
  • 正文 為了忘掉前任软瞎,我火速辦了婚禮逢唤,結果婚禮上拉讯,老公的妹妹穿的比我還像新娘。我一直安慰自己鳖藕,他們只是感情好魔慷,可當我...
    茶點故事閱讀 67,794評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著著恩,像睡著了一般盖彭。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上页滚,一...
    開封第一講書人閱讀 51,631評論 1 305
  • 那天,我揣著相機與錄音铺呵,去河邊找鬼裹驰。 笑死,一個胖子當著我的面吹牛片挂,可吹牛的內容都是我干的幻林。 我是一名探鬼主播,決...
    沈念sama閱讀 40,362評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼音念,長吁一口氣:“原來是場噩夢啊……” “哼沪饺!你這毒婦竟也來了?” 一聲冷哼從身側響起闷愤,我...
    開封第一講書人閱讀 39,264評論 0 276
  • 序言:老撾萬榮一對情侶失蹤整葡,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后讥脐,有當地人在樹林里發(fā)現了一具尸體遭居,經...
    沈念sama閱讀 45,724評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年旬渠,在試婚紗的時候發(fā)現自己被綠了俱萍。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,040評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡告丢,死狀恐怖枪蘑,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情岖免,我是刑警寧澤岳颇,帶...
    沈念sama閱讀 35,742評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站颅湘,受9級特大地震影響赦役,放射性物質發(fā)生泄漏。R本人自食惡果不足惜栅炒,卻給世界環(huán)境...
    茶點故事閱讀 41,364評論 3 330
  • 文/蒙蒙 一掂摔、第九天 我趴在偏房一處隱蔽的房頂上張望术羔。 院中可真熱鬧,春花似錦乙漓、人聲如沸级历。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,944評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽寥殖。三九已至,卻和暖如春涩蜘,著一層夾襖步出監(jiān)牢的瞬間嚼贡,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,060評論 1 270
  • 我被黑心中介騙來泰國打工同诫, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留粤策,地道東北人。 一個月前我還...
    沈念sama閱讀 48,247評論 3 371
  • 正文 我出身青樓误窖,卻偏偏與公主長得像叮盘,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子霹俺,可洞房花燭夜當晚...
    茶點故事閱讀 44,979評論 2 355