1. 程式人生 > >新增/刪除osd節點步驟

新增/刪除osd節點步驟

新增osd節點node4:

1、ceph osd tree #檢視目前cluster 狀態

`df -h /mnt/ceph-vol1`  #確保node1掛載了rbd,  在節點 node1上執行

2、在節點node4上安裝ceph ,並複製ceph.conf到其相應位置,同時在/etc/hosts裡新增節點node4和相應ip,並推送到所有節點

3、檢視node4上可用的硬碟以新增osd

`ceph-deploy disk list ceph-node4`

4、確保node1上有充足的空間進行寫資料,執行下面寫命令的同時擴充套件叢集:

`dd if=/dev/zero of=/mnt/ceph-vol1/file1 count=10240 bs=1M`  #node1節點

`ceph-deploy disk zap ceph-node4:sdb ceph-node4:sdc ceph-node4:sdd` #node4節點

`ceph-deploy osd create ceph-node4:sdb ceph-node4:sdc ceph-node4:sdd`  #node4節點

`watch ceph status`

在node4硬碟新增完成,叢集會恢復健康

5、ceph osd tree 檢視擴充套件後的cluster 狀態

刪除osd 節點的node4

1、ceph osd tree 檢視節點node4上的所有osd,比如說是(osd.9 osd.10 osd.11三個)

2、把node4上的所有osd 踢出叢集: #node1節點執行

`ceph osd out osd.9`

`ceph osd out osd.10`

`ceph osd out osd.11`

3、讓node4上的所有osd 停止工作: # node4執行

` service ceph stop osd.9`

`service ceph stop osd.10`

`service ceph stop osd.11`

4、檢視node4上osd的狀態是否為 down,權重為0

`ceph osd tree`

5、移除node4上的所有osd:

`ceph osd crush remove osd.9`

`ceph osd crush remove osd.10`

`ceph osd crush remove osd.11`

6、刪除 node4上所有osd的配置key:

`ceph auth del osd.9`

`ceph auth del osd.10`

`ceph auth del osd.11`

7、刪除節點node4:

`ceph osd crush remove ceph-node4`

替換一個失效的磁碟驅動

首先 ceph osd tree檢視down掉的osd ;把重啟無效,因硬碟問題down掉的osd 及相關key移除(比如是node1節點上的osd.0)。

ceph osd out osd.0       #都在node1節點下執行
ceph osd crush rm osd.0
ceph auth del osd.0
ceph osd rm osd.0

如果是物理機,可直接新增硬碟;虛擬環境的話,需要先關機然後新增硬碟,再開機。

1、檢視新新增的磁碟的資訊(比如是sdb):

`ceph-deploy disk list node1`

2、zap新磁碟:

`ceph-deploy disk zap node1:sdb`

3、在此磁碟新建一個osd,ceph會把它新增為osd.0:

`ceph-deploy --overwrite-conf osd create node1:sdb`

一旦osd新建成功,ceph將會進行恢復操作,把pgs 從副osd上移到新的osd上;恢復結束後,叢集狀態還是OK

不同的osd上不同的pool

例項:

在node1 掛3個SSD盤,即SSD-node;node2  node3 掛SATA盤

1、修改 CRUSH map 配置檔案:

get---反編譯---修改 
1.1 用 root ssd 和 root sata 桶 代替 root default 桶; 
root ssd 有一個item,即node1;root sata 有2個item,即:node2 、node3。

    root  ssd {

        id  -1 
        alg  straw
        hash  0
        item node1  weight  0.030
    }

    root   sata  {

        id  -5
        alg  straw
        hash  0
        item  node2  weight 0.030
        item  node3  weight 0.030
    }

1.2 修改rules,把 step take default 改為 step take sata/ssd

    rule  sata {

        ruleset  3
        type replicated
        min_size 1
        max_size 10
        step take sata
        step chooseleaf firstn 0 type host
        step  emit
    }

    rule  ssd  {

        ruleset  4  
        type replicated
        min_size 1
        max_size 10
        step take ssd
        step chooseleaf firstn 0 type host
        step  emit
    }

2、編譯 inject 修改後的CRUSH map

`crushtool -c crushmap-decompiled -o crushmap-compiled`

`ceph osd setcrushmap -i crushmap-compiled`

等叢集恢復

3、新建不同型別的資源池:

`ceph osd pool create sata 64 64`

`ceph osd pool create ssd 64 64`

4、為新建的池設定ruleset:

`ceph osd pool set sata crush_ruleset 3`

`ceph osd pool set ssd crush_ruleset 4`

5、檢視資源池ssd 和 sata 的資訊:

`ceph osd dump | egrep -i "ssd|sata"`

6、測試新建池

`dd if=/dev/zero of=sata.pool bs=1M count=32 conv=fsync`

`dd if=/dev/zero of=ssd.pool bs=1M count=32 conv=fsync`

7、把檔案放到不同的池子裡:

`rados -p ssd put ssd.pool.object ssd.pool`

`rados -p sata put sata.pool.object sata.pool`

8、最後 檢視這些檔案的 map 資訊:

`ceph osd map ssd ssd.pool.object`

`ceph osd map sata sata.pool.object`