3.2. Ceph 存储集群的高级别监控
作为存储管理员,您可以监控 Ceph 守护进程的健康状况,以确保它们已启动并在运行。高级别监控还涉及检查存储集群容量,以确保存储集群不会超过其全满比率(full ratio)
。Red Hat Ceph Storage 仪表板是进行高级别监控的最常见方法。但是,您也可以使用命令行界面、Ceph 管理 socket 或 Ceph API 来监控存储集群。
3.2.1. 先决条件
- 一个正在运行的 Red Hat Ceph Storage 集群。
3.2.2. 以互动方式使用 Ceph 命令行界面
您可以使用 ceph
命令行工具与 Ceph 存储集群进行交互。
先决条件
- 一个正在运行的 Red Hat Ceph Storage 集群。
- 节点的根级别访问权限。
流程
以交互模式运行
ceph
实用程序。语法
podman exec -it ceph-mon-MONITOR_NAME /bin/bash
- 替换
-
通过运行
podman ps
命令找到带有 Ceph Monitor 容器的名称 MONITOR_NAME。
-
通过运行
示例
[root@host01 ~]# podman exec -it ceph-499829b4-832f-11eb-8d6d-001a4a000635-mon.host01 /bin/bash
本例在 mon.host01
上打开一个交互式终端会话,您可以在其中启动 Ceph 互动 shell。
3.2.3. 检查存储集群健康状况
启动 Ceph 存储集群后,在开始读取或写入数据前,首先检查存储集群的健康状态。
先决条件
- 一个正在运行的 Red Hat Ceph Storage 集群。
- 节点的根级别访问权限。
流程
登录到 Cephadm shell:
示例
root@host01 ~]# cephadm shell
您可以使用以下命令来检查 Ceph 存储集群的健康状态:
示例
[ceph: root@host01 /]# ceph health HEALTH_OK
您可以通过运行
ceph status
命令检查 Ceph 存储集群的状态:示例
[ceph: root@host01 /]# ceph status
输出提供以下信息:
- 集群 ID
- 集群健康状态
- monitor map epoch 和 monitor 仲裁的状态。
- OSD map epoch 和 OSD 状态。
- Ceph 管理器的状态。
- 对象网关的状态。
- 放置组映射版本。
- 放置组和池的数量。
- 存储的数据数量和所存储的对象数量。
存储的数据总量。
在启动 Ceph 集群时,您可能会遇到运行状况警告,如
HEALTH_WARN XXX num placement groups stale
。等待几分钟,然后再次检查。当存储集群就绪时,ceph health
应返回一个如HEALTH_OK
的消息。此时,可以开始使用群集。
3.2.4. 监视存储集群事件
您可以使用命令行界面观察 Ceph 存储集群发生的事件。
先决条件
- 一个正在运行的 Red Hat Ceph Storage 集群。
- 节点的根级别访问权限。
流程
登录到 Cephadm shell:
示例
root@host01 ~]# cephadm shell
要监控集群的持续事件,请运行以下命令:
示例
[ceph: root@host01 /]# ceph -w cluster: id: 8c9b0072-67ca-11eb-af06-001a4a0002a0 health: HEALTH_OK services: mon: 2 daemons, quorum Ceph5-2,Ceph5-adm (age 3d) mgr: Ceph5-1.nqikfh(active, since 3w), standbys: Ceph5-adm.meckej osd: 5 osds: 5 up (since 2d), 5 in (since 8w) rgw: 2 daemons active (test_realm.test_zone.Ceph5-2.bfdwcn, test_realm.test_zone.Ceph5-adm.acndrh) data: pools: 11 pools, 273 pgs objects: 459 objects, 32 KiB usage: 2.6 GiB used, 72 GiB / 75 GiB avail pgs: 273 active+clean io: client: 170 B/s rd, 730 KiB/s wr, 0 op/s rd, 729 op/s wr 2021-06-02 15:45:21.655871 osd.0 [INF] 17.71 deep-scrub ok 2021-06-02 15:45:47.880608 osd.1 [INF] 1.0 scrub ok 2021-06-02 15:45:48.865375 osd.1 [INF] 1.3 scrub ok 2021-06-02 15:45:50.866479 osd.1 [INF] 1.4 scrub ok 2021-06-02 15:45:01.345821 mon.0 [INF] pgmap v41339: 952 pgs: 952 active+clean; 17130 MB data, 115 GB used, 167 GB / 297 GB avail 2021-06-02 15:45:05.718640 mon.0 [INF] pgmap v41340: 952 pgs: 1 active+clean+scrubbing+deep, 951 active+clean; 17130 MB data, 115 GB used, 167 GB / 297 GB avail 2021-06-02 15:45:53.997726 osd.1 [INF] 1.5 scrub ok 2021-06-02 15:45:06.734270 mon.0 [INF] pgmap v41341: 952 pgs: 1 active+clean+scrubbing+deep, 951 active+clean; 17130 MB data, 115 GB used, 167 GB / 297 GB avail 2021-06-02 15:45:15.722456 mon.0 [INF] pgmap v41342: 952 pgs: 952 active+clean; 17130 MB data, 115 GB used, 167 GB / 297 GB avail 2021-06-02 15:46:06.836430 osd.0 [INF] 17.75 deep-scrub ok 2021-06-02 15:45:55.720929 mon.0 [INF] pgmap v41343: 952 pgs: 1 active+clean+scrubbing+deep, 951 active+clean; 17130 MB data, 115 GB used, 167 GB / 297 GB avail
3.2.5. Ceph 如何计算数据使用量
used
值反映了使用的实际原始存储量。xxx GB / xxx GB
代表可用的存储(其中较小的数字)和总存储容量。总容量反映了在复制、克隆或快照前存储数据的大小。因此,实际存储的数据量通常会超过名义上的存储量。这是因为 Ceph 会创建数据的副本,进行克隆和快照也需要使用存储。
3.2.6. 了解存储集群用量统计
要检查集群的数据使用量和数据分布在池间,请使用 df
选项。它类似于 Linux df
命令。
如果某些 OSD 标记为 IN
,则 ceph df
和 ceph status
命令的输出中的 SIZE
/AVAIL
/RAW USED
会有所不同。SIZE
/AVAIL
/RAW USED
从 SIZE
(最大磁盘大小)、RAW USE
(磁盘上使用的空间)和 AVAIL
(所有处于 IN
状态的 OSD)计算。您可以在 ceph osd df tree
命令的输出中看到 SIZE
/AVAIL
/RAW USED
的总 OSD。
示例
[ceph: root@host01 /]#ceph df --- RAW STORAGE --- CLASS SIZE AVAIL USED RAW USED %RAW USED hdd 5 TiB 2.9 TiB 2.1 TiB 2.1 TiB 42.98 TOTAL 5 TiB 2.9 TiB 2.1 TiB 2.1 TiB 42.98 --- POOLS --- POOL ID PGS STORED OBJECTS USED %USED MAX AVAIL .mgr 1 1 5.3 MiB 3 16 MiB 0 629 GiB .rgw.root 2 32 1.3 KiB 4 48 KiB 0 629 GiB default.rgw.log 3 32 3.6 KiB 209 408 KiB 0 629 GiB default.rgw.control 4 32 0 B 8 0 B 0 629 GiB default.rgw.meta 5 32 1.7 KiB 10 96 KiB 0 629 GiB default.rgw.buckets.index 7 32 5.5 MiB 22 17 MiB 0 629 GiB default.rgw.buckets.data 8 32 807 KiB 3 2.4 MiB 0 629 GiB default.rgw.buckets.non-ec 9 32 1.0 MiB 1 3.1 MiB 0 629 GiB source-ecpool-86 11 32 1.2 TiB 391.13k 2.1 TiB 53.49 1.1 TiB
ceph df detail
命令提供了更多关于其他池统计数据的详细信息,如配额对象、配额字节、压缩状态等。
输出的 RAW STORAGE 部分概述了存储集群用于存储数据的存储量。
- CLASS: OSD 设备的类。
SIZE: 由存储集群管理的存储容量量。
在上例中,如果
SIZE
是 90 GiB,它是不包括复制因子(默认为三)的总大小。带有复制因子的可用的总容量为 30 GiB(90 GiB/3)。根据全满比率(默认为 0.85%),最大可用空间为 30 GiB * 0.85 = 25.5 GiBAVAIL: 存储集群中可用空间的数量。
在上例中,如果
SIZE
是 90 GiB,而USED
空间为 6 GiB,则AVAIL
空间为 84 GiB。带有复制因素的总可用空间(默认为 84 GiB/3 = 28 GiB)USED: 用户数据使用的原始存储量。
在上例中,100 MiB 是在考虑了复制因子后的总可用空间。实际可用大小为 33 MiB。
- RAW USED: 用户数据、内部开销或保留容量消耗的原始存储量。
-
% RAW USED: RAW USED 的百分比。使用这个数值以及
full ratio
和near full ratio
,以确保您没有消耗倒所有的存储集群容量。
输出的 POOLS 部分提供了池列表以及每个池的不利使用情况。本节的输出不会反映副本、克隆或快照的情况。例如,如果您存储 1 MB 的数据的对象,名义的使用量为 1 MB,但实际使用量可能为 3 MB 或更多。具体的实际使用量取决于副本的数量(例如: size = 3
)、克隆和快照。
- POOL:池的名称。
- id: 池 ID。
- STORED: 用户存储在池中的实际数据量。这个值会根据(k+M)/K 值、对象副本数以及池统计计算时降级的对象数量更改。
-
OBJECTS: 每个池存储的名义数量。它是
STORED
大小 * 复制因素。 - USED: 存储以 KB 为单位的数据数量,除非数字带有 M(megabyte)或 G(gigabytes)。
- %USED: 每个池使用的名义存储的百分比。
MAX AVAIL: 可以写入这个池的数据数量的估计值。它是在第一个 OSD 变为满之前可以使用的数据量。它考虑了 CRUSH map 中跨磁盘的项目分布数据,并使用第一个 OSD 来填充作为目标。
在上例中,
MAX AVAIL
为 153.85 MB(没有考虑复制因子,默认为三)。请参阅红帽知识库中的 ceph df MAX AVAIL is incorrect for simple replicated pool 以计算
MAX AVAIL
的值。- QUOTA OBJECTS: 配额对象的数量。
- QUOTA BYTES: 配额对象中的字节数。
- USED COMPR: 为压缩数据分配的空间量,包括其压缩数据、分配、复制和擦除编码开销。
- UNDER COMPR: 通过压缩格式传输的数据量,以压缩形式存储有更多益处。
POOLS 部分中的数字是估算的。它们不包括副本数、快照或克隆的数量。因此,USED 和 %USED 数值的总和可能会与输出的 GLOBAL 部分中的 RAW USED 和 %RAW USED 不同。
MAX AVAIL 值是使用复制或退出代码的复杂功能,即将存储映射到设备、这些设备的利用率以及配置的 mon_osd_full_ratio
。
其它资源
- 详情请参阅 Ceph 如何计算数据使用量。
- 详情请参阅 了解 OSD 用量统计。
3.2.7. 了解 OSD 使用量统计
使用 ceph osd df
命令查看 OSD 使用率统计。
示例
[ceph: root@host01 /]# ceph osd df ID CLASS WEIGHT REWEIGHT SIZE USE DATA OMAP META AVAIL %USE VAR PGS 3 hdd 0.90959 1.00000 931GiB 70.1GiB 69.1GiB 0B 1GiB 861GiB 7.53 2.93 66 4 hdd 0.90959 1.00000 931GiB 1.30GiB 308MiB 0B 1GiB 930GiB 0.14 0.05 59 0 hdd 0.90959 1.00000 931GiB 18.1GiB 17.1GiB 0B 1GiB 913GiB 1.94 0.76 57 MIN/MAX VAR: 0.02/2.98 STDDEV: 2.91
- ID: OSD 的名称。
- CLASS: OSD 使用的设备类型。
- WEIGHT: CRUSH 映射中的 OSD 权重。
- REWEIGHT: 默认的重新加权值。
- SIZE: OSD 的整体存储容量。
- USE: OSD 容量。
- DATA: 用户数据使用的 OSD 容量量。
-
OMAP: 用于存储对象映射(
omap
)数据(rocksdb
中存储的键值对)的bluefs
存储的估算值。 -
META: 分配的
bluefs
空间或在bluestore_bluefs_min
参数中设置的值(取决于哪个值更大),对于内部元数据,它的值是在bluefs
中分配的总空间减去预计的omap
数据大小。 - AVAIL: OSD 上可用的空间量。
- %USE: OSD 使用的存储百分比
- VAR: 高于或低于平均利用率的差异。
- PGS: OSD 中的置放组数量。
- MIN/MAX VAR: 所有 OSD 的最小和最大变化。
其它资源
- 详情请参阅 Ceph 如何计算数据使用量。
- 详情请参阅 了解 OSD 用量统计。
- 详情请参阅 Red Hat Ceph Storage Storage 策略指南中的 CRUSH Weights。
3.2.8. 检查存储集群状态
您可以从命令行界面查看 Red Hat Ceph Storage 集群的状态。status
子命令或 -s
参数将显示存储集群的当前状态。
先决条件
- 一个正在运行的 Red Hat Ceph Storage 集群。
- 节点的根级别访问权限。
流程
登录到 Cephadm shell:
示例
[root@host01 ~]# cephadm shell
要检查存储集群的状态,请执行以下操作:
示例
[ceph: root@host01 /]# ceph status
或者
示例
[ceph: root@host01 /]# ceph -s
在交互模式中,键入
ceph
并按 Enter 键:示例
[ceph: root@host01 /]# ceph ceph> status cluster: id: 499829b4-832f-11eb-8d6d-001a4a000635 health: HEALTH_WARN 1 stray daemon(s) not managed by cephadm 1/3 mons down, quorum host03,host02 too many PGs per OSD (261 > max 250) services: mon: 3 daemons, quorum host03,host02 (age 3d), out of quorum: host01 mgr: host01.hdhzwn(active, since 9d), standbys: host05.eobuuv, host06.wquwpj osd: 12 osds: 11 up (since 2w), 11 in (since 5w) rgw: 2 daemons active (test_realm.test_zone.host04.hgbvnq, test_realm.test_zone.host05.yqqilm) rgw-nfs: 1 daemon active (nfs.foo.host06-rgw) data: pools: 8 pools, 960 pgs objects: 414 objects, 1.0 MiB usage: 5.7 GiB used, 214 GiB / 220 GiB avail pgs: 960 active+clean io: client: 41 KiB/s rd, 0 B/s wr, 41 op/s rd, 27 op/s wr ceph> health HEALTH_WARN 1 stray daemon(s) not managed by cephadm; 1/3 mons down, quorum host03,host02; too many PGs per OSD (261 > max 250) ceph> mon stat e3: 3 mons at {host01=[v2:10.74.255.0:3300/0,v1:10.74.255.0:6789/0],host02=[v2:10.74.249.253:3300/0,v1:10.74.249.253:6789/0],host03=[v2:10.74.251.164:3300/0,v1:10.74.251.164:6789/0]}, election epoch 6688, leader 1 host03, quorum 1,2 host03,host02
3.2.9. 检查 Ceph Monitor 状态
如果存储集群有多个 Ceph Monitor(这是生产环境 Red Hat Ceph Storage 集群的要求),您可以在开始存储集群后检查 Ceph Monitor 仲裁状态,并在执行任何读取或写入数据前检查 Ceph Monitor 仲裁状态。
当运行了多个 Ceph monitor 时,必须存在仲裁。
定期检查 Ceph 监控状态以确保它们正在运行。如果 Ceph Monitor 出现问题,这会防止达成存储集群状态协议,因此会阻止 Ceph 客户端读取和写入数据。
先决条件
- 一个正在运行的 Red Hat Ceph Storage 集群。
- 节点的根级别访问权限。
流程
登录到 Cephadm shell:
示例
[root@host01 ~]# cephadm shell
要显示 Ceph Monitor 映射,请执行以下操作:
示例
[ceph: root@host01 /]# ceph mon stat
或者
示例
[ceph: root@host01 /]# ceph mon dump
要检查存储集群的仲裁状态,请执行以下操作:
[ceph: root@host01 /]# ceph quorum_status -f json-pretty
Ceph 返回仲裁状态。
示例
{ "election_epoch": 6686, "quorum": [ 0, 1, 2 ], "quorum_names": [ "host01", "host03", "host02" ], "quorum_leader_name": "host01", "quorum_age": 424884, "features": { "quorum_con": "4540138297136906239", "quorum_mon": [ "kraken", "luminous", "mimic", "osdmap-prune", "nautilus", "octopus", "pacific", "elector-pinging" ] }, "monmap": { "epoch": 3, "fsid": "499829b4-832f-11eb-8d6d-001a4a000635", "modified": "2021-03-15T04:51:38.621737Z", "created": "2021-03-12T12:35:16.911339Z", "min_mon_release": 16, "min_mon_release_name": "pacific", "election_strategy": 1, "disallowed_leaders: ": "", "stretch_mode": false, "features": { "persistent": [ "kraken", "luminous", "mimic", "osdmap-prune", "nautilus", "octopus", "pacific", "elector-pinging" ], "optional": [] }, "mons": [ { "rank": 0, "name": "host01", "public_addrs": { "addrvec": [ { "type": "v2", "addr": "10.74.255.0:3300", "nonce": 0 }, { "type": "v1", "addr": "10.74.255.0:6789", "nonce": 0 } ] }, "addr": "10.74.255.0:6789/0", "public_addr": "10.74.255.0:6789/0", "priority": 0, "weight": 0, "crush_location": "{}" }, { "rank": 1, "name": "host03", "public_addrs": { "addrvec": [ { "type": "v2", "addr": "10.74.251.164:3300", "nonce": 0 }, { "type": "v1", "addr": "10.74.251.164:6789", "nonce": 0 } ] }, "addr": "10.74.251.164:6789/0", "public_addr": "10.74.251.164:6789/0", "priority": 0, "weight": 0, "crush_location": "{}" }, { "rank": 2, "name": "host02", "public_addrs": { "addrvec": [ { "type": "v2", "addr": "10.74.249.253:3300", "nonce": 0 }, { "type": "v1", "addr": "10.74.249.253:6789", "nonce": 0 } ] }, "addr": "10.74.249.253:6789/0", "public_addr": "10.74.249.253:6789/0", "priority": 0, "weight": 0, "crush_location": "{}" } ] } }
3.2.10. 使用 Ceph 管理 socket
使用管理套接字可以通过 UNIX 套接字文件直接与给定守护进程交互。例如,这个套接字可以:
- 在运行时列出 Ceph 配置
-
在运行时直接设置配置值,而不依赖 Monitor。当 Monitor
停机时
,这非常有用。 - 转储历史操作
- 转储操作优先级队列状态
- 在不重启的情况下转储操作
- 转储性能计数器
此外,在对 Ceph monitor 或 OSD 相关的问题进行故障排除时,使用 socket 非常有用。
无论如何,如果守护进程没有运行,在尝试使用管理套接字时会返回以下错误:
Error 111: Connection Refused
管理套接字仅在守护进程正在运行时才可用。当您正确关闭守护进程时,管理套接字会被删除。但是,如果守护进程意外终止,管理套接字可能仍然会被保留。
先决条件
- 一个正在运行的 Red Hat Ceph Storage 集群。
- 节点的根级别访问权限。
流程
登录到 Cephadm shell:
示例
[root@host01 ~]# cephadm shell
使用套接字:
语法
ceph daemon MONITOR_ID COMMAND
替换:
-
守护进程的
MONITOR_ID
带有要运行的命令的
COMMAND
。使用help
列出给定守护进程的可用命令。查看 Ceph Monitor 的状态:
示例
[ceph: root@host01 /]# ceph daemon mon.host01 help { "add_bootstrap_peer_hint": "add peer address as potential bootstrap peer for cluster bringup", "add_bootstrap_peer_hintv": "add peer address vector as potential bootstrap peer for cluster bringup", "compact": "cause compaction of monitor's leveldb/rocksdb storage", "config diff": "dump diff of current config and default config", "config diff get": "dump diff get <field>: dump diff of current and default config setting <field>", "config get": "config get <field>: get the config value", "config help": "get config setting schema and descriptions", "config set": "config set <field> <val> [<val> ...]: set a config variable", "config show": "dump current config settings", "config unset": "config unset <field>: unset a config variable", "connection scores dump": "show the scores used in connectivity-based elections", "connection scores reset": "reset the scores used in connectivity-based elections", "dump_historic_ops": "dump_historic_ops", "dump_mempools": "get mempool stats", "get_command_descriptions": "list available commands", "git_version": "get git sha1", "heap": "show heap usage info (available only if compiled with tcmalloc)", "help": "list available commands", "injectargs": "inject configuration arguments into running daemon", "log dump": "dump recent log entries to log file", "log flush": "flush log entries to log file", "log reopen": "reopen log file", "mon_status": "report status of monitors", "ops": "show the ops currently in flight", "perf dump": "dump perfcounters value", "perf histogram dump": "dump perf histogram values", "perf histogram schema": "dump perf histogram schema", "perf reset": "perf reset <name>: perf reset all or one perfcounter name", "perf schema": "dump perfcounters schema", "quorum enter": "force monitor back into quorum", "quorum exit": "force monitor out of the quorum", "sessions": "list existing sessions", "smart": "Query health metrics for underlying device", "sync_force": "force sync of and clear monitor store", "version": "get ceph version" }
示例
[ceph: root@host01 /]# ceph daemon mon.host01 mon_status { "name": "host01", "rank": 0, "state": "leader", "election_epoch": 120, "quorum": [ 0, 1, 2 ], "quorum_age": 206358, "features": { "required_con": "2449958747317026820", "required_mon": [ "kraken", "luminous", "mimic", "osdmap-prune", "nautilus", "octopus", "pacific", "elector-pinging" ], "quorum_con": "4540138297136906239", "quorum_mon": [ "kraken", "luminous", "mimic", "osdmap-prune", "nautilus", "octopus", "pacific", "elector-pinging" ] }, "outside_quorum": [], "extra_probe_peers": [], "sync_provider": [], "monmap": { "epoch": 3, "fsid": "81a4597a-b711-11eb-8cb8-001a4a000740", "modified": "2021-05-18T05:50:17.782128Z", "created": "2021-05-17T13:13:13.383313Z", "min_mon_release": 16, "min_mon_release_name": "pacific", "election_strategy": 1, "disallowed_leaders: ": "", "stretch_mode": false, "features": { "persistent": [ "kraken", "luminous", "mimic", "osdmap-prune", "nautilus", "octopus", "pacific", "elector-pinging" ], "optional": [] }, "mons": [ { "rank": 0, "name": "host01", "public_addrs": { "addrvec": [ { "type": "v2", "addr": "10.74.249.41:3300", "nonce": 0 }, { "type": "v1", "addr": "10.74.249.41:6789", "nonce": 0 } ] }, "addr": "10.74.249.41:6789/0", "public_addr": "10.74.249.41:6789/0", "priority": 0, "weight": 0, "crush_location": "{}" }, { "rank": 1, "name": "host02", "public_addrs": { "addrvec": [ { "type": "v2", "addr": "10.74.249.55:3300", "nonce": 0 }, { "type": "v1", "addr": "10.74.249.55:6789", "nonce": 0 } ] }, "addr": "10.74.249.55:6789/0", "public_addr": "10.74.249.55:6789/0", "priority": 0, "weight": 0, "crush_location": "{}" }, { "rank": 2, "name": "host03", "public_addrs": { "addrvec": [ { "type": "v2", "addr": "10.74.249.49:3300", "nonce": 0 }, { "type": "v1", "addr": "10.74.249.49:6789", "nonce": 0 } ] }, "addr": "10.74.249.49:6789/0", "public_addr": "10.74.249.49:6789/0", "priority": 0, "weight": 0, "crush_location": "{}" } ] }, "feature_map": { "mon": [ { "features": "0x3f01cfb9fffdffff", "release": "luminous", "num": 1 } ], "osd": [ { "features": "0x3f01cfb9fffdffff", "release": "luminous", "num": 3 } ] }, "stretch_mode": false }
-
守护进程的
或者,使用其套接字文件指定 Ceph 守护进程:
语法
ceph daemon /var/run/ceph/SOCKET_FILE COMMAND
查看名为
osd.2
的 Ceph OSD 的状态:示例
[ceph: root@host01 /]# ceph daemon /var/run/ceph/ceph-osd.2.asok status
列出 Ceph 进程的所有套接字文件:
示例
[ceph: root@host01 /]# ls /var/run/ceph
其它资源
- 如需更多信息,请参阅 Red Hat Ceph Storage 故障排除指南。
3.2.11. 了解 Ceph OSD 状态
Ceph OSD 的状态可以是 in
存储集群,或 out
存储集群。它可以是 up
并运行,或 down
并没有运行。如果 Ceph OSD 为 up
,它可以在存储集群内
,可以在其中读取和写入数据,或者在存储集群外
。如果它以前位于
存储集群中,并最近从存储集群中移出
,Ceph 将开始将放置组迁移到其他 Ceph OSD。如果 Ceph OSD 不在
存储集群中,CRUSH 不会将放置组分配到 Ceph OSD。如果 Ceph OSD 是 down
,它应该也是 out
。
如果 Ceph OSD 处于 down
和 中
,则存在问题,而存储集群不处于健康状态。
如果执行诸如 ceph health
, ceph -s
或 ceph -w
等命令,您可能会注意到存储集群并不总是回显 HEALTH OK
。不要 panic。对于 Ceph OSD,您可以预计在一些预期情况下,存储集群不会 反映 HEALTH OK
:
- 还没有启动存储集群,且没有响应。
- 您刚启动或重启了存储集群,当还没有就绪,因为放置组正在被创建,Ceph OSD 正在进行对等处理。
- 您刚添加或删除 Ceph OSD。
- 您刚修改了存储集群映射。
监控 Ceph OSD 的一个重要方面是,当存储集群启动并正在运行,所有存在于
存储集群中的所有 Ceph OSD 的状态为up
并在正常运行。
要查看所有 OSD 是否在运行,请执行:
示例
[ceph: root@host01 /]# ceph osd stat
或者
示例
[ceph: root@host01 /]# ceph osd dump
结果应该显示 map epoch, eNNNN
, OSD 的总数量, x
, 多少个, y
, 是 up
, 多少个, z
, 是 in
:
eNNNN: x osds: y up, z in
如果存在于
存储集群中的 Ceph OSD 数量超过了状态为 up
的数量。执行以下命令来标识没有运行的 ceph-osd
守护进程:
示例
[ceph: root@host01 /]# ceph osd tree # id weight type name up/down reweight -1 3 pool default -3 3 rack mainrack -2 3 host osd-host 0 1 osd.0 up 1 1 1 osd.1 up 1 2 1 osd.2 up 1
通过设计好的 CRUSH 层次结构进行搜索的功能可以帮助您更快地识别存储位置对存储集群进行故障排除。
如果 Ceph OSD 为 down
,连接到该节点并启动它。您可以使用 Red Hat Storage Console 重启 Ceph OSD 守护进程,或者通过命令行。
语法
systemctl start CEPH_OSD_SERVICE_ID
示例
[root@host01 ~]# systemctl start ceph-499829b4-832f-11eb-8d6d-001a4a000635@osd.6.service
其它资源
- 如需了解更多详细信息,请参阅 Red Hat Ceph Storage Dashboard 指南。