注意
本文档适用于 Ceph 的开发版本。
恢复灾难性 Monitor 存储丢失后的文件系统
在极少数情况下,集群中的所有 Monitor 存储可能会损坏或丢失。在这种情况下,要恢复集群,您需要使用 OSD 重建 Monitor 存储(参见 使用 OSD 恢复),并使池保持完整(active+clean 状态)。然而,重建的 Monitor 存储不会恢复文件系统映射(“FSMap”)。需要额外的步骤来恢复文件系统。恢复多个活动 MDS 文件系统或多个文件系统的步骤尚待确定。目前,仅确定并测试了恢复集群中具有单个活动 MDS 且没有其他文件系统的步骤。简而言之,这些步骤是:使用基本默认值重新创建 FSMap;并允许 MDS 从存储在文件系统池中的日志/元数据中恢复。下面将更详细地描述这些步骤。
首先,使用恢复的文件系统池重新创建文件系统。新的 FSMap 将具有文件系统的默认设置。然而,用户定义的文件系统设置,例如 standby_count_wanted、required_client_features、额外的数据池等,都会丢失,需要稍后重新应用。
ceph fs new <fs_name> <metadata_pool> <data_pool> --force --recover
recover 标志将文件系统 rank 0 的状态设置为已存在但失败。因此,当 MDS 守护程序最终接管 rank 0 时,守护程序会读取现有的 in-RADOS 元数据,而不会覆盖它。该标志还可防止备用 MDS 守护程序激活文件系统。
文件系统的集群 ID(fscid)将不会保留。对于某些应用程序(例如 Ceph CSI)来说,这种行为可能不受欢迎,因为它们期望文件系统在恢复后保持不变。要解决此问题,您可以选择在上述命令中设置 fscid 选项(参见 高级)。
允许备用 MDS 守护程序加入文件系统。
ceph fs set <fs_name> joinable true
检查文件系统是否不再处于降级状态并具有活动 MDS。
ceph fs status
重新应用任何其他自定义文件系统设置。