部署元数据服务器


每个CephFS文件系统至少需要一个MDS,集群维护者通常会根据需要使用其自动部署工具来启动所需的MDS服务器。推荐使用Rook和ansible(通过ceph-ansible剧本)进行此操作。为了更清晰,我们仍在此处使用systemd命令


MDS的硬件配置


MDS的当前版本是单线程的,大多数MDS活动都需要CPU,包括响应客户机请求。在最强的客户机负载下,MDS使用大约2到3个CPU内核,这是由于其他杂项维护线程协同工作
即便如此,仍建议为MDS服务器充分配备具有足够核心的高级CPU,为了更好地利用MDS中可用的CPU内核,正在进行开发。预计在将来的Ceph版本中,MDS服务器将通过利用更多内核来提高性能。

MDS性能的另一个方面是可用于缓存的RAM,MDS必须管理所有客户端和其他活动MDS之间的分布式协作元数据缓存。因此,必须为MDS提供足够的RAM,以实现更快的元数据访问和变异。默认的MDS缓存大小为4GB。建议为MDS提供至少8GB的RAM,以支持此缓存

通常,为大型客户端群集(1000个或更多)服务的MDS将使用至少64GB的缓存。在社区最大的已知集群中,没有很好地探索具有较大缓存的MDS。如此大的缓存管理会以令人惊讶的方式对性能造成负面影响,好对预期的工作量进行分析,以确定合适的RAM

在裸机集群中,最佳实践是为MDS服务器尽可能配置更好的硬件。即使单个MDS守护程序无法完全利用硬件,以后可能还是希望在同一节点上启动更多活动的MDS守护程序以充分利用可用的内核和内存。此外,通过集群上的工作负载可以很明显地看出,在同一节点上使用多个活动MDS可以提高性能,而不是为单个MDS过度配置

最后,请注意CephFS是一个高度可用的文件系统,它支持备用MDS,以实现快速故障转移。为了从部署备用数据库中获得真正的收益,通常必须在群集中的至少两个节点之间分布MDS守护程序。否则,单个节点上的硬件故障可能会导致文件系统不可用


添加MDS


1:创建一个mds数据目录 /var/lib/ceph/mds/ceph-${id},守护程序仅使用此目录来存储其密钥

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

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:开启服务

systemctl start ceph-mds@${id}

4:查看服务状态,正常状态下应该如下

mds: ${id}:1 {0=${id}=up:active} 2 up:standby


移除MDS


1:(可选)创建一个新的MDS将要被移除的MDS,如果在删除MDS之后没有替代MDS可以接管,则文件系统将对客户端不可用,如果不希望这样做,请在删除要脱机的元数据服务器之前考虑添加元数据服务器
2:停止MDS服务

systemctl stop ceph-mds@${id}

MDS将自动通知mon它已关闭,这使mon能够将故障瞬间切换到可用的备用数据库(如果存在)。无需使用管理命令来实现此故障转移,例如通过使用ceph mds fail mds.${id}
3:删除/var/lib/ceph/mds/ceph-${id}目录

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