第 6 章 Ceph MDS 故障排除


作为存储管理员,您可以使用 Ceph 元数据服务器(MDS)对最常见的问题进行故障排除。您可能会遇到的一些常见错误:

  • 需要新的 MDS 部署的 MDS 节点失败。
  • 需要重新部署 MDS 节点的问题。

6.1. 重新部署 Ceph MDS

在部署 Ceph 文件系统时,需要 Ceph 元数据服务器(MDS)守护进程。如果集群中的 MDS 节点失败,您可以通过删除 MDS 服务器并添加新的或现有服务器来重新部署 Ceph 元数据服务器。您可以使用命令行界面或 Ansible playbook 来添加或删除 MDS 服务器。

6.1.1. 先决条件

  • 一个正在运行的 Red Hat Ceph Storage 集群。

6.1.2. 使用 Ansible 删除 Ceph MDS

要使用 Ansible 移除 Ceph 元数据服务器(MDS),请使用 shrink-mds playbook。

注意

如果 MDS 被删除后,如果没有替换 MDS,文件系统将无法供客户端使用。如果不需要,请考虑在删除 MDS 前添加额外的 MDS 来离线。

先决条件

  • 至少一个 MDS 节点。
  • 由 Ansible 部署运行的 Red Hat Ceph Storage 集群。
  • 对 Ansible 管理节点的 rootsudo 访问权限。

流程

  1. 登录 Ansible 管理节点。
  2. 进入 /usr/share/ceph-ansible 目录:

    示例

    [ansible@admin ~]$ cd /usr/share/ceph-ansible

  3. 运行 Ansible shrink-mds.yml playbook,在出现提示时键入 yes 以确认缩小集群:

    语法

    ansible-playbook infrastructure-playbooks/shrink-mds.yml -e mds_to_kill=ID -i hosts

    使用您要删除的 MDS 节点的 ID 替换 ID。每次 playbook 运行时,您只能移除一个 Ceph MDS。

    示例

    [ansible @admin ceph-ansible]$ ansible-playbook infrastructure-playbooks/shrink-mds.yml -e mds_to_kill=node02 -i hosts

  4. root 身份或 sudo 访问权限,打开并编辑 /usr/share/ceph-ansible/hosts 清单文件,并在 [mdss] 部分下删除 MDS 节点:

    语法

    [mdss]
    MDS_NODE_NAME
    MDS_NODE_NAME

    示例

    [mdss]
    node01
    node03

    在本例中,node02 已从 [mdss] 列表中删除。

验证

  • 检查 MDS 守护进程的状态:

    语法

    ceph fs dump

    示例

    [ansible@admin ceph-ansible]$ ceph fs dump
    
    [mds.node01 {0:115304} state up:active seq 5 addr [v2:172.25.250.10:6800/695510951,v1:172.25.250.10:6801/695510951]]
    
    Standby daemons:
    [mds.node03 {-1:144437} state up:standby seq 2 addr [v2:172.25.250.11:6800/172950087,v1:172.25.250.11:6801/172950087]]

其它资源

6.1.3. 使用命令行界面删除 Ceph MDS

您可以使用命令行界面手动删除 Ceph 元数据服务器(MDS)。

注意

如果没有在删除当前 MDS 后进行替换 MDS,则文件系统将无法供客户端使用。如果不需要,请考虑在删除现有 MDS 前添加 MDS。

先决条件

  • 已安装 ceph-common 软件包。
  • 一个正在运行的 Red Hat Ceph Storage 集群。
  • 对 MDS 节点的 rootsudo 访问权限。

流程

  1. 登录到您要从中删除 MDS 守护进程的 Ceph MDS 节点。
  2. 停止 Ceph MDS 服务:

    语法

    sudo systemctl stop ceph-mds@HOST_NAME

    HOST_NAME 替换为守护进程运行的主机的短名称。

    示例

    [admin@node02 ~]$ sudo systemctl stop ceph-mds@node02

  3. 如果您没有将 MDS 重新部署到这个节点,请禁用 MDS 服务:

    语法

    sudo systemctl disable ceph-mds@HOST_NAME

    HOST_NAME 替换为要禁用守护进程的主机的短名称。

    示例

    [admin@node02 ~]$ sudo systemctl disable ceph-mds@node02

  4. 删除 MDS 节点上的 /var/lib/ceph/mds/ceph-MDS_ID 目录:

    语法

    sudo rm -fr /var/lib/ceph/mds/ceph-MDS_ID

    使用您要从中删除 MDS 守护进程的 MDS 节点 ID 替换 MDS_ID

    示例

    [admin@node02 ~]$ sudo rm -fr /var/lib/ceph/mds/ceph-node02

验证

  • 检查 MDS 守护进程的状态:

    语法

    ceph fs dump

    示例

    [ansible@admin ceph-ansible]$ ceph fs dump
    
    [mds.node01 {0:115304} state up:active seq 5 addr [v2:172.25.250.10:6800/695510951,v1:172.25.250.10:6801/695510951]]
    
    Standby daemons:
    [mds.node03 {-1:144437} state up:standby seq 2 addr [v2:172.25.250.11:6800/172950087,v1:172.25.250.11:6801/172950087]]

其它资源

6.1.4. 使用 Ansible 添加 Ceph MDS

