ceph分布式存储-检查集群健康状态

时间:2022-07-22
本文章向大家介绍ceph分布式存储-检查集群健康状态,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

1. 检查集群

1.1 检查集群的状态

#主要检查集群状态是否是 HEALTH_OK
 
ceph -s
    cluster aa7e0345-87a9-4860-a6b5-3158fd00b5a9
     health HEALTH_WARN
            nodeep-scrub,sortbitwise flag(s) set
     monmap e3: 3 mons at {op-xxx-ceph00=10.69.1.1:6789/0,op-xxx-ceph01=10.69.1.2:6789/0,op-xxx-ceph02=10.69.1.3:6789/0}
            election epoch 264, quorum 0,1,2 op-xxx-ceph02,op-xxx-ceph00,op-xxx-ceph01
      fsmap e12557: 1/1/1 up {0=op-xxx-ceph05=up:active}, 1 up:standby
     osdmap e24858: 59 osds: 59 up, 59 in
            flags nodeep-scrub,sortbitwise
      pgmap v50468419: 28832 pgs, 14 pools, 34479 GB data, 41212 kobjects
            101 TB used, 112 TB / 214 TB avail
               28822 active+clean
                  10 active+clean+scrubbing
  client io 329 kB/s wr, 0 op/s rd, 51 op/s wr

输出信息里包含:

  • 集群的 ID
  • 集群健康状况
  • monitor map 版本和 mon 法定人数状态
  • OSD map 版本和 OSD 状态摘要
  • PG map 版本
  • PG 和 Pool 的数量
  • 集群存储的数据量,对象的总量,以及集群的已用容量/总容量/可用
  • 容量
  • 客户端的 iops 信息

1.2 检查集群的容量情况

#查看集群容量使用情况 %RAW USED
 
ceph df
GLOBAL:
    SIZE     AVAIL     RAW USED     %RAW USED
    214T      112T         101T         47.45
POOLS:
    NAME                          ID     USED       %USED     MAX AVAIL     OBJECTS
    rbd                           0         115         0        31508G            4
    cephfs_data                   1      31252G     42.67        31508G     13821502
    cephfs_metadata               2      46967k         0        31508G        31385
    .rgw.root                     5        1636         0        31508G            4
    default.rgw.control           6           0         0        31508G            8
    default.rgw.data.root         7        6892         0        31508G           22
    default.rgw.gc                8           0         0        31508G           32
    default.rgw.log               9           0         0        31508G          127
    default.rgw.users.uid         10       1492         0        31508G            6
    default.rgw.users.swift       11         12         0        31508G            1
    default.rgw.users.keys        12         51         0        31508G            4
    default.rgw.meta              13      28985         0        31508G           87
    default.rgw.buckets.index     14          0         0        31508G           26
    default.rgw.buckets.data      15      3226G      4.41        31508G     28351099

输出的 GLOBAL 段展示了数据所占用集群存储空间的概要:

  • SIZE: 集群的总容量。
  • AVAIL: 集群的可用空间总量。
  • RAW USED:已用存储空间总量。
  • % RAW USED:已用存储空间比率。用此值对比 full ratio 和 near full ratio 来确保不会用尽集群空间。 输出的 POOLS 段展示了存储池列表及各存储池的大致使用率。本段没有反映出副本、克隆和快照的占用情况。例如,如果你把 1MB 的数据存储为对象,理论使用率将是 1MB ,但考虑到副本数、克隆数、和快照数,实际使用量可能是 2MB 或更多。
  • NAME:存储池名字。
  • ID:存储池唯一标识符。
  • USED:大概数据量,单位为 KB 、MB 或 GB ;
  • %USED:各存储池的大概使用率。
  • Objects:各存储池内的大概对象数。

2. 检查osd

2.1 检查osd状态

#所有OSD状态为up且in
ceph osd stat
     osdmap e24858: 59 osds: 59 up, 59 in

2.2 检查osd crushmap是否一致

#检查WEIGHT列,以及REWEIGHT 权重是否一致
 
ID WEIGHT    TYPE NAME               UP/DOWN REWEIGHT PRIMARY-AFFINITY
-1 218.21495 root default
-2  43.64299     host op-xxx-ceph00
 0   3.63699         osd.0                up  1.00000          1.00000
 1   3.63699         osd.1                up  1.00000          1.00000
 2   3.63699         osd.2                up  1.00000          1.00000
 3   3.63699         osd.3                up  1.00000          1.00000
 4   3.63699         osd.4                up  1.00000          1.00000
 5   3.63699         osd.5                up  1.00000          1.00000
 6   3.63699         osd.6                up  1.00000          1.00000
 7   3.63699         osd.7                up  1.00000          1.00000
 8   3.63699         osd.8                up  1.00000          1.00000
 9   3.63699         osd.9                up  1.00000          1.00000
