CephFS 是什么
CephFS 是建立在 RADOS 之上的 POSIX 兼容共享文件系统:数据存在数据池,目录与文件元数据由 MDS 集群管理。因此它既能像普通文件系统那样被读取写入,又允许多台主机同时挂载同一目录并看到一致视图,是共享目录、归档与容器共享存储的常用方案。
基本信息
| 适用平台 | Ceph 集群 + Linux 客户端(内核或 ceph-fuse) |
|---|---|
| 元数据服务 | MDS,可多活分担目录负载 |
| 挂载方式 | mount -t ceph 或 ceph-fuse |
| 权限要求 | 具备 mds 与 osd 相关 caps 的 CephX 身份 |
典型使用场景
- 多台应用服务器共享同一目录,替代 NFS 并省掉单点
- 容器共享存储:多个 Pod 挂载同一路径做数据交换
- 大数据与训练任务:多个计算节点读取同一份数据集
- 需要快照与配额的文件目录:按目录打快照、按目录限容
创建并使用
创建并使用
ceph fs volume create cephfs # 一键建池与文件系统(以官方文档为准)
mount -t ceph 10.10.0.1:/ /mnt/cephfs -o name=client.app1,secret=XXXX # 内核客户端挂载
ceph-fuse -n client.app1 /mnt/cephfs # 内核不满足时的用户态挂载
ceph fs status cephfs # 查看 MDS 状态与客户端数量
ceph fs ls # 列出所有文件系统关键状态读法
| 字段 | 含义 | 异常表现 |
|---|---|---|
| mds 状态 | active 为服务中,standby 为待命 | 长期没有 standby,主 MDS 挂了会中断 |
| clients | 当前挂载的客户端数量 | 数量异常增长说明有客户端泄漏 |
| caps 压力 | 元数据操作集中在某个 MDS | 单 MDS 打满会拖慢目录遍历 |
多客户端共享时,元数据热点往往比数据吞吐更先成为瓶颈:海量小文件目录建议开启目录分片与多活 MDS 分担。
多个客户端同时写同一个文件时,性能取决于锁竞争;CephFS 保证一致性,但不保证高并发追加写入的吞吐,需要按业务改造写入模型。
共享目录运维要点
- 客户端用统一身份还是分身份挂载要提前设计,便于按客户端单独回收权限
- 挂载参数里明确缓存与超时行为,避免业务看到的目录状态滞后
- 给共享目录设配额,防止单个业务把容量吃满
- 定期检查并清理僵尸客户端会话,长期挂死的会话会占用元数据资源
- 调整 MDS 数量后复核目录分布,确认压力是否真的被分摊
客户端异常掉线时其持有的能力会延迟回收,表现为个别文件短时间内无法写入;排查先看 MDS 会话列表而不是先怀疑池。