注意

本文档适用于 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(标识)灯。

注意

此命令仅在 Cephadm 或 Rook orchestrator 模块启用时才有效。要查看启用了哪个 orchestrator 模块,请运行以下命令

ceph orch status

使驱动器 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

    一个包含 identfault 的字符串。

  • 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

由 Ceph 基金会为您呈现

Ceph 文档是由非营利性 Ceph 基金会 资助和托管的社区资源。如果您希望支持这项工作和我们的其他努力,请考虑 立即加入