核心显示命令(如cat、more、less、head、tail)用于查看文件内容,cat直接输出全部,more/less支持分页浏览,head/tail分别显示文件开头或结尾部分,适用于不同查看需求。
在Ceph分布式存储系统中,osd
(对象存储守护进程)是核心组件之一,负责实际的数据存储、复制、恢复等操作,管理和监控OSD的状态是日常运维的关键。ceph osd
命令组是查询和显示OSD信息的主要工具,它提供了多种子命令来展示不同维度的OSD状态。
-
ceph osd stat
(或ceph osd status
)- 作用: 提供OSD集群的全局概览,显示最关键的汇总信息。
- 输出示例:
osdmap e537: 12 osds: 12 up, 12 in; 300 remapped pgs
- 解读:
osdmap e537
: 当前OSD Map的版本号 (epoch)。12 osds
: 集群中配置的OSD总数。12 up
: 当前处于运行状态 (up
) 的OSD数量(守护进程正在运行)。12 in
: 当前处于集群内 (in
) 的OSD数量(数据分布包含这些OSD)。300 remapped pgs
: 正在进行重映射的PG(归置组)数量(通常发生在OSD状态变化期间)。
- 用途: 快速检查集群整体健康度,确认
up
和in
的数量是否等于总OSD数,如果不相等,说明有OSD出现问题。
-
ceph osd dump
- 作用: 提供最详细的OSD信息转储,它以JSON格式(默认)或纯文本格式输出当前OSD Map的全部内容。
- (关键部分):
- OSD Map版本 (
epoch
) - 集群ID (
fsid
) - 创建/修改时间 (
created
,modified
) - 所有配置的OSD列表 (
osds
): 每个OSD的详细信息包括:osd
: OSD编号 (如 0, 1, 2…)up
/down
: 守护进程状态 (1=up, 0=down)in
/out
: 集群内状态 (1=in, 0=out)primary_affinity
: 主OSD亲和性(权重)last_clean_begin
/last_clean_end
: 上次深度清理的PG范围up_from
,up_thru
,down_at
: 状态变更时间戳state
: 状态集合 (e.g.,exists
,up
,in
)weight
: CRUSH权重(影响数据分布)public_addr
,cluster_addr
: 网络地址uuid
: OSD的UUID
- PG Map相关信息 (
pg_temp
,primary_temp
) - CRUSH Map版本 (
crush_version
) - 各种参数 (
flags
,min_osd_epoch
,min_compat_client
,require_osd_release
,require_min_compat_client
,full
,nearfull
,backfillfull
,remapped
,recovery_priority
)
- OSD Map版本 (
- 用途: 获取单个OSD或所有OSD的最全面信息,用于深度排查问题或脚本解析,信息量巨大,通常结合
grep
或jq
过滤查看特定OSD (e.g.,ceph osd dump | grep -A 30 "osd.0"
)。
-
ceph osd tree
- 作用: 以树形结构可视化展示OSD在CRUSH Map中的位置(Bucket层级,如host, rack, row, room, root)及其状态和权重。
- 输出示例:
ID CLASS WEIGHT TYPE NAME STATUS REWEIGHT PRI-AFF -1 0.87898 root default -3 0.43949 host ceph-node1 0 hdd 0.10987 osd.0 up 1.00000 1.00000 1 hdd 0.10987 osd.1 up 1.00000 1.00000 2 hdd 0.10987 osd.2 up 1.00000 1.00000 3 hdd 0.10987 osd.3 up 1.00000 1.00000 -5 0.43949 host ceph-node2 4 hdd 0.10987 osd.4 up 1.00000 1.00000 ...
- 解读:
ID
: 节点ID(负数为Bucket,正数为OSD)。CLASS
: 设备类型 (e.g.,hdd
,ssd
)。WEIGHT
: CRUSH权重(Bucket是其子项权重之和)。TYPE
: 节点类型 (root
,host
,osd
等)。NAME
: 节点名称 (主机名或osd.N)。STATUS
: OSD状态 (up
/down
),Bucket状态是其子项状态的聚合(如果所有子OSD都up
,则显示up
;如果有一个down
,则显示down
)。REWEIGHT
: 管理员设置的临时权重(用于调整数据分布,通常为1.0)。PRI-AFF
: 主OSD亲和性(通常为1.0)。
- 用途: 直观查看OSD的物理/逻辑位置分布,快速定位故障OSD所在的物理主机或机架,理解数据分布结构,是最常用的查看OSD拓扑和状态的方式。
-
ceph osd df
(或ceph osd df tree
)- 作用: 显示每个OSD(或按树形聚合)的磁盘空间使用情况(原始容量、已用、可用)和利用率百分比。
- 输出示例 (简化):
ID CLASS WEIGHT REWEIGHT SIZE RAW USE DATA OMAP META AVAIL %USE VAR PGS STATUS 0 hdd 0.10987 1.00000 111 GiB 5.4 GiB 4.9 GiB 0 B 0 B 106 GiB 4.88 1.00 68 up 1 hdd 0.10987 1.00000 111 GiB 5.5 GiB 5.0 GiB 0 B 0 B 105 GiB 4.95 1.01 70 up ... TOTAL 1.31845 1.00 1333 GiB 65 GiB 59 GiB 0 B 0 B 1268 GiB 4.88 MIN/MAX VAR: 0.98/1.05 STDDEV: 0.52
- 解读:
SIZE
: OSD后端存储设备的原始总容量。RAW USE
: OSD实际占用的原始磁盘空间(包含数据、内部元数据、预分配空间等),这是最接近df -h
看到的已用空间的概念。DATA
: 用户数据实际占用的空间(不包括副本/纠删码开销)。OMAP
: OSD的Object Map使用的空间(通常很小,除非使用RGW bucket索引等)。META
: OSD内部元数据占用的空间。AVAIL
: 可用空间 (SIZE
–RAW USE
)。%USE
: 空间利用率 (RAW USE
/SIZE
* 100%)。VAR
: 该OSD利用率与集群平均利用率的方差(接近1.0表示均衡)。PGS
: 该OSD上存储的PG数量。
- 用途: 监控磁盘容量和负载均衡,识别即将满的OSD (
%USE
过高) 或负载不均衡 (VAR
偏离1.0过多) 的情况。ceph osd df tree
会按CRUSH树形结构聚合显示空间使用。
-
ceph osd ls
- 作用: 仅列出所有已存在的OSD的ID编号。
- 输出示例:
0 1 2 3 4 ...
- 用途: 获取一个简单的OSD ID列表,常用于脚本中遍历所有OSD。
理解 up
vs in
:
up
(运行状态): 指OSD守护进程是否正在运行并与Monitor保持通信。ceph -s
或ceph osd stat
中的up
数量表示运行中的OSD数,一个OSDdown
通常意味着该服务器上的ceph-osd
进程崩溃、服务器宕机或网络中断。in
(集群内状态): 指OSD是否被包含在数据分布(CRUSH Map)中。ceph -s
或ceph osd stat
中的in
数量表示集群内参与数据存储的OSD数,管理员可以手动将OSD标记为out
(ceph osd out <osd-id>
),将其从集群中移除(数据会迁移走),一个OSDdown
一段时间后,集群可能会自动将其标记为out
(取决于配置)。
重要提示与最佳实践:
- 权限: 执行这些命令通常需要具有适当权限的Ceph客户端密钥环(如
client.admin
)。 - 集群健康: 在执行任何管理操作(如
osd out
,osd down
)之前,务必先检查ceph -s
确保集群总体是HEALTH_OK
或HEALTH_WARN
(了解警告原因),在非健康状态下操作风险更高。 - 谨慎操作:
ceph osd down
和ceph osd out
是管理命令,会改变集群状态并触发数据迁移/恢复,仅在明确需要时才使用(如更换故障磁盘前)。ceph osd dump
等显示命令是只读查询,相对安全。 - 结合使用: 通常先用
ceph osd stat
或ceph -s
看全局,再用ceph osd tree
看拓扑和状态定位具体OSD,最后用ceph osd df
看该OSD的容量或ceph osd dump
看其详细信息。 - 过滤输出: 对于
ceph osd dump
和ceph osd df
等输出量大的命令,善用grep
(e.g.,ceph osd dump | grep osd.1
) 或jq
(处理JSON格式) 来聚焦特定OSD的信息。 - 版本差异: 不同Ceph版本(如Luminous, Nautilus, Octopus, Pacific, Quincy, Reef)的命令输出格式和可用字段可能有细微差别,请以实际环境输出和官方文档为准。
要有效显示Ceph OSD的信息,核心在于掌握 ceph osd
命令组的几个关键子命令:
- 快速全局状态:
ceph osd stat
- 查看拓扑和状态:
ceph osd tree
(最常用) - 查看磁盘空间:
ceph osd df
/ceph osd df tree
- 获取最详细信息:
ceph osd dump
- 仅列ID:
ceph osd ls
理解 up
和 in
状态的区别对于诊断问题至关重要,始终优先使用只读查询命令 (stat
, tree
, df
, dump
, ls
) 来监控和诊断,谨慎使用会改变集群状态的管理命令 (down
, out
),结合 ceph -s
查看集群整体健康是操作前的必要步骤。
引用说明:
- 基于Ceph官方文档关于
ceph osd
命令的说明,特别是stat
,dump
,tree
,df
,ls
等子命令的描述,核心概念如OSD状态(up
/in
/down
/out
)、CRUSH Map、PG等均遵循Ceph的架构设计,具体命令参数和输出细节可参考对应Ceph版本的官方文档:https://docs.ceph.com/。 - 空间使用统计(
SIZE
,RAW USE
,DATA
等)的解释参考了ceph osd df
命令的输出说明及社区讨论中对这些字段含义的共识。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/6016.html