實戰01:OSD操做(擴容/縮容/換盤/數據重平衡/數據一致性)

參考鏈接:<https://ceph.readthedocs.io/en/latest/rados/deployment/ceph-deploy-osd/>;node

1 OSD擴容/縮容

1.1 橫向擴容(scale out)

橫向擴容:簡單的理解,就是增長節點,經過增長節點來達到增長容量的目的shell

一、部署環境,參見《02 Ceph集羣規劃及部署mimic》,按照全部標註node節點的執行,包括安裝環境準備,用戶建立,配置源,安裝ceph等;網絡

二、ceph-deploy osd create --data {data-disk} {node-name} 同步配置文件app

三、添加OSDide

1.2 縱向擴容(scale up)

縱向擴容:經過增長現有節點的硬盤(OSD)來達到增長容量的目的;性能

(1)確認osd容量狀況線程

[cephuser@cephmanager01 cephcluster]$ sudo ceph -s
[cephuser@cephmanager01 cephcluster]$ sudo ceph osd tree

實戰01:OSD操做(擴容/縮容/換盤/數據重平衡/數據一致性)

(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

實戰01:OSD操做(擴容/縮容/換盤/數據重平衡/數據一致性)

若是添加的盤上面有分區,能夠經過以下命令清除(分區上的數據也會被清除)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

實戰01:OSD操做(擴容/縮容/換盤/數據重平衡/數據一致性)

1.3 縮容:刪除OSD

​ 刪除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

實戰01:OSD操做(擴容/縮容/換盤/數據重平衡/數據一致性)

步驟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/

實戰01:OSD操做(擴容/縮容/換盤/數據重平衡/數據一致性)

這裏磁盤路徑是/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已經沒有掛載信息

實戰01:OSD操做(擴容/縮容/換盤/數據重平衡/數據一致性)

1.4 換盤

能夠簡單的理解爲刪除osd(詳見1.3)和添加OSD(相見1.2)的過程;

2 REBALANCING數據重平衡

2.1 數據重平衡演示

​ 當有新的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

實戰01:OSD操做(擴容/縮容/換盤/數據重平衡/數據一致性)

2.2 臨時關閉rebalance

​ 當在作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

實戰01:OSD操做(擴容/縮容/換盤/數據重平衡/數據一致性)

取消繼續進行rebalance:

[root@cephmanager01 ~]# ceph osd unset nobackfill
[root@cephmanager01 ~]# ceph osd unset norebalance

3 數據一致性檢查

​ ceph會按期去檢查指定冗餘副本數的數據是否一致。分兩種狀況檢查:

3.1 scrub

​ 比較輕量級的檢查,主要檢查元數據(metadata )信息,好比文件名、object屬性、大小等,若是不同,就會從主pg複製一份過去。通常天天都會檢查。

# 獲取pgid
[root@cephmanager01 ~]# ceph pg dump
# 數據一致性檢查
[root@cephmanager01 ~]# ceph pg scrub 2.19
# 查看對應的scrub信息
[root@cephmanager01 ~]# ceph -s

3.2 deeper scrubbing

​ 深度一致性檢查,主要對比數據內容。數據量比較大的時候,這個檢查相對來講比較耗費資源。通常每週檢查。

# 深度檢查
[root@cephmanager01 ~]# ceph pg deep-scrub 2.19
# 查看對應的scrub信息
[root@cephmanager01 ~]# ceph -s

也能夠對全部的pg作deep-scrub操做

相關文章
相關標籤/搜索