10   3.63699         osd.10               up  1.00000          1.00000
11   3.63699         osd.11               up  1.00000          1.00000
-3  43.64299     host op-xxx-ceph01
13   3.63699         osd.13               up  1.00000          1.00000
14   3.63699         osd.14               up  1.00000          1.00000
15   3.63699         osd.15               up  1.00000          1.00000
16   3.63699         osd.16               up  1.00000          1.00000
17   3.63699         osd.17               up  1.00000          1.00000
18   3.63699         osd.18               up  1.00000          1.00000
19   3.63699         osd.19               up  1.00000          1.00000
20   3.63699         osd.20               up  1.00000          1.00000
21   3.63699         osd.21               up  1.00000          1.00000
22   3.63699         osd.22               up  1.00000          1.00000
23   3.63699         osd.23               up  1.00000          1.00000
24   3.63699         osd.24               up  1.00000          1.00000

2.3 检查osd容量是否均衡

#1. 检查%USE 查看每个osd容量情况是否一致
#2. 检查rack机架下面的host数量是否均衡
 
ceph osd df tree
ID   CLASS WEIGHT     REWEIGHT SIZE   USE    AVAIL  %USE VAR  PGS TYPE NAME
  -1       1394.89197        -  1394T 45797G  1350T 3.21 1.00   - root default
-118        348.72299        -   348T 11544G   337T 3.23 1.01   -     rack xxx-18
  -3         87.18100        - 89274G  2888G 86385G 3.24 1.01   -         host ceph-xxx-hdd00
   0   hdd    7.26500  1.00000  7439G   252G  7186G 3.40 1.06  81             osd.0
   1   hdd    7.26500  1.00000  7439G   235G  7203G 3.17 0.99  78             osd.1
   2   hdd    7.26500  1.00000  7439G   262G  7177G 3.52 1.10  94             osd.2
   3   hdd    7.26500  1.00000  7439G   284G  7155G 3.82 1.19 107             osd.3
   4   hdd    7.26500  1.00000  7439G   236G  7203G 3.18 0.99  85             osd.4
   5   hdd    7.26500  1.00000  7439G   245G  7193G 3.30 1.03  83             osd.5
   6   hdd    7.26500  1.00000  7439G   231G  7207G 3.11 0.97  91             osd.6
   7   hdd    7.26500  1.00000  7439G   257G  7181G 3.46 1.08 100             osd.7
   8   hdd    7.26500  1.00000  7439G   190G  7249G 2.56 0.80  75             osd.8
   9   hdd    7.26500  1.00000  7439G   212G  7227G 2.85 0.89  79             osd.9
  10   hdd    7.26500  1.00000  7439G   248G  7190G 3.34 1.04  88             osd.10
  11   hdd    7.26500  1.00000  7439G   231G  7207G 3.11 0.97 102             osd.11
-119        348.72299        -   348T 11196G   337T 3.14 0.98   -     rack xxx-19
 -11         87.18100        - 89274G  2830G 86443G 3.17 0.99   -         host ceph-xxx-hdd04
  48   hdd    7.26500  1.00000  7439G   223G  7215G 3.01 0.94  78             osd.48
  49   hdd    7.26500  1.00000  7439G   279G  7160G 3.75 1.17  99             osd.49
  50   hdd    7.26500  1.00000  7439G   198G  7241G 2.66 0.83  76             osd.50
  51   hdd    7.26500  1.00000  7439G   230G  7209G 3.09 0.97  87             osd.51
  52   hdd    7.26500  1.00000  7439G   257G  7181G 3.46 1.08  89             osd.52
  53   hdd    7.26500  1.00000  7439G   193G  7246G 2.60 0.81  76             osd.53
  54   hdd    7.26500  1.00000  7439G   222G  7216G 2.99 0.93  81             osd.54
  55   hdd    7.26500  1.00000  7439G   237G  7201G 3.20 1.00  90             osd.55
  56   hdd    7.26500  1.00000  7439G   234G  7205G 3.15 0.98  85             osd.56
  57   hdd    7.26500  1.00000  7439G   251G  7187G 3.38 1.05 104             osd.57
  58   hdd    7.26500  1.00000  7439G   244G  7195G 3.28 1.02  88             osd.58
  59   hdd    7.26500  1.00000  7439G   257G  7182G 3.46 1.08  98             osd.59
