1.4. Ceph MDS
每个元数据服务器 (MDS) 节点运行 MDS 守护进程 (ceph-mds),后者管理与 Ceph 文件系统 (CephFS) 中存储的文件相关的元数据。MDS 提供兼容 POSIX 的共享文件系统元数据管理,包括所有权、时间戳和模式。MDS 使用 RADOS(可靠的自主分布式对象存储)来存储元数据。
MDS 允许 CephFS 与 Ceph 对象存储交互,将索引节点映射到对象,以及 Ceph 在树中存储数据的位置。访问 CephFS 文件系统的客户端首先向 MDS 发出请求,它提供了从正确 OSD 获取文件内容所需的信息。
1.4.1. 使用 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]
部分下添加同一节点,将元数据服务器与 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 是否处于 active 状态:语法
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 部分。
1.4.2. 使用命令行界面添加 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_ID 替换为您要向其添加 MDS 守护进程的 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 是否处于 active 状态:语法
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 配置指南。
- 如需有关使用命令行界面删除 MDS 的详情,请参阅 Red Hat Ceph Storage 故障排除指南中的使用命令行界面删除 Ceph MDS。
1.4.3. 使用 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 部分。
1.4.4. 使用命令行界面删除 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。