新增/刪除osd節點步驟
阿新 • • 發佈:2019-01-10
新增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`