适用场景
- 产品:HCI 旗舰版。
- 组件:通用存储。
- 版本:5.4.0 及之后版本。
- 涉及对象:仍可被系统识别、且与数据盘正常关联的缓存盘。
- 触发条件:缓存盘接近现场运维更换阈值,需要在其仍可正常识别时更换为新盘。
本文不适用于高性能存储缓存盘更换、旧缓存盘已经离线或无法识别、缓存与数据盘关联异常,以及存在进行中数据恢复任务的场景。
问题现象
- 运维检查发现缓存盘需要预防性更换,但缓存盘及其关联数据盘当前仍正常。
- 需要在不直接拔除旧盘的情况下,使用快速换盘流程将缓存关系迁移至新盘。
判断方法
- 在管理界面记录旧缓存盘所在节点、设备路径、序列号、缓存分区和所有关联数据盘,并在目标节点复核设备路径和序列号。
- 执行以下命令,确认当前环境提供快速换盘功能:
/opt/zstone/bin/zstnctl version
/opt/zstone/bin/zstnctl disk replace-cache --help
- 确认旧缓存盘仍可识别,且缓存分区与数据盘的关联正常。
- 确认新盘健康,已在管理界面创建缓存分区,且新盘缓存分区数量不少于旧盘。
- 确认当前没有进行中的数据恢复任务。本次变更一次仅处理一个节点,完成恢复后再处理下一块盘。
设备路径可能变化,不能仅凭 /dev/sda、机箱位置或盘符确定操作对象。
原因说明
快速换盘依赖旧缓存盘仍可使用,以及缓存分区与数据盘的关联正常。操作时间受缓存 dirty 数据量和介质性能影响;若旧盘已离线、关联异常或集群正在恢复,继续执行可能扩大故障影响。
解决方案
1. 执行前准备
- 在维护窗口执行。建议联系官方技术支持进行评估。
- 记录新旧缓存盘的设备路径、序列号、分区数量和关联数据盘,并确认备份和现场恢复安排。
- 根据 dirty 数据量和集群恢复时间安排维护窗口。来源材料给出的经验值为约 100 GB dirty 数据对应约 40 分钟,实际时间以现场状态为准。
- 在管理界面确认当前没有进行中的数据恢复任务。
2. 暂停自动数据恢复并设置维护模式
- 在管理界面关闭“集群数据恢复”开关,并记录操作前状态。该操作用于避免换盘期间自动恢复与本次变更并行,不代表可以跳过对进行中恢复任务的检查。
- 将旧缓存盘关联的全部数据盘设置为维护模式,并逐一确认维护范围不包含无关数据盘。
3. 准备新缓存盘
- 在管理界面为新盘创建缓存分区。
- 确认新旧缓存盘均位于本次操作的目标节点,且新盘缓存分区数量不少于旧盘。
- 对于 NVMe 旧缓存盘,可按现场方案更换为新 NVMe 或 SATA SSD;对于 SATA SSD 旧缓存盘,常规流程使用 SATA SSD 替换。介质转换需求请先联系官方技术支持确认。
4. 执行快速换盘
在新旧缓存盘所在节点执行以下命令。执行前请依据目标版本交付说明或官方技术支持确认 --vip 的具体填写值:
/opt/zstone/bin/zstnctl disk replace-cache \
--current-path '<旧缓存盘设备路径>' \
--new-path '<新缓存盘设备路径>' \
--vip '<当前环境确认的管理地址>'
--current-path:当前仍在使用的旧缓存盘设备路径。--new-path:已准备缓存分区的新缓存盘设备路径。--vip:当前环境确认可用于本次操作的管理地址。
等待命令执行完成并检查输出。不要在其他节点或同一节点并发发起换盘任务;出现错误、进度异常或资源关联不符时,停止后续操作并联系官方技术支持。
5. 恢复集群服务
- 确认新缓存盘与预期数据盘的关联符合换盘目标后,取消本次相关数据盘的维护模式。
- 在管理界面重新开启“集群数据恢复”。
- 等待数据恢复完成、相关数据盘及缓存状态正常后,再进行下一块盘的操作。
验证方法
- 换盘任务:命令执行完成,无未处理错误。
- 缓存关联:新缓存盘及分区与预期数据盘关联正确,旧盘不再承载本次缓存关系。
- 数据盘状态:本次相关数据盘已退出维护模式并恢复正常运行。
- 集群设置:“集群数据恢复”已重新开启,恢复任务完成。
- 集群状态:在具备管理配置的节点执行
ceph -s、ceph osd tree,确认集群状态正常。 - 业务访问:原有业务读写正常,延迟和错误无持续异常。
风险与回滚
- 换盘期间关闭自动数据恢复且相关数据盘处于维护模式,应控制维护范围和维护窗口,避免同时引入其他节点维护。
- 新旧盘路径填反、缓存分区未准备或遗漏关联数据盘,均可能导致缓存关系异常;不能在旧盘已离线的情况下套用本流程。
- 发生异常时,保留新旧盘、缓存分区、命令输出和相关日志;不要反向交换新旧路径再次执行命令,也不要格式化任一磁盘。
- 素材未提供通用回滚命令。异常后的维护模式、恢复开关和资源关联恢复方式,应由官方技术支持结合失败阶段确认。
