Ceph MDS 命令详解
MDS(Metadata Server)是 CephFS(Ceph File System)的元数据服务器,负责存储文件系统的元数据,如目录结构、文件属性等。MDS 使得 Ceph 能够提供 POSIX 兼容的文件系统接口。
MDS 基础命令
1. 查看 MDS 状态
# 查看 MDS 状态概览
ceph mds stat
# 查看 MDS 详细信息
ceph mds metadata
2. MDS 管理命令
# 启动 MDS 服务
ceph mds start <mds_name>
# 停止 MDS 服务
ceph mds stop <mds_name>
# 设置 MDS 集群状态
ceph mds set_state <gid> <state>
MDS 部署和管理
1. 使用 orch 命令管理 MDS
在 cephadm 环境中,使用 orch 命令来管理 MDS:
# 查看 MDS 服务状态
ceph orch ls --service-type mds
# 查看 MDS daemon 状态(相当统一查看进程)
ceph orch ps --daemon-type mds
# 部署 MDS 服务
ceph orch apply mds mds_name --placement="<node1> <node2>"
ceph orch apply mds zjl_cephfs --placement="count:2"
# 手动添加 MDS 实例
ceph orch daemon add mds mds_name <node>
ceph orch daemon add mds zjl_cephfs ceph1
# 移除 MDS 实例
ceph orch daemon rm <mds_daemon_name>
ceph orch daemon rm mds.zjl_cephfs.ceph3.hvihou
# 删除 MDS 服务
ceph orch rm mds.mds_name
ceph orch rm mds.zjl_cephfs
2. 文件系统和 MDS 管理
# 创建文件系统(自动创建 MDS)
ceph fs volume create <fs_name>
ceph fs volume create test
# 此命令会创建
# 1、文件系统以及pool:name: test, metadata pool: cephfs.test.meta, data pools: [cephfs.test.data ]
# 2、mds:mds.test.ceph3.fqxnaa ceph3 running (3m) 3m ago 3m 15.9M - 17.2.8 259b35566514 e5314ffbd008
# mds.test.ceph4.droahw ceph4 running (3m) 3m ago 3m 13.3M - 17.2.8 259b35566514 841c45175775
# 删除文件系统
# ==============================
# 1. 停用文件系统(强制使所有 MDS 失效)
# ==============================
ceph fs fail fs_name
# ==============================
# 2. 删除 CephFS 文件系统元数据
# ==============================
ceph fs rm fs_name --yes-i-really-mean-it
# ==============================
# 3. 删除由 cephadm 管理的 MDS 服务
# (服务名通常为 mds.fs_name)
# ==============================
ceph orch rm mds.fs_name
# ==============================
# 4. (可选)删除关联的存储池(需先启用 pool 删除权限)
# ==============================
# 4.1 启用 pool 删除(高危操作,仅临时开启)
ceph config set mon mon_allow_pool_delete true
# 4.2 删除数据池和元数据池(名称需根据实际情况调整)
# 通常默认命名规则为:fs_name_data / fs_name_meta 注意要写两遍pool的名字
ceph osd pool rm fs_name_data fs_name_data --yes-i-really-really-mean-it
ceph osd pool rm fs_name_meta fs_name_meta --yes-i-really-really-mean-it
# 4.3 禁用 pool 删除(安全加固,强烈建议执行)
ceph config set mon mon_allow_pool_delete false
# 查看所有文件系统
ceph fs ls
# 获取文件系统详细信息
ceph fs get <fs_name>
常用 MDS 管理场景
场景 1:创建 CephFS 文件系统
创建一个新的 CephFS 文件系统:
# 1. 创建文件系统(会自动创建相关的存储池和 MDS)
ceph fs volume create myfs
# 2. 查看文件系统状态
ceph fs status myfs
# 3. 查看 MDS 状态
ceph mds stat
场景 2:扩展 MDS 集群
为提高文件系统性能,可以部署多个 MDS 实例:
# 1. 查看当前 MDS 配置
ceph fs get myfs
# 2. 增加 MDS 实例数量
ceph orch apply mds myfs --placement="3"
# 3. 验证 MDS 状态
ceph mds stat
场景 3:配置 MDS 故障转移
配置 MDS 高可用性:
# 1. 设置允许的活跃 MDS 数量
ceph fs set myfs max_mds 2
# 2. 设置 standby MDS 数量
ceph fs set myfs standby_count_wanted 2
# 3. 验证配置
ceph fs status myfs
场景 4:故障 MDS 恢复
当 MDS 发生故障时,进行恢复操作:
# 1. 查看 MDS 状态
ceph mds stat
# 2. 如果 MDS 未自动恢复,重启 MDS 服务
ceph orch daemon restart <mds_daemon_name>
# 3. 验证恢复状态
ceph mds stat
MDS 最佳实践
1. 部署建议
- 数量:根据文件系统负载部署适当数量的 MDS
- 分布:将 MDS 分布在不同的物理节点上
- 资源:为 MDS 分配足够的内存和 CPU 资源
2. 性能优化
- 缓存配置:根据工作负载调整 MDS 缓存大小
- 负载均衡:启用并配置 MDS 负载均衡器
- 文件大小:合理设置最大文件大小限制
3. 监控建议
- 健康检查:定期检查 MDS 健康状态
- 性能监控:监控 MDS 性能指标
- 日志分析:定期分析 MDS 日志
注意事项
- 依赖关系:MDS 依赖于底层的 OSD 集群
- 存储池:创建文件系统时会自动创建元数据和数据存储池
- 客户端连接:确保客户端能够访问 MDS 和 OSD
- 权限控制:合理配置文件系统访问权限
总结
MDS 是 CephFS 的核心组件,负责管理文件系统的元数据。通过合理配置和管理 MDS,可以为用户提供高性能、高可用的分布式文件系统服务。在实际运维中,应密切关注 MDS 的状态和性能,及时处理可能出现的问题。
评论区