使用 Ansible playbook 添加 Ceph 元数据服务器(MDS)。

先决条件

  • 由 Ansible 部署运行的 Red Hat Ceph Storage 集群。
  • 对 Ansible 管理节点的 rootsudo 访问权限。
  • 可以调配为 MDS 节点的新或现有服务器。

流程

  1. 登录 Ansible 管理节点
  2. 进入 /usr/share/ceph-ansible 目录:

    示例

    [ansible@admin ~]$ cd /usr/share/ceph-ansible

  3. root 身份或 sudo 访问权限,打开并编辑 /usr/share/ceph-ansible/hosts 清单文件,并在 [mdss] 部分添加 MDS 节点:

    语法

    [mdss]
    MDS_NODE_NAME
    NEW_MDS_NODE_NAME

    NEW_MDS_NODE_NAME 替换为您要安装 MDS 服务器的节点的主机名。

    另外,您可以通过在 [osds][mdss] 部分添加同一节点来将 MDS 守护进程与一个节点上的 OSD 守护进程合并。

    示例

    [mdss]
    node01
    node03

  4. ansible 用户身份,运行 Ansible playbook 以置备 MDS 节点:

    • 裸机部署:

      [ansible@admin ceph-ansible]$ ansible-playbook site.yml --limit mdss -i hosts
    • 容器部署:

      [ansible@admin ceph-ansible]$ ansible-playbook site-container.yml --limit mdss -i hosts

      在 Ansible playbook 运行完成后,新的 Ceph MDS 节点会出现在存储集群中。

验证

  • 检查 MDS 守护进程的状态:

    语法

    ceph fs dump

    示例

    [ansible@admin ceph-ansible]$ ceph fs dump
    
    [mds.node01 {0:115304} state up:active seq 5 addr [v2:172.25.250.10:6800/695510951,v1:172.25.250.10:6801/695510951]]
    
    Standby daemons:
    [mds.node03 {-1:144437} state up:standby seq 2 addr [v2:172.25.250.11:6800/172950087,v1:172.25.250.11:6801/172950087]]

  • 或者,您可以使用 ceph mds stat 命令检查 MDS 是否处于活跃状态:

    语法

    ceph mds stat

    示例

    [ansible@admin ceph-ansible]$ ceph mds stat
    cephfs:1 {0=node01=up:active} 1 up:standby

其它资源

6.1.5. 使用命令行界面添加 Ceph MDS

您可以使用命令行界面手动添加 Ceph 元数据服务器(MDS)。

先决条件

  • 已安装 ceph-common 软件包。
  • 一个正在运行的 Red Hat Ceph Storage 集群。
  • 对 MDS 节点的 rootsudo 访问权限。
  • 可以调配为 MDS 节点的新或现有服务器。

流程

  1. 通过登录到节点并创建 MDS 挂载点,添加新 MDS 节点:

    语法

    sudo mkdir /var/lib/ceph/mds/ceph-MDS_ID

    使用您要添加 MDS 守护进程的 MDS 节点 ID 替换 MDS_ID

    示例

    [admin@node03 ~]$ sudo mkdir /var/lib/ceph/mds/ceph-node03

  2. 如果是一个新的 MDS 节点,如果您使用 Cephx 身份验证,请创建身份验证密钥:

    语法

    sudo ceph auth get-or-create mds.MDS_ID mon 'profile mds' mgr 'profile mds' mds 'allow *' osd 'allow *' > /var/lib/ceph/mds/ceph-MDS_ID/keyring

    使用 MDS_ID 替换为 MDS 节点的 ID,以在其上部署 MDS 守护进程。

    示例

    [admin@node03 ~]$ sudo ceph auth get-or-create mds.node03 mon 'profile mds' mgr 'profile mds' mds 'allow *' osd 'allow *' > /var/lib/ceph/mds/ceph-node03/keyring

    注意

    默认启用 cephx 身份验证。有关 Cephx 身份验证 的更多信息,请参阅 Additional Resources 部分中的 Cephx 身份验证链接。

  3. 启动 MDS 守护进程:

    语法

    sudo systemctl start ceph-mds@HOST_NAME

    HOST_NAME 替换为要启动守护进程的主机的短名称。

    示例

    [admin@node03 ~]$ sudo systemctl start ceph-mds@node03

  4. 启用 MDS 服务:

    语法

    systemctl enable ceph-mds@HOST_NAME

    HOST_NAME 替换为要启用该服务的主机的短名称。

    示例

    [admin@node03 ~]$ sudo systemctl enable ceph-mds@node03

验证

  • 检查 MDS 守护进程的状态:

    语法

    ceph fs dump

    示例

    [admin@mon]$ ceph fs dump
    
    [mds.node01 {0:115304} state up:active seq 5 addr [v2:172.25.250.10:6800/695510951,v1:172.25.250.10:6801/695510951]]
    
    Standby daemons:
    [mds.node03 {-1:144437} state up:standby seq 2 addr [v2:172.25.250.11:6800/172950087,v1:172.25.250.11:6801/172950087]]

  • 或者,您可以使用 ceph mds stat 命令检查 MDS 是否处于活跃状态:

    语法

    ceph mds stat

    示例

    [ansible@admin ceph-ansible]$ ceph mds stat
    cephfs:1 {0=node01=up:active} 1 up:standby

其它资源

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.