核心显示命令(如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