注意

本文档适用于 Ceph 的开发版本。

警告

此页上的内容仅用于手动设置 Ceph 集群。如果您打算使用自动化工具(例如 Cephadm)设置 Ceph 集群,请勿使用此页上的说明。

注意

如果您确定自己知道自己在做什么,并且打算手动部署 MDS 守护程序,请在继续之前参阅 MDS 服务

部署元数据服务器

每个 CephFS 文件系统至少需要一个 MDS。集群操作员通常会使用其自动化部署工具来根据需要启动所需的 MDS 服务器。Rook 和 Ansible(通过 ceph-ansible playbook)是推荐用于执行此操作的工具。为清楚起见,我们还在此处显示了系统在裸机上执行时部署技术可能运行的 systemd 命令。

有关配置元数据服务器的详细信息,请参阅 MDS 配置参考

为 MDS 预置硬件

当前版本的 MDS 是单线程的,并且在大多数活动中(包括响应客户端请求)都受 CPU 限制。在最激进的客户端负载下,一个 MDS 使用大约 2 到 3 个 CPU 核心。这是由于其他杂项维护线程协同工作造成的。

尽管如此,建议为 MDS 服务器提供足够的核心的高级 CPU。目前正在进行开发,以更好地利用 MDS 中可用的 CPU 核心;预计在未来版本的 Ceph 中,MDS 服务器将通过利用更多核心来提高性能。

MDS 性能的另一个维度是可用于缓存的 RAM。MDS 必须管理所有客户端和其他活动 MDS 之间的分布式协作元数据缓存。因此,必须为 MDS 提供足够的 RAM,以便更快地进行元数据访问和修改。默认的 MDS 缓存大小(另请参阅 MDS 缓存配置)为 4GB。建议为 MDS 预置至少 8GB 的 RAM 以支持此缓存大小。

通常,服务于大量客户端(1000 个或更多)的 MDS 将使用至少 64GB 的缓存。在已知最大的社区集群中,具有更大缓存的 MDS 尚未得到充分探索;管理如此大的缓存可能会以令人惊讶的方式对性能产生负面影响,从而导致收益递减。最好对预期的工作负载进行分析,以确定预置更多 RAM 是否值得。

在裸机集群中,最佳实践是为 MDS 服务器过度预置硬件。即使单个 MDS 守护程序无法完全利用硬件,稍后可能希望在同一节点上启动更多活动的 MDS 守护程序,以充分利用可用的核心和内存。此外,在集群上的工作负载可能表明,在同一节点上使用多个活动的 MDS 比单个超载的 MDS 可以提高性能。

最后,请注意 CephFS 通过支持备用 MDS(另请参阅 术语)来实现快速故障转移,从而成为高可用性文件系统。为了从部署备用 MDS 中获得真正的益处,通常有必要将 MDS 守护程序分布在集群中的至少两个节点上。否则,单个节点上的硬件故障可能导致文件系统不可用。

将 MDS 与其他 Ceph 守护程序(超融合)放在一起是一种有效且推荐的方法,只要所有守护程序都配置为在特定限制内使用可用硬件。对于 MDS,这通常意味着限制其缓存大小。

添加 MDS

  1. 创建 mds 目录 /var/lib/ceph/mds/ceph-${id}。守护程序仅使用此目录来存储其密钥环。

  2. 如果您使用 CephX,则创建身份验证密钥

    $ sudo ceph auth get-or-create mds.${id} mon 'profile mds' mgr 'profile mds' mds 'allow *' osd 'allow *' > /var/lib/ceph/mds/ceph-${id}/keyring
    
  3. 启动服务

    $ sudo systemctl start ceph-mds@${id}
    
  4. 集群的状态应显示

    mds: ${id}:1 {0=${id}=up:active} 2 up:standby
    
  5. (可选)配置 MDS 应加入的文件系统(配置 MDS 文件系统关联性

    $ ceph config set mds.${id} mds_join_fs ${fs}
    

移除 MDS

如果您集群中有一个想要移除的元数据服务器,可以使用以下方法。

  1. (可选:)创建一个新的替换元数据服务器。如果移除 MDS 后没有替换 MDS 接管,则文件系统将对客户端不可用。如果这不是您想要的,请考虑在您想要使元数据服务器脱机之前添加一个元数据服务器。

  2. 停止要移除的 MDS。

    $ sudo systemctl stop ceph-mds@${id}
    

    MDS 将自动通知 Ceph 监视器它正在关闭。这使得监视器能够立即故障转移到可用的备用 MDS(如果存在)。无需使用管理命令来执行此故障转移,例如通过使用 ceph mds fail mds.${id}

  3. 移除 MDS 上的 /var/lib/ceph/mds/ceph-${id} 目录。

    $ sudo rm -rf /var/lib/ceph/mds/ceph-${id}
    

注意

当活动的 MDS 具有健康警告 MDS_TRIM 或 MDS_CACHE_OVERSIZED 时,需要传递确认标志 (--yes-i-really-mean-it),否则命令将失败。不建议重新启动具有这些警告的 MDS,因为重新启动时的缓慢恢复可能导致更多问题。

由 Ceph 基金会为您呈现

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