3.3.4. 放置组状态
如果执行诸如 ceph health
, ceph -s
或 ceph -w
等命令,您可能会注意到集群并不总是回显 HEALTH OK
。检查 OSD 是否在运行后,您也应检查放置组状态。您应该可以预计,在与放置组对等相关的一些情况下,集群不会反映 HEALTH OK
:
- 您刚刚创建了一个池,放置组还没有对等。
- 放置组正在恢复。
- 您刚刚向集群添加一个 OSD 或从集群中移除一个 OSD。
- 您刚修改了 CRUSH map,并且已迁移了放置组。
- 在放置组的不同副本中,数据不一致。
- Ceph 清理放置组的副本。
- Ceph 没有足够存储容量来完成回填操作。
如果一个预期的情况导致 Ceph 反映了 HEALTH WARN
,请不要紧张。在很多情况下,集群将自行恢复。在某些情况下,您可能需要采取措施。监控放置组的一个重要方面是确保在集群启动并运行所有放置组处于 active
状态,并且最好处于 clean
状态。
要查看所有放置组的状态,请执行:
[root@mon ~]# ceph pg stat
结果显示放置组映射版本 vNNNNNN
、放置组总数 x
以及放置组数量 y
都处于特定的状态,如 active+clean
:
vNNNNNN: x pgs: y active+clean; z bytes data, aa MB used, bb GB / cc GB avail
Ceph 通常会报告放置组的多个状态。
Snapshot Trimming PG States
当快照存在时,将报告两个额外的 PG 状态。
-
snaptrim
:PG 目前被修剪 -
snaptrim_wait
:PG 等待被修剪
输出示例:
244 active+clean+snaptrim_wait 32 active+clean+snaptrim
除了放置组状态外,Ceph 还会回显所使用的数据量,aa
(剩余存储容量),bb
(放置组的总存储容量)。在一些情况下,这些数字非常重要:
-
您达到了
几乎全满比率
或全满比率
。 - 由于 CRUSH 配置中的一个错误,您的数据不会分散到集群中。
放置组 ID
放置组 ID 由池的号而不是名称组成,后跟一个句点 (.) 和放置组 ID(一个十六进制数字)。您可以从 ceph osd lspools
的输出中查看池编号及其名称。默认池名称为 data
, metadata
和 rbd
,分别与池号 0
, 1
和 2
对应。完全限定的放置组 ID 的格式如下:
POOL_NUM.PG_ID
输出示例:
0.1f
检索放置组列表:
[root@mon ~]# ceph pg dump
以 JSON 格式格式化输出并将其保存到文件中:
[root@mon ~]# ceph pg dump -o FILE_NAME --format=json
查询特定的放置组:
[root@mon ~]# ceph pg POOL_NUM.PG_ID query
JSON 格式的输出示例:
{ "state": "active+clean", "up": [ 1, 0 ], "acting": [ 1, 0 ], "info": { "pgid": "1.e", "last_update": "4'1", "last_complete": "4'1", "log_tail": "0'0", "last_backfill": "MAX", "purged_snaps": "[]", "history": { "epoch_created": 1, "last_epoch_started": 537, "last_epoch_clean": 537, "last_epoch_split": 534, "same_up_since": 536, "same_interval_since": 536, "same_primary_since": 536, "last_scrub": "4'1", "last_scrub_stamp": "2013-01-25 10:12:23.828174" }, "stats": { "version": "4'1", "reported": "536'782", "state": "active+clean", "last_fresh": "2013-01-25 10:12:23.828271", "last_change": "2013-01-25 10:12:23.828271", "last_active": "2013-01-25 10:12:23.828271", "last_clean": "2013-01-25 10:12:23.828271", "last_unstale": "2013-01-25 10:12:23.828271", "mapping_epoch": 535, "log_start": "0'0", "ondisk_log_start": "0'0", "created": 1, "last_epoch_clean": 1, "parent": "0.0", "parent_split_bits": 0, "last_scrub": "4'1", "last_scrub_stamp": "2013-01-25 10:12:23.828174", "log_size": 128, "ondisk_log_size": 128, "stat_sum": { "num_bytes": 205, "num_objects": 1, "num_object_clones": 0, "num_object_copies": 0, "num_objects_missing_on_primary": 0, "num_objects_degraded": 0, "num_objects_unfound": 0, "num_read": 1, "num_read_kb": 0, "num_write": 3, "num_write_kb": 1 }, "stat_cat_sum": { }, "up": [ 1, 0 ], "acting": [ 1, 0 ] }, "empty": 0, "dne": 0, "incomplete": 0 }, "recovery_state": [ { "name": "Started\/Primary\/Active", "enter_time": "2013-01-23 09:35:37.594691", "might_have_unfound": [ ], "scrub": { "scrub_epoch_start": "536", "scrub_active": 0, "scrub_block_writes": 0, "finalizing_scrub": 0, "scrub_waiting_on": 0, "scrub_waiting_on_whom": [ ] } }, { "name": "Started", "enter_time": "2013-01-23 09:35:31.581160" } ] }
其它资源
- 有关快照修剪设置的详情,请参阅 Red Hat Ceph Storage 4 配置指南中的 章节 Object Storage Daemon (OSD)配置选项。