當前平臺:在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, 第六列對應使用量