參考鏈接:<https://ceph.readthedocs.io/en/latest/rados/deployment/ceph-deploy-osd/>;node
橫向擴容:簡單的理解,就是增長節點,經過增長節點來達到增長容量的目的shell
一、部署環境,參見《02 Ceph集羣規劃及部署mimic》,按照全部標註node節點的執行,包括安裝環境準備,用戶建立,配置源,安裝ceph等;網絡
二、ceph-deploy osd create --data {data-disk} {node-name} 同步配置文件app
三、添加OSDide
縱向擴容:經過增長現有節點的硬盤(OSD)來達到增長容量的目的;性能
(1)確認osd容量狀況線程
[cephuser@cephmanager01 cephcluster]$ sudo ceph -s [cephuser@cephmanager01 cephcluster]$ sudo ceph osd tree
(2) 查看磁盤信息和分區信息3d
# node節點(osd)查看,本例在cephnode0一、cephnode0二、cephnode03上須要添加/dev/sdf [root@cephnode001 ~]# lsblk [root@cephnode001 ~]# fdisk -l # manager節點上查看 [cephuser@cephmanager01 cephcluster]$ ceph-deploy disk list cephnode001 cephnode002 cephnode003
若是添加的盤上面有分區,能夠經過以下命令清除(分區上的數據也會被清除)rest
ceph-deploy disk zap {osd-server-name} {disk-name}日誌
# 清除cephmanager002上的/dev/sdf1和/dev/sdf2分區 # ceph-deploy disk zap cephmanager002 /dev/sdf1 /dev/sdf2
(3)添加OSD
# 添加cephnode001的/dev/sdf [cephuser@cephmanager01 cephcluster]$ ceph-deploy osd create --data /dev/sdf cephnode001 # 添加cephnode002的/dev/sdf [cephuser@cephmanager01 cephcluster]$ ceph-deploy osd create --data /dev/sdf cephnode002 # 添加cephnode003的/dev/sdf [cephuser@cephmanager01 cephcluster]$ ceph-deploy osd create --data /dev/sdf cephnode003
(4)確認添加結果
[cephuser@cephmanager01 ~]$ sudo ceph -s [cephuser@cephmanager01 ~]$ sudo ceph osd tree
刪除osd,通常分兩種狀況,一種狀況是服務故障,這個時候重啓有故障的osd便可,以下:
[root@cephnode002 ceph]# systemctl restart ceph-osd@5.service
另一種狀況是物理壞塊,特別是在即將壞的過程當中,對集羣性能影響極大,能夠經過查看日誌和延遲狀況來確認,以下.這種狀況能夠先踢掉故障osd。
[root@cephmanager01 ~]# ceph osd perf
這裏以cephnode001上的osd.12爲例
步驟1:中止相應OSD服務
此步驟須要在Down掉的OSD所在節點上操做,
[root@cephnode001 ~]# systemctl stop ceph-osd@12
步驟2:取消OSD掛載
安裝OSD時,會將osd.12掛載至/var/lib/ceph/osd/ceph-12,所以,刪除OSD時,須要首先取消OSD掛載
# 查看osd.12的源數據信息 [root@cephnode001 ~]# ceph osd metadata 12 "bluestore_bdev_partition_path": "/dev/dm-7" [root@cephnode001 ~]# ll /dev/mapper/* |grep dm-7 [root@cephnode001 ~]# umount /var/lib/ceph/osd/ceph-12/
這裏磁盤路徑是/dev/sdf
步驟3: 設置OSD爲OUT
# 將osd.12的狀態設置爲out,對應權重reweight會變爲0 [cephuser@cephmanager01 cephcluster]$ sudo ceph osd out 12
步驟4:刪除OSD
#從集羣中刪除 [cephuser@cephmanager01 cephcluster]$ sudo ceph osd rm osd.12 # 從CRUSH中刪除,而後經過ceph osd crush dump確認沒有對應信息 [cephuser@cephmanager01 cephcluster]$ sudo ceph osd crush rm osd.12 # 刪除osd.12的認證信息,而後經過ceph auth list確認有沒有對應信息 [cephuser@cephmanager01 cephcluster]$ sudo ceph auth del osd.12
步驟5:清空已刪除磁盤中的內容
# 確認osd.12已經移除 [cephuser@cephmanager01 cephcluster]$ sudo ceph osd tree # 清空磁盤中的數據 [root@cephnode001 ~]# wipefs -af /dev/sdf
確認osd.12已經移除,同時/dev/sdf已經沒有掛載信息
能夠簡單的理解爲刪除osd(詳見1.3)和添加OSD(相見1.2)的過程;
當有新的osd加入集羣或者移除了osd,就會把狀態上報給Monitor,Monitor知道了osd map發生了變化就會觸發rebalancing,確保pg可以平滑的移動到各個osd上。以pg爲總體進行數據重平衡,重平衡的過程當中可能會影響性能。一次性加入的osd越多,數據rebalancing就越頻繁,業務也可能所以受到影響。生產環境中,強烈建議一次只添加一個osd,最大限度的減小性能和業務的影響。
(1)準備數據文件
# 或者拷貝一些大文件到rbd或者cephfs裏面 [root@localhost ~]# cp -r project/ /cephfs [root@localhost ~]# cp -r project/ /ceph_disk_rbd
(2)添加osd或者刪除osd,或者直接停掉單個osd的服務
# 添加cephnode001的/dev/sdf, 因爲剛剛咱們刪除了,這裏須要zap一下該磁盤 [cephuser@cephmanager01 cephcluster]$ ceph-deploy disk zap cephnode001 /dev/sdf [cephuser@cephmanager01 cephcluster]$ ceph-deploy osd create --data /dev/sdf cephnode001 # 確認已經添加進來 [cephuser@cephmanager01 cephcluster]$ sudo ceph osd tree
(3)查看數據平衡狀況
# 查看平衡狀況 [root@cephmanager01 ~]# ceph -s
當在作rebalance的時候,每一個osd都會按照osd_max_backfills指定數量的線程來同步,若是該數值比較大,同步會比較快,可是會影響部分性能;另外數據同步時,是走的cluster_network,而客戶端鏈接是用的public_network,生產環境建議這兩個網絡用萬兆網絡,較少網絡傳輸的影響;
[root@cephnode001 ~]# ceph --admin-daemon /var/run/ceph/ceph-osd.12.asok config show |grep max_backfills
一樣,爲了不業務繁忙時候rebalance帶來的性能影響,能夠對rebalance進行關閉;當業務比較小的時候,再打開;
# 設置標誌位 [root@cephmanager01 ~]# ceph osd set norebalance # 關閉數據填充 [root@cephmanager01 ~]# ceph osd set nobackfill
取消繼續進行rebalance:
[root@cephmanager01 ~]# ceph osd unset nobackfill [root@cephmanager01 ~]# ceph osd unset norebalance
ceph會按期去檢查指定冗餘副本數的數據是否一致。分兩種狀況檢查:
比較輕量級的檢查,主要檢查元數據(metadata )信息,好比文件名、object屬性、大小等,若是不同,就會從主pg複製一份過去。通常天天都會檢查。
# 獲取pgid [root@cephmanager01 ~]# ceph pg dump # 數據一致性檢查 [root@cephmanager01 ~]# ceph pg scrub 2.19 # 查看對應的scrub信息 [root@cephmanager01 ~]# ceph -s
深度一致性檢查,主要對比數據內容。數據量比較大的時候,這個檢查相對來講比較耗費資源。通常每週檢查。
# 深度檢查 [root@cephmanager01 ~]# ceph pg deep-scrub 2.19 # 查看對應的scrub信息 [root@cephmanager01 ~]# ceph -s
也能夠對全部的pg作deep-scrub操做