CephFS 最佳实践

本指南给出了一些 CephFS 的部署建议,借此达到最佳效果。

真正的 CephFS 配置指南位于 Ceph 文件系统

哪个版本的 Ceph ?

至少得用 Jewel (v10.2.0) 版的 Ceph ,这是第一个包含稳定 CephFS 代码以及文件系统检查、修复工具的版本。你最好使用最新的修订版,它们解决了一些软件缺陷。

注意, Ceph 发布不包含内核客户端,它有自己的版本方案、并独立发布。如果你在用 CephFS 的内核客户端,请参考下文选择合适的内核版本。

最稳定的配置

CephFS 的某些功能仍然是实验性的,启用前请参考 实验性功能

为了营造一个“健康快乐”的文件系统,要使用单个活跃 MDS 并且不要用快照功能,这两条都是默认的:

注意,创建多个 MDS 守护进程不会有问题,因为它们只会作为灾备。然而,为稳定起见,你最好别增大 max_mds ,因为这会让多个 MDS 守护进程同时处于活跃状态。

用哪个客户端

FUSE 客户端是最简便、也最容易升级到与存储集群一致的 Ceph 版本,但是内核客户端的性能通常更好。

这两种客户端不一定会提供一样的功能,如 fuse 客户端可支持客户端强制配额,而内核客户端却不支持。

遇到缺陷或性能问题时,最好试试另一个客户端,以甄别此缺陷是否特定于客户端(然后报告给开发者)。

哪个内核版本?

由于内核客户端是作为 Linux 内核的一部分发布的(不是随打包的 Ceph 二进制包发布),所以你得考虑客户端节点用哪个内核版本。已知比较老的内核所带的 Ceph 客户端有诸多缺陷,而且不一定支持近期 Ceph 集群所支持的功能。

需要注意的是, Linux 发行版的稳定分支里的“最新”内核可能会比最新的上游 Linux 内核晚好几年,而 Ceph 的开发是与上游内核同步的(包括缺陷修订)。

粗略地算,从 Ceph 10.x (Jewel) 起,你最好用 4.x 以上的内核。如果不得不用更老的内核,那你应该用 fuse 客户端,不要用内核客户端。

如果你的 Linux 发行版提供额外的 CephFS 技术支持,那就另当别论了,这时候发行者会负责把修订补丁移植到他们的稳定版内核:请与厂商核实。

报告问题

如果你确信发现了问题,报告时请附带尽可能多的信息,特别是重要信息:

  • 客户端和服务器所安装的 Ceph 版本;

  • 你在用内核、还是用户空间客户端;

  • 如果你在用内核客户端,是什么版本?

  • 有多少个客户端在用?什么样的负载?

  • 如果某个系统“卡住”了,它影响所有客户端呢还是只影响一个?

  • 关于 Ceph 的健康状况消息;

  • 崩溃时写入日志的回调栈。

如果你觉得自己发现了一个缺陷,请在 tracker 提交。一般问题的话可以发邮件到 ceph-users 邮件列表询问。