第 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 管理节点的
root
或sudo
访问权限。
流程
- 登录 Ansible 管理节点。
进入
/usr/share/ceph-ansible
目录:示例
[ansible@admin ~]$ cd /usr/share/ceph-ansible
运行 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
以
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]]
其它资源
- 有关安装 Red Hat Ceph Storage 的更多信息,请参阅 Red Hat Ceph Storage 安装指南。
- 有关使用 Ansible 添加 MDS 的详细信息,请参阅 Red Hat Ceph Storage 故障排除指南中的使用 Ansible 添加 Ceph MDS 一节。
6.1.3. 使用命令行界面删除 Ceph MDS
您可以使用命令行界面手动删除 Ceph 元数据服务器(MDS)。
如果没有在删除当前 MDS 后进行替换 MDS,则文件系统将无法供客户端使用。如果不需要,请考虑在删除现有 MDS 前添加 MDS。
先决条件
-
已安装
ceph-common
软件包。 - 一个正在运行的 Red Hat Ceph Storage 集群。
-
对 MDS 节点的
root
或sudo
访问权限。
流程
- 登录到您要从中删除 MDS 守护进程的 Ceph MDS 节点。
停止 Ceph MDS 服务:
语法
sudo systemctl stop ceph-mds@HOST_NAME
将 HOST_NAME 替换为守护进程运行的主机的短名称。
示例
[admin@node02 ~]$ sudo systemctl stop ceph-mds@node02
如果您没有将 MDS 重新部署到这个节点,请禁用 MDS 服务:
语法
sudo systemctl disable ceph-mds@HOST_NAME
将 HOST_NAME 替换为要禁用守护进程的主机的短名称。
示例
[admin@node02 ~]$ sudo systemctl disable ceph-mds@node02
删除 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]]
其它资源
- 有关安装 Red Hat Ceph Storage 的更多信息,请参阅 Red Hat Ceph Storage 安装指南。
- 如需有关 使用命令行界面添加 MDS 的详细信息, 请参阅 Red Hat Ceph Storage 故障排除指南中的 使用命令行界面添加 Ceph MDS 部分。
6.1.4. 使用 Ansible 添加 Ceph MDS
使用 Ansible playbook 添加 Ceph 元数据服务器(MDS)。
先决条件
- 由 Ansible 部署运行的 Red Hat Ceph Storage 集群。
-
对 Ansible 管理节点的
root
或sudo
访问权限。 - 可以调配为 MDS 节点的新或现有服务器。
流程
- 登录 Ansible 管理节点
进入
/usr/share/ceph-ansible
目录:示例
[ansible@admin ~]$ cd /usr/share/ceph-ansible
以
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
以
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
其它资源
- 有关安装 Red Hat Ceph Storage 的更多信息,请参阅 Red Hat Ceph Storage 安装指南。
- 有关使用 Ansible 删除 MDS 的更多信息,请参阅 Red Hat Ceph Storage 故障排除指南中的使用 Ansible 删除 Ceph MDS 一节。
6.1.5. 使用命令行界面添加 Ceph MDS
您可以使用命令行界面手动添加 Ceph 元数据服务器(MDS)。
先决条件
-
已安装
ceph-common
软件包。 - 一个正在运行的 Red Hat Ceph Storage 集群。
-
对 MDS 节点的
root
或sudo
访问权限。 - 可以调配为 MDS 节点的新或现有服务器。
流程
通过登录到节点并创建 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
如果是一个新的 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 身份验证链接。
启动 MDS 守护进程:
语法
sudo systemctl start ceph-mds@HOST_NAME
将 HOST_NAME 替换为要启动守护进程的主机的短名称。
示例
[admin@node03 ~]$ sudo systemctl start ceph-mds@node03
启用 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 Ceph Storage 的更多信息,请参阅 Red Hat Ceph Storage 安装指南。
- 如需有关 Cephx 身份验证的更多信息,请参阅 Red Hat Ceph Storage Configuration Guide。
- 如需有关 使用命令行界面删除 MDS 的详细信息, 请参阅 Red Hat Ceph Storage 故障排除指南中的 删除 Ceph MDS 部分。