-120        348.72299        -   348T 11582G   337T 3.24 1.01   -     rack xxx-20
  -5         87.18100        - 89274G  3066G 86207G 3.43 1.07   -         host ceph-xxx-hdd01
  12   hdd    7.26500  1.00000  7439G   302G  7137G 4.07 1.27 104             osd.12
  13   hdd    7.26500  1.00000  7439G   241G  7197G 3.25 1.01 105             osd.13
  14   hdd    7.26500  1.00000  7439G   318G  7120G 4.29 1.34 123             osd.14
  15   hdd    7.26500  1.00000  7439G   229G  7210G 3.08 0.96  74             osd.15
  16   hdd    7.26500  1.00000  7439G   272G  7167G 3.66 1.14 101             osd.16
  17   hdd    7.26500  1.00000  7439G   264G  7174G 3.56 1.11  94             osd.17
  18   hdd    7.26500  1.00000  7439G   241G  7197G 3.25 1.01  93             osd.18
  19   hdd    7.26500  1.00000  7439G   245G  7193G 3.30 1.03  98             osd.19
  20   hdd    7.26500  1.00000  7439G   211G  7227G 2.84 0.89  74             osd.20
  21   hdd    7.26500  1.00000  7439G   264G  7174G 3.56 1.11  92             osd.21
  22   hdd    7.26500  1.00000  7439G   264G  7175G 3.55 1.11  93             osd.22
  23   hdd    7.26500  1.00000  7439G   208G  7230G 2.81 0.88  83             osd.23
-121        348.72299        -   348T 11474G   337T 3.21 1.00   -     rack xxx-21
  -7         87.18100        - 89274G  2844G 86429G 3.19 0.99   -         host ceph-xxx-hdd02
  24   hdd    7.26500  1.00000  7439G   212G  7226G 2.86 0.89  77             osd.24
  25   hdd    7.26500  1.00000  7439G   258G  7180G 3.48 1.08  85             osd.25
  26   hdd    7.26500  1.00000  7439G   223G  7216G 3.00 0.94  83             osd.26
  27   hdd    7.26500  1.00000  7439G   216G  7222G 2.91 0.91  86             osd.27
  28   hdd    7.26500  1.00000  7439G   252G  7187G 3.39 1.06  85             osd.28
  29   hdd    7.26500  1.00000  7439G   190G  7249G 2.56 0.80  82             osd.29
  30   hdd    7.26500  1.00000  7439G   255G  7183G 3.44 1.07  92             osd.30
  31   hdd    7.26500  1.00000  7439G   260G  7178G 3.51 1.09  90             osd.31
  32   hdd    7.26500  1.00000  7439G   241G  7198G 3.24 1.01  95             osd.32
  33   hdd    7.26500  1.00000  7439G   252G  7187G 3.39 1.06 102             osd.33
  34   hdd    7.26500  1.00000  7439G   279G  7160G 3.75 1.17  92             osd.34
  35   hdd    7.26500  1.00000  7439G   201G  7237G 2.71 0.85  79             osd.35

2.4 检查osd三副本是否分散机架

#抽查osd[31,38,1] 检查31,38,1是否分开多个rack,如果没有机架则分散多个host
 
ceph pg dump pgs|grep ^1|awk 'BEGIN {print "PG tt OBJECTS tt BYTES ttosd"} {print $1 "tt" $2 "tt" $7 "tt" $15}' | head
dumped pgs in format plain
PG       OBJECTS         BYTES      osd
1.f9f       3339        8198351373      [31,38,1]
1.f9e       3352        8060814080      [48,7,52]
1.f9d       3484        8460769474      [32,3,18]
1.f9c       3283        8113961689      [0,60,26]
1.f9b       3408        7863461676      [60,14,42]
1.f9a       3454        8449437644      [42,7,19]
1.f99       3326        8301474267      [8,18,39]
1.f98       3414        8259614607      [52,30,14]
1.f97       3373        8180890502      [2,19,52]
 
 
#三副本全量检查是否分配在多机架
master=""
slave1=""
slave2=""
ceph pg dump pgs|grep ^1|awk ' {print $15}' > pgs.log
sed -i "s/[//g" pgs.log
sed -i "s/]//g" pgs.log
for line in `cat pgs.log`
do
    master_num=`echo $line | cut -d "," -f 1`
    slave1_num=`echo $line | cut -d "," -f 2`
    slave2_num=`echo $line | cut -d "," -f 3`
 
    master=`ceph osd tree | grep  "osd.$master_num" -B 12 | grep host | tail -1 | awk -F  ' ' '{print $4}'`
    slave1=`ceph osd tree | grep  "osd.$slave1_num" -B 12 | grep host | tail -1 | awk -F  ' ' '{print $4}'`
    slave2=`ceph osd tree | grep  "osd.$slave2_num" -B 12 | grep host | tail -1 | awk -F  ' ' '{print $4}'`
    echo " master:" $master " slave1 " $slave1 " slave2 " $slave2
    master_ip=`host $master | awk -F ' ' '{print $4}' | cut -d "." -f 1,2`
    slave1_ip=`host $slave1 | awk -F ' ' '{print $4}' | cut -d "." -f 1,2`
    slave2_ip=`host $slave2 | awk -F ' ' '{print $4}' | cut -d "." -f 1,2`
    echo " master:" $master_ip " slave1 " $slave1_ip " slave2 " $slave2_ip
    if [[ "$master_ip" = "$slave1_ip" ]] || [[ "$slave1_ip" = "$slave2_ip" ]] || [[ "$master_ip" = "$slave2_ip" ]]; then
        echo "failed"
    break
    else
        echo "ok"
    fi
done

2.5 检查恢复限速配置

#检查恢复限速参数是否生效
#osd recovery max active = 3 (default : 15)
#osd recovery op priority = 3 (default : 10)
#osd max backfills = 1 (default : 10)
 
ceph daemon osd.6 config show | grep  -E 'osd_recovery_max_active|osd_recovery_op_priority|osd_max_backfills'
"osd_max_backfills": "1",
"osd_recovery_max_active": "1",
"osd_recovery_op_priority": "1",

2.6 检查数据清洗时间段

#检查恢复限速参数是否生效,凌晨0点-5点
#osd_scrub_begin_hour = 0
#osd_scrub_end_hour = 5
  
ceph daemon osd.6 config show | grep  -E 'osd_scrub_begin_hour|osd_scrub_end_hour'
"osd_scrub_begin_hour": "0",
"osd_scrub_end_hour": "5",

3. 检查mon

3.1 检查mon状态

#检查mon是否都是在线
 
ceph mon stat
e3: 3 mons at {op-xxx-ceph00=10.9.1.1:6789/0,op-xxx-ceph01=10.9.1.2:6789/0,op-xxx-ceph02=10.9.1.3:6789/0}, election epoch 264, quorum 0,1,2 op-xxx-ceph02,op-xxx-ceph00,op-xxx-ceph01

3.2 检查mon机架分布

#检查mon是否分布在多个机架
 
ceph mon dump
dumped monmap epoch 3
epoch 3
fsid aa7e0345-87a9-4860-a6b5-3158fd00b5a9
last_changed 2016-07-27 16:51:39.275244
created 2016-07-27 02:42:27.838682
0: 10.9.1.1:6789/0 mon.op-xxx-ceph02
1: 10.9.1.2:6789/0 mon.op-xxx-ceph00
2: 10.9.1.3:6789/0 mon.op-xxx-ceph01

3.3 mon法定人数状态

要检查监视器的法定人数状态,执行下面的命令:

ceph quorum_status -f json-pretty

4. 检查 MDS

4.1 检查MDS状态

元数据服务器为 Ceph 文件系统提供元数据服务,不过在当前生产环境中并未部署 MDS 。

元数据服务器有两种状态: up | down 和 active | inactive ,执行下面的命令查看元数据服务器状态为 up 且 active :

ceph mds stat
e12557: 1/1/1 up {0=op-xxx-ceph05=up:active}, 1 up:standby

要展示元数据集群的详细状态,执行下面的命令:

ceph mds dump

5. 检查PG

5.1 检查PG状态

PG 把对象映射到 OSD 。监控 PG 时,我们希望它们的状态是 active 且 clean。

ceph pg stat
v50681978: 28832 pgs: 9 active+clean+scrubbing, 28823 active+clean; 34497 GB data, 101 TB used, 112 TB / 214 TB avail; 198 kB/s rd, 182 kB/s wr, 55 op/s

6. 使用管理套接字

Ceph 管理套接字允许你通过套接字接口查询守护进程,它们默认存在于 /var/run/ceph 下。要通过管理套接字访问某个守护进程,先登录它所在的主机、再执行下列命令:

ceph daemon {daemon-name}
ceph daemon {path-to-socket-file}

比如,这是下面这两种用法是等价的:

ceph daemon osd.0 foo
ceph daemon /var/run/ceph/ceph-osd.0.asok foo

用下列命令查看可用的管理套接字命令:

ceph daemon {daemon-name} help

管理套接字命令允许你在运行时查看和修改配置。

另外,你可以在运行时直接修改配置选项(也就是说管理套接字会绕过 Mon,不要求你直接登录宿主主机,不像 ceph {daemon-type} tell {id} injectargs 会依赖监视器)。