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
目录:示例
cd /usr/share/ceph-ansible
[ansible@admin ~]$ cd /usr/share/ceph-ansible
Copy to Clipboard Copied! 作为
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! 将 NEW_MDS_NODE_NAME 替换为您要安装 MDS 服务器的节点的主机名。
或者,您可以通过在
[osds]
和[mdss]
部分下添加同一节点,将元数据服务器与 OSD 守护进程并置。示例
[mdss] node01 node03
[mdss] node01 node03
Copy to Clipboard Copied! 以
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! 容器部署:
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! 在 Ansible playbook 运行后,新的 Ceph MDS 节点将出现在存储集群中。
验证
检查 MDS 守护进程的状态:
语法
ceph fs dump
ceph fs dump
Copy to Clipboard Copied! 示例
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]]
Copy to Clipboard Copied! 另外,您可以使用
ceph mds stat
命令检查 MDS 是否处于 active 状态:语法
ceph mds stat
ceph mds stat
Copy to Clipboard Copied! 示例
ceph mds stat
[ansible@admin ceph-ansible]$ ceph mds stat cephfs:1 {0=node01=up:active} 1 up:standby
Copy to Clipboard Copied!
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
sudo mkdir /var/lib/ceph/mds/ceph-MDS_ID
Copy to Clipboard Copied! 将 MDS_ID 替换为您要向其添加 MDS 守护进程的 MDS 节点 ID。
示例
sudo mkdir /var/lib/ceph/mds/ceph-node03
[admin@node03 ~]$ sudo mkdir /var/lib/ceph/mds/ceph-node03
Copy to Clipboard Copied! 如果这是新的 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! 将 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! 注意Cephx 身份验证被默认启用。有关 Cephx 身份验证的更多信息,请参阅 Additional Resources 部分中的 Cephx 身份验证链接。
启动 MDS 守护进程:
语法
sudo systemctl start ceph-mds@HOST_NAME
sudo systemctl start ceph-mds@HOST_NAME
Copy to Clipboard Copied! 将 HOST_NAME 替换为要启动守护进程的主机的短名称。
示例
sudo systemctl start ceph-mds@node03
[admin@node03 ~]$ sudo systemctl start ceph-mds@node03
Copy to Clipboard Copied! 启用 MDS 服务:
语法
systemctl enable ceph-mds@HOST_NAME
systemctl enable ceph-mds@HOST_NAME
Copy to Clipboard Copied! 将 HOST_NAME 替换为要启用该服务的主机的短名称。
示例
sudo systemctl enable ceph-mds@node03
[admin@node03 ~]$ sudo systemctl enable ceph-mds@node03
Copy to Clipboard Copied!
验证
检查 MDS 守护进程的状态:
语法
ceph fs dump
ceph fs dump
Copy to Clipboard Copied! 示例
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]]
Copy to Clipboard Copied! 另外,您可以使用
ceph mds stat
命令检查 MDS 是否处于 active 状态:语法
ceph mds stat
ceph mds stat
Copy to Clipboard Copied! 示例
ceph mds stat
[ansible@admin ceph-ansible]$ ceph mds stat cephfs:1 {0=node01=up:active} 1 up:standby
Copy to Clipboard Copied!
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
目录:示例
cd /usr/share/ceph-ansible
[ansible@admin ~]$ cd /usr/share/ceph-ansible
Copy to Clipboard Copied! 运行 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! 使用您要删除的 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! 作为
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! 示例
[mdss] node01 node03
[mdss] node01 node03
Copy to Clipboard Copied! 在本例中,
node02
已从[mdss]
列表中删除。
验证
检查 MDS 守护进程的状态:
语法
ceph fs dump
ceph fs dump
Copy to Clipboard Copied! 示例
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]]
Copy to Clipboard Copied!
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
sudo systemctl stop ceph-mds@HOST_NAME
Copy to Clipboard Copied! 将 HOST_NAME 替换为守护进程运行的主机的短名称。
示例
sudo systemctl stop ceph-mds@node02
[admin@node02 ~]$ sudo systemctl stop ceph-mds@node02
Copy to Clipboard Copied! 如果没有将 MDS 重新部署到这个节点,则禁用 MDS 服务:
语法
sudo systemctl disable ceph-mds@HOST_NAME
sudo systemctl disable ceph-mds@HOST_NAME
Copy to Clipboard Copied! 将 HOST_NAME 替换为要禁用该守护进程的主机的短名称。
示例
sudo systemctl disable ceph-mds@node02
[admin@node02 ~]$ sudo systemctl disable ceph-mds@node02
Copy to Clipboard Copied! 删除 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! 使用您要从中删除 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!
验证
检查 MDS 守护进程的状态:
语法
ceph fs dump
ceph fs dump
Copy to Clipboard Copied! 示例
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]]
Copy to Clipboard Copied!