通過 by-path 對應 盤符和 OSD_ID

當前平臺:在K8s上部署了Ceph,由Ceph生成的磁盤用途有兩種:緩存盤和數據盤

背景說明:每個數據盤都會對應一個OSD_ID,而緩存盤是一種特殊的數據盤

需求:監控頁面需要展示各種用途的磁盤的總容量和已使用量,而數據盤(緩存盤)的OSD_ID和盤符之間的關係,需要通過/dev/disk/by-path/pci××× 來對應

方法:

(1) 獲取該節點的所有數據盤和緩存盤pod

[root@node-1 ~]# ds=$(kubectl get ds -n ceph | grep osd | grep $(hostname -s)| awk '{print $1}')
[root@node-1 ~]# echo $ds
ceph-osd-0-node-1 ceph-osd-1-node-1 ceph-osd-2-node-1 ceph-osd-3-node-1 ceph-osd-4-node-1

(2) 獲取緩存盤的/dev/disk/by-path路徑

[root@node-1 ~]# cache_paths=$(for i in $ds;do kubectl get ds $i -n ceph -o yaml | grep -A1 BLUESTORE_CACHE_DISK| grep value | uniq;done | uniq | awk '{print $2}')
[root@node-1 ~]# echo $cache_paths
/dev/disk/by-path/pci-0000:02:00.0-scsi-0:2:0:0

(3) 獲取到該緩存盤的盤符

[root@node-1 ~]# cache_disks=$(for i in $cache_paths;do ls -l $i | awk -F '/' '{print $NF}';done)
[root@node-1 ~]# echo $cache_disks
sdp

(4) 獲取數據盤的/dev/disk/by-path路徑

[root@node-1 ~]# data_paths=$(for i in $ds;do kubectl get ds $i -n ceph -o yaml | grep -A1 BLUESTORE_DATA_DISK| grep value | uniq;done |uniq | awk '{print $2}')
[root@node-1 ~]# echo $data_paths
/dev/disk/by-path/pci-0000:02:00.0-scsi-0:0:10:0 /dev/disk/by-path/pci-0000:02:00.0-scsi-0:0:11:0 /dev/disk/by-path/pci-0000:02:00.0-scsi-0:0:12:0 /dev/disk/by-path/pci-0000:02:00.0-scsi-0:0:13:0 /dev/disk/by-path/pci-0000:02:00.0-scsi-0:2:0:0

(5) 獲取數據盤的盤符 (緩存盤是一種特殊的數據盤)

[root@node-1 ~]# data_disks=$(for i in $data_paths;do ls -l $i | awk -F '/' '{print $NF}';done)
[root@node-1 ~]# echo $data_disks
sdf sdg sdh sdi sdp

(6) 獲取以上盤符對應的OSD_ID,從OSD pod的name上取,該方法比較粗糙,精確的方法見(8)

[root@node-1 ~]# osd_ids=$(for i in $ds;do echo $i | cut -d- -f3 | uniq;done)
[root@node-1 ~]# echo $osd_ids
0 1 2 3 4

(7) 所以盤符和OSD_ID之間的對應關係如下

sdf sdg sdh sdi sdp
0    1   2   3   4

備註,盤符是通過變量ds,按序遍歷獲取,OSD_ID也是通過變量ds按序遍歷獲取,所以,存在按序一一對應關係

(8) 獲取OSD_ID更精確的方法,從OSD的配置文件裏取

[root@node-1 ~]# data_disks=$(for i in $ds;do kubectl get ds $i -n ceph -o yaml | grep -A1 BLUESTORE_OSD_ID| grep value | uniq;done |uniq | awk -F '"' '{print $2}')
[root@node-1 ~]# echo $data_disks
0 1 2 3 4

 

拓展:通過OSD_ID,獲取數據盤和緩存盤的使用量

[root@node-1 ~]# ceph osd df
ID CLASS WEIGHT  REWEIGHT SIZE    USE     AVAIL   %USE  VAR  PGS 
 4   hdd 0.08008  1.00000 62.0GiB 14.8GiB 47.2GiB 23.93 4.64 128 
 9   hdd 0.08008  1.00000 62.0GiB 14.8GiB 47.2GiB 23.93 4.64 128 
14   ssd 0.08066  1.00000 62.6GiB 14.7GiB 47.9GiB 23.48 4.55 128 
 0   ssd 0.92920  1.00000  932GiB 47.5GiB  884GiB  5.10 0.99 112 
 1   ssd 0.92920  1.00000  932GiB 39.4GiB  892GiB  4.23 0.82 113 
 2   ssd 0.92920  1.00000  932GiB 46.0GiB  886GiB  4.94 0.96 110 
 3   ssd 0.92920  1.00000  932GiB 47.6GiB  884GiB  5.11 0.99 129 
 5   ssd 0.92920  1.00000  932GiB 37.1GiB  894GiB  3.98 0.77 103 
 6   ssd 0.92920  1.00000  932GiB 54.7GiB  877GiB  5.87 1.14 136 
 7   ssd 0.92920  1.00000  932GiB 45.5GiB  886GiB  4.88 0.95 102 
 8   ssd 0.92920  1.00000  932GiB 43.2GiB  888GiB  4.63 0.90 123 
10   ssd 0.92920  1.00000  932GiB 37.2GiB  894GiB  4.00 0.77 112 
11   ssd 0.92920  1.00000  932GiB 32.4GiB  899GiB  3.48 0.67 111 
12   ssd 0.92920  1.00000  932GiB 52.2GiB  879GiB  5.61 1.09 119 
13   ssd 0.92920  1.00000  932GiB 59.1GiB  872GiB  6.34 1.23 122 
                    TOTAL 11.1TiB  586GiB 10.5TiB  5.16          
MIN/MAX VAR: 0.67/4.64  STDDEV: 8.36

第一列對應OSD_ID, 第六列對應使用量

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