自动 CephFS 黑名单后恢复
Linux Kernel CephFS 客户端获得了在黑名单和取消黑名单事件后自动恢复集群访问的能力。
CephFS 严重依赖于将可召回的状态对象(由文件能力、目录项等表示)委托给客户端,以获得良好的性能。这允许客户端有效地缓存文件系统粒度信息。性能(和前向进展)也依赖于客户端在 MDS 撤销时及时返回该状态。
在某些情况下,客户端可能无法将状态返回给 MDS 很长时间。这可能是由于客户端或服务器上的错误,或者它们之间的连接丢失造成的。在这种情况下,客户端最终可能会被 MDS 列入黑名单(也称为驱逐),所有状态都被强制撤销。
解决问题后,管理员可以从黑名单中删除客户端。过去,客户端需要重新挂载文件系统才能恢复,这对于某些应用程序来说会造成破坏。
从 v5.4 开始,Linux 客户端接受一个新的 recover_session= 挂载选项。默认值为 recover_session=no,这保留了历史行为。
如果指定了挂载选项 recover_session=clean,则客户端将在清除黑名单后尝试重新连接到 MDS。
对于所有读取操作且不涉及文件锁定的工作负载,恢复应该无缝进行。
它也可以用于可写挂载和/或文件锁定,但客户端必须采取措施来保护未列入黑名单的客户端的数据完整性,并确保在这种情况下其缓存是一致的。
任何写入缓存但尚未刷出的数据或元数据都将被丢弃,并且针对这些 inode 将记录回写错误(导致在文件描述符之一上调用 fsync() 时返回错误)。
与任何文件锁定的文件关联的文件描述符将在任何读取或写入尝试时返回错误。在允许任何读取或写入之前,必须关闭所有这些文件描述符。
通常,不应由与 MDS 具有稳定连接的大多数客户端使用此选项,但在连接可能不稳定且可用性比正确性更重要的环境中,管理员可能需要考虑启用它。