注意
本文档适用于 Ceph 的开发版本。
设备管理
设备管理允许 Ceph 应对硬件故障。Ceph 跟踪硬件存储设备(HDD、SSD),以查看哪些设备由哪些守护程序管理。Ceph 还收集有关这些设备的健康指标。通过这样做,Ceph 可以提供预测硬件故障的工具,并可以自动响应硬件故障。
设备跟踪
要查看正在使用的存储设备列表,请运行以下命令
ceph device ls
或者,要按守护程序或按主机列出设备,请运行以下形式之一的命令
ceph device ls-by-daemon <daemon>
ceph device ls-by-host <host>
要查看有关特定设备位置以及设备如何被使用的信息,请运行以下形式的命令
ceph device info <devid>
识别物理设备
为了使更换故障磁盘更容易且不易出错,您可以通过运行以下形式的命令来(在某些情况下)“闪烁”硬件外壳上的驱动器 LED 灯
device light on|off <devid> [ident|fault] [--force]
注意
使用此命令闪烁指示灯可能不起作用。它是否起作用取决于您的内核版本、SES 固件或 HBA 设置等因素。
<devid> 参数是设备标识。要检索此信息,请运行以下命令
ceph device ls
[ident|fault] 参数确定哪种灯会闪烁。默认情况下,使用 identification(标识)灯。
使驱动器 LED 闪烁的命令是 lsmcli。要自定义此命令,请通过运行以下形式的命令,使用 Jinja2 模板对其进行配置
ceph config-key set mgr/cephadm/blink_device_light_cmd "<template>"
ceph config-key set mgr/cephadm/<host>/blink_device_light_cmd "lsmcli local-disk-{{ ident_fault }}-led-{{'on' if on else 'off'}} --path '{{ path or dev }}'"
以下参数可用于自定义 Jinja2 模板
on一个布尔值。
ident_fault一个包含 ident 或 fault 的字符串。
dev一个包含设备 ID 的字符串:例如,SanDisk_X400_M.2_2280_512GB_162924424784。
path一个包含设备路径的字符串:例如,/dev/sda。
启用监控
Ceph 还可以监控与您的设备相关的健康指标。例如,SATA 驱动器实现了一个名为 SMART 的标准,该标准提供了有关设备使用情况和健康状况的各种内部指标(例如:通电小时数、通电周期数、不可恢复读取错误数)。其他设备类型(如 SAS 和 NVMe)也提供了一组类似的指标(通过稍有不同的标准)。所有这些指标都可以通过 smartctl 工具由 Ceph 收集。
您可以通过运行以下命令之一来启用或禁用健康监控
ceph device monitoring on
ceph device monitoring off
抓取
如果启用了监控,设备指标将以固定的时间间隔自动抓取。要配置该时间间隔,请运行以下形式的命令
ceph config set mgr mgr/devicehealth/scrape_frequency <seconds>
默认情况下,每 24 小时抓取一次设备指标。
要手动抓取所有设备,请运行以下命令
ceph device scrape-health-metrics
要抓取单个设备,请运行以下形式的命令
ceph device scrape-health-metrics <device-id>
要抓取单个守护程序的设备,请运行以下形式的命令
ceph device scrape-daemon-health-metrics <who>
要检索设备的存储健康指标(可选地针对特定时间戳),请运行以下形式的命令
ceph device get-health-metrics <devid> [sample-timestamp]
故障预测
Ceph 可以通过分析收集到的健康指标来预测驱动器寿命和设备故障。预测模式如下
none:禁用设备故障预测。
local:使用来自
ceph-mgr守护程序的预训练预测模型。
要配置预测模式,请运行以下形式的命令
ceph config set global device_failure_prediction_mode <mode>
在正常情况下,故障预测在后台定期运行。因此,寿命值可能需要经过很长时间才会填充。所有设备的寿命都显示在以下命令的输出中
ceph device ls
要查看特定设备的元数据,请运行以下形式的命令
ceph device info <devid>
要显式强制预测特定设备的寿命,请运行以下形式的命令
ceph device predict-life-expectancy <devid>
除了 Ceph 内部的设备故障预测之外,您可能还有外部信息源来了解设备故障。要告知 Ceph 特定设备的寿命,请运行以下形式的命令
ceph device set-life-expectancy <devid> <from> [<to>]
寿命表示为一个时间间隔。这意味着寿命的不确定性可以表示为一个时间范围,而且可能是一个很宽的时间范围。间隔的末尾可以不指定。
健康警报
mgr/devicehealth/warn_threshold 配置选项控制对预期设备故障的健康检查。如果设备预计在指定的时间间隔内发生故障,则会发出警报。
要检查所有设备的存储寿命并生成任何适当的健康警报,请运行以下命令
ceph device check-health
自动迁移
mgr/devicehealth/self_heal 选项(默认启用)会自动将数据从预计很快会发生故障的设备中迁移出去。如果启用此选项,模块会将此类设备标记为 out,以便进行自动迁移。
注意
mon_osd_min_up_ratio 配置选项有助于防止此过程级联到完全故障。如果“self heal”模块标记 out 的 OSD 数量过多,导致超过 mon_osd_min_up_ratio 的比率值,则集群会引发 DEVICE_HEALTH_TOOMANY 健康检查。有关在这种情况下如何操作的说明,请参阅 DEVICE_HEALTH_TOOMANY。
mgr/devicehealth/mark_out_threshold 配置选项指定自动迁移的时间间隔。如果设备预计在指定的时间间隔内发生故障,它将自动标记为 out。