Ceph 進階系列(二):如何讓某個 pool使用特定的OSD設備 (2 of 2,luminous新特性)

從GitHub上Clone Ceph項目,我是基於(ceph version 12.2.11 luminous 版本)的代碼來分析的

一、前言:

上一篇Ceph 進階系列(二):如何讓某個 pool使用特定的OSD設備 (1 of 2,手動版)講了複雜的手動版,如何讓某個 pool使用特定的OSD設備。而luminous版本的新特性因爲有磁盤智能分組功能,用戶只需要用命令創建一個新的rule就可以了,而不必手動編輯crush map文件)。

二、如何讓某個 pool使用特定的OSD設備(luminous新特性):

luminous版本的ceph新增了一個功能crush class,這個功能又可以稱爲磁盤智能分組。默認情況下,在創建osd的時候會自動識別設備類型,然後設置該設備爲相應的類。通常有三種class類型:hdd,ssd,nvme,crush map文件的內容如下:

# devices
device 0 osd.0 class ssd
device 1 osd.1 class ssd
device 2 osd.2 class hdd
device 3 osd.3 class hdd

而查看OSD設備的class 類型命令如下:

$  ceph osd crush class ls
[
    "ssd",
    "hdd"
]

默認情況下,在創建OSD的時候也會添加自動識別設備類型到相應的bucket(例如,host,root等),如下:

host ubuntu-sebre {
        id -5           # do not change unnecessarily
        id -6 class ssd         # do not change unnecessarily
        id -7 class hdd         # do not change unnecessarily
        # weight 0.039
        alg straw2
        hash 0  # rjenkins1
        item osd.2 weight 0.019
        item osd.3 weight 0.019
}

root default {
        id -1           # do not change unnecessarily
        id -2 class ssd         # do not change unnecessarily
        id -8 class hdd         # do not change unnecessarily
        # weight 0.068
        alg straw2
        hash 0  # rjenkins1
        item ubuntu weight 0.029
        item ubuntu-sebre weight 0.039
}

所以對於luminous版本來說,想要某個pool使用ssd,某個pool使用hdd, 某個pool使用nvme,用戶只需要用命令創建一個新的rule就可以了。如下命令,創建一個使用ssd的rule給某個pool用:

//下面的命令創建一個rule,它的名字爲rule-pool-ssd,容錯性爲replicated,take使用bucket名爲default的root且只使用它的class ssd,select使用osd類型
$ceph osd crush rule create-replicated rule-pool-ssd default osd ssd 

//上面命令生成對應的rule如下:
rule rule-pool-ssd{
        id 1
        type replicated
        min_size 1
        max_size 10
        step take default class ssd
        step chooseleaf firstn 0 type host
        step emit
}

三、使用新創建的rule

# luminus 版本設置pool規則的語法:ceph osd pool set <pool name> crush_rule <rule name>

參考:

luminous的新特性參考了 ceph-用命令創建一個使用rule-ssd規則的存儲池

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章