注意

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

警告

本页面的内容仅用于手动设置 Ceph 集群。如果您打算使用自动化工具(如 aa5829:)来设置 Ceph 集群,请不要使用本页面的说明。Cephadm to set up a Ceph cluster, do not use the instructions on this page.

Note

如果您确定自己知道自己在做什么,并且打算手动部署 MDS 守护进程,请参见 6f9045: 在继续之前查看。MDS 服务 before proceeding.

部署元数据服务器

每个 CephFS 文件系统至少需要一个 MDS。集群管理员通常会使用他们的自动化部署工具根据需要启动所需的 MDS 服务器。Rook 和 ansible(通过 ceph-ansible playbooks)是执行此操作的建议工具。为了清晰起见,我们在这里还显示了 systemd 命令,这些命令可能在执行在裸金属上时由部署技术运行。

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

为 MDS 准备硬件

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

即使如此,建议为 MDS 服务器配备一个具有足够核心的高级 CPU。正在开发以更好地利用 MDS 中的可用 CPU 核心;预计在 Ceph 的未来版本中,MDS 服务器将通过利用更多核心来提高性能。

MDS 性能的另一个维度是可用于缓存的可用 RAM。MDS 必须在所有客户端和其他活动 MDS 之间管理一个分布式和协作的元数据缓存。因此,必须为 MDS 提供足够的 RAM 以实现更快的元数据访问和修改。默认的 MDS 缓存大小(另见 f61b72: )为 4GB。建议为 MDS 提供至少 8GB 的 RAM 以支持此缓存大小。MDS 缓存配置) is 4GB. It is recommended to provision at least 8GB of RAM for the MDS to support this cache size.

通常,为大型客户端集群(1000 个或更多)提供服务的 MDS 将至少使用 64GB 的缓存。具有更大缓存的 MDS 在最大已知社区集群中尚未得到充分探索;管理如此大的缓存可能会以意想不到的方式对性能产生负面影响,从而产生递减的回报。最好使用预期的负载进行分析,以确定是否值得配置更多 RAM。

在裸金属集群中,为 MDS 服务器过度配置硬件的最佳实践是。即使单个 MDS 守护进程无法充分利用硬件,以后可能希望在同一个节点上启动更多活跃的 MDS 守护进程,以充分利用可用的核心和内存。此外,随着集群上工作负载的明确,性能可能会随着同一节点上的多个活跃 MDS 而提高,而不是单个过载的 MDS。

最后,请注意 CephFS 是一个高度可用的文件系统,通过支持备用 MDS(另见 5fab05:)来实现快速故障转移。为了从部署备用服务器中真正获益,通常需要在集群中的至少两个节点上分布 MDS 守护进程。否则,单个节点上的硬件故障可能会导致文件系统不可用。术语) for rapid failover. To get a real benefit from deploying standbys, it is usually necessary to distribute MDS daemons across at least two nodes in the cluster. Otherwise, a hardware failure on a single node may result in the file system becoming unavailable.

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

添加 MDS

  1. 创建一个 mds 目录 edcfaa: 。该守护进程仅使用此目录来存储其密钥环。/var/lib/ceph/mds/ceph-${id}. The daemon only uses this directory to store its keyring.

  2. 如果使用 CephX:创建认证密钥 cbea26: 启动服务:2241d2: 集群的状态应该显示:c235bb: 可选地,配置 MDS 应加入的文件系统 9fdaa0: 移除 MDS

    $ 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. Start the service:

    $ sudo systemctl start ceph-mds@${id}
    
  4. The status of the cluster should show:

    mds: ${id}:1 {0=${id}=up:active} 2 up:standby
    
  5. Optionally, configure the file system the MDS should join (配置 MDS 文件系统亲和性):

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

移除 MDS

如果您希望在集群中移除一个元数据服务器,您可以使用以下方法。

  1. (可选:)创建一个新的替代元数据服务器。如果在 MDS 移除后没有替代 MDS 来接管,文件系统将无法对客户端可用。如果这不可取,请在拆毁您希望离线的元数据服务器之前考虑添加一个元数据服务器。

  2. 停止要移除的 MDS。

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

    MDS 将自动通知 Ceph 监控器它正在下线。这使得监控器能够如果存在的话,立即切换到可用的备用服务器。无需使用管理命令来执行此故障转移,例如通过使用 d42deb: 移除 a0adba: 目录上的 MDS。ceph mds fail mds.${id}.

  3. Remove the /var/lib/ceph/mds/ceph-${id} directory on the MDS.

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

Note

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

由 Ceph 基金会带给您

Ceph 文档是一个社区资源,由非盈利的 Ceph 基金会资助和托管Ceph Foundation. 如果您想支持这一点和我们的其他工作,请考虑加入现在加入.