第 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
目录:示例
cd /usr/share/ceph-ansible
[ansible@admin ~]$ cd /usr/share/ceph-ansible
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行 Ansible
shrink-mds.yml
playbook,在出现提示时键入yes
以确认缩小集群:语法
ansible-playbook infrastructure-playbooks/shrink-mds.yml -e mds_to_kill=ID -i hosts
ansible-playbook infrastructure-playbooks/shrink-mds.yml -e mds_to_kill=ID -i hosts
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用您要删除的 MDS 节点的 ID 替换 ID。每次 playbook 运行时,您只能移除一个 Ceph MDS。
示例
ansible-playbook infrastructure-playbooks/shrink-mds.yml -e mds_to_kill=node02 -i hosts
[ansible @admin ceph-ansible]$ ansible-playbook infrastructure-playbooks/shrink-mds.yml -e mds_to_kill=node02 -i hosts
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以
root
身份或sudo
访问权限,打开并编辑/usr/share/ceph-ansible/hosts
清单文件,并在[mdss]
部分下删除 MDS 节点:语法
[mdss] MDS_NODE_NAME MDS_NODE_NAME
[mdss] MDS_NODE_NAME MDS_NODE_NAME
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
[mdss] node01 node03
[mdss] node01 node03
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在本例中,
node02
已从[mdss]
列表中删除。
验证
检查 MDS 守护进程的状态:
语法
ceph fs dump
ceph fs dump
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
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
sudo systemctl stop ceph-mds@HOST_NAME
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将 HOST_NAME 替换为守护进程运行的主机的短名称。
示例
sudo systemctl stop ceph-mds@node02
[admin@node02 ~]$ sudo systemctl stop ceph-mds@node02
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果您没有将 MDS 重新部署到这个节点,请禁用 MDS 服务:
语法
sudo systemctl disable ceph-mds@HOST_NAME
sudo systemctl disable ceph-mds@HOST_NAME
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将 HOST_NAME 替换为要禁用守护进程的主机的短名称。
示例
sudo systemctl disable ceph-mds@node02
[admin@node02 ~]$ sudo systemctl disable ceph-mds@node02
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 删除 MDS 节点上的
/var/lib/ceph/mds/ceph-MDS_ID
目录:语法
sudo rm -fr /var/lib/ceph/mds/ceph-MDS_ID
sudo rm -fr /var/lib/ceph/mds/ceph-MDS_ID
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用您要从中删除 MDS 守护进程的 MDS 节点 ID 替换 MDS_ID。
示例
sudo rm -fr /var/lib/ceph/mds/ceph-node02
[admin@node02 ~]$ sudo rm -fr /var/lib/ceph/mds/ceph-node02
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
检查 MDS 守护进程的状态:
语法
ceph fs dump
ceph fs dump
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
6.1.4. 使用 Ansible 添加 Ceph MDS 复制链接链接已复制到粘贴板!
使用 Ansible playbook 添加 Ceph 元数据服务器(MDS)。
先决条件
- 由 Ansible 部署运行的 Red Hat Ceph Storage 集群。
-
对 Ansible 管理节点的
root
或sudo
访问权限。 - 可以调配为 MDS 节点的新或现有服务器。
流程
- 登录 Ansible 管理节点
进入
/usr/share/ceph-ansible
目录:示例
cd /usr/share/ceph-ansible
[ansible@admin ~]$ cd /usr/share/ceph-ansible
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以
root
身份或sudo
访问权限,打开并编辑/usr/share/ceph-ansible/hosts
清单文件,并在[mdss]
部分添加 MDS 节点:语法
[mdss] MDS_NODE_NAME NEW_MDS_NODE_NAME
[mdss] MDS_NODE_NAME NEW_MDS_NODE_NAME
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将 NEW_MDS_NODE_NAME 替换为您要安装 MDS 服务器的节点的主机名。
另外,您可以通过在
[osds]
和[mdss]
部分添加同一节点来将 MDS 守护进程与一个节点上的 OSD 守护进程合并。示例
[mdss] node01 node03
[mdss] node01 node03
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以
ansible
用户身份,运行 Ansible playbook 以置备 MDS 节点:裸机部署:
ansible-playbook site.yml --limit mdss -i hosts
[ansible@admin ceph-ansible]$ ansible-playbook site.yml --limit mdss -i hosts
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 容器部署:
ansible-playbook site-container.yml --limit mdss -i hosts
[ansible@admin ceph-ansible]$ ansible-playbook site-container.yml --limit mdss -i hosts
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在 Ansible playbook 运行完成后,新的 Ceph MDS 节点会出现在存储集群中。
验证
检查 MDS 守护进程的状态:
语法
ceph fs dump
ceph fs dump
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 或者,您可以使用
ceph mds stat
命令检查 MDS 是否处于活跃状态:语法
ceph mds stat
ceph mds stat
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
ceph mds stat
[ansible@admin ceph-ansible]$ ceph mds stat cephfs:1 {0=node01=up:active} 1 up:standby
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
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
sudo mkdir /var/lib/ceph/mds/ceph-MDS_ID
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用您要添加 MDS 守护进程的 MDS 节点 ID 替换 MDS_ID。
示例
sudo mkdir /var/lib/ceph/mds/ceph-node03
[admin@node03 ~]$ sudo mkdir /var/lib/ceph/mds/ceph-node03
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果是一个新的 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
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
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用 MDS_ID 替换为 MDS 节点的 ID,以在其上部署 MDS 守护进程。
示例
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
[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
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意默认启用 cephx 身份验证。有关 Cephx 身份验证 的更多信息,请参阅 Additional Resources 部分中的 Cephx 身份验证链接。
启动 MDS 守护进程:
语法
sudo systemctl start ceph-mds@HOST_NAME
sudo systemctl start ceph-mds@HOST_NAME
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将 HOST_NAME 替换为要启动守护进程的主机的短名称。
示例
sudo systemctl start ceph-mds@node03
[admin@node03 ~]$ sudo systemctl start ceph-mds@node03
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 启用 MDS 服务:
语法
systemctl enable ceph-mds@HOST_NAME
systemctl enable ceph-mds@HOST_NAME
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将 HOST_NAME 替换为要启用该服务的主机的短名称。
示例
sudo systemctl enable ceph-mds@node03
[admin@node03 ~]$ sudo systemctl enable ceph-mds@node03
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
检查 MDS 守护进程的状态:
语法
ceph fs dump
ceph fs dump
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 或者,您可以使用
ceph mds stat
命令检查 MDS 是否处于活跃状态:语法
ceph mds stat
ceph mds stat
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
ceph mds stat
[ansible@admin ceph-ansible]$ ceph mds stat cephfs:1 {0=node01=up:active} 1 up:standby
Copy to Clipboard Copied! Toggle word wrap Toggle overflow