Ceph FS 命令详解
Ceph FS(Ceph File System)是 Ceph 提供的兼容 POSIX 的分布式文件系统。它使用 Ceph 的对象存储层(RADOS)来存储数据,并通过元数据服务器(MDS)来管理文件系统的元数据。Ceph FS 支持标准的文件系统操作,如创建、删除、读取和写入文件和目录。
Ceph FS 基础命令
1. 文件系统管理
# 列出所有文件系统
ceph fs ls
# 获取文件系统详细信息
ceph fs get <fs_name>
# 创建文件系统
ceph fs volume create <fs_name>
# 删除文件系统,不一定能删除,有安全限制
ceph fs volume rm <fs_name> --yes-i-really-mean-it
# 查看文件系统状态
ceph fs status <fs_name>
2. MDS 管理
# 查看 MDS 状态
ceph mds stat
# 查看 MDS 映射
ceph mds dump
# 设置最大活跃 MDS 数量
ceph fs set <fs_name> max_mds <number>
# 设置备用 MDS 数量
ceph fs set <fs_name> standby_count_wanted <number>
Ceph FS 客户端操作
1. 内核客户端挂载
# 创建挂载点
sudo mkdir /mnt/cephfs
# 挂载 Ceph FS(使用内核驱动)
sudo mount -t ceph <mon_ip>:6789:/ /mnt/cephfs \
-o name=<user>,secret=<key>
# 挂载特定文件系统路径
sudo mount -t ceph <mon_ip>:6789:/ /mnt/cephfs \
-o name=admin,secretfile=/etc/ceph/admin.secret,mds_namespace=myfs
mount -t ceph 192.168.3.41:6789,192.168.4.33:6789,192.168.4.34:6789:/ /mnt/cephfs \
-o name=admin,secretfile=/etc/ceph/admin.secret
# 卸载文件系统
sudo umount /mnt/cephfs
2. FUSE 客户端挂载
# 安装 ceph-fuse
sudo apt-get install ceph-fuse # Ubuntu/Debian
sudo yum install ceph-fuse # CentOS/RHEL
# 创建挂载点
sudo mkdir /mnt/cephfs
# 使用 ceph-fuse 挂载
ceph-fuse -m <mon_ip>:6789 /mnt/cephfs
# 卸载 FUSE 文件系统
sudo fusermount -u /mnt/cephfs
Ceph FS 子目录配额管理
1. 配额设置
# 为目录设置最大字节数
ceph fs subvolume resize <fs_name> <subvol_name> <size>
# 为目录设置最大文件数
setfattr -n ceph.quota.max_files -v <number> <directory>
# 查看目录配额
getfattr -n ceph.quota.max_bytes <directory>
getfattr -n ceph.quota.max_files <directory>
2. 配额信息查询
# 查看目录使用情况
du -sh <directory>
# 使用 cephfs-top 查看实时使用情况
cephfs-top
Ceph FS 快照管理
1. 创建和管理快照
# 创建快照(需要先启用快照功能)
mkdir /.snapshots/<snapshot_name>
# 列出快照
ls /.snapshots/
# 删除快照
rmdir /.snapshots/<snapshot_name>
# 访问快照数据
ls /<fs_mount_point>/.snapshots/<snapshot_name>/
2. 启用快照功能
# 启用文件系统快照功能
ceph fs set <fs_name> allow_new_snaps true
Ceph FS 子卷管理
1. 子卷操作
# 创建子卷
ceph fs subvolume create <fs_name> <subvol_name>
# 列出子卷
ceph fs subvolume ls <fs_name>
# 删除子卷
ceph fs subvolume rm <fs_name> <subvol_name>
# 获取子卷信息
ceph fs subvolume getpath <fs_name> <subvol_name>
2. 子卷组管理
# 创建子卷组
ceph fs subvolumegroup create <fs_name> <group_name>
# 列出子卷组
ceph fs subvolumegroup ls <fs_name>
# 删除子卷组
ceph fs subvolumegroup rm <fs_name> <group_name>
Ceph FS 性能调优
1. 客户端调优
# 设置客户端缓存大小
mount -t ceph <mon_ip>:6789:/ /mnt/cephfs \
-o name=admin,secretfile=/etc/ceph/admin.secret,rasize=262144
# 调整最大读写大小
mount -t ceph <mon_ip>:6789:/ /mnt/cephfs \
-o name=admin,secretfile=/etc/ceph/admin.secret,rsize=16777216,wsize=16777216
2. MDS 调优
# 设置 MDS 缓存内存限制
ceph config set mds mds_cache_memory_limit <bytes>
# 设置 MDS 日志最大段数
ceph config set mds mds_log_max_segments <number>
# 启用 MDS 负载均衡
ceph config set mds mds_balancer simple
常用 Ceph FS 管理场景
场景 1:创建和挂载文件系统
创建一个新的 Ceph FS 并挂载使用:
# 1. 创建文件系统
ceph fs volume create myfs
# 2. 查看文件系统状态
ceph fs status myfs
# 3. 获取客户端密钥
ceph auth get-key client.admin > /etc/ceph/admin.secret
# 4. 创建挂载点
sudo mkdir /mnt/cephfs
# 5. 挂载文件系统
sudo mount -t ceph <mon_ip>:6789:/ /mnt/cephfs \
-o name=admin,secretfile=/etc/ceph/admin.secret
# 6. 验证挂载
df -h /mnt/cephfs
场景 2:配置多活跃 MDS
为提高性能配置多个活跃 MDS:
# 1. 查看当前 MDS 状态
ceph mds stat
# 2. 设置最大活跃 MDS 数量
ceph fs set myfs max_mds 2
# 3. 设置备用 MDS 数量
ceph fs set myfs standby_count_wanted 2
# 4. 验证配置
ceph mds stat
场景 3:设置目录配额
为特定目录设置存储配额:
# 1. 创建测试目录
mkdir /mnt/cephfs/testdir
# 2. 设置最大字节数配额(例如 1GB)
setfattr -n ceph.quota.max_bytes -v 1073741824 /mnt/cephfs/testdir
# 3. 设置最大文件数配额(例如 1000 个文件)
setfattr -n ceph.quota.max_files -v 1000 /mnt/cephfs/testdir
# 4. 验证配额设置
getfattr -n ceph.quota.max_bytes /mnt/cephfs/testdir
getfattr -n ceph.quota.max_files /mnt/cephfs/testdir
场景 4:创建和使用快照
为重要数据创建快照:
# 1. 启用快照功能
ceph fs set myfs allow_new_snaps true
# 2. 创建快照目录
mkdir /mnt/cephfs/.snapshots
# 3. 创建快照
mkdir /mnt/cephfs/.snapshots/snap_$(date +%Y%m%d_%H%M%S)
# 4. 访问快照数据
ls /mnt/cephfs/.snapshots/snap_*/
Ceph FS 相关配置参数
| 参数名 | 含义 | 默认值 | 建议值 |
|---|---|---|---|
| mds_cache_memory_limit | MDS 缓存内存限制 | 4GB | 根据节点内存调整 |
| mds_balancer | 负载均衡器 | none | simple |
| client_mount_timeout | 客户端挂载超时 | 30s | 30s |
| client_caps_release_delay | 客户端能力释放延迟 | 5min | 5min |
| mds_log_max_segments | MDS 日志最大段数 | 30 | 30-100 |
Ceph FS 最佳实践
1. 部署建议
- MDS 高可用:部署多个 MDS 实例以确保高可用性
- 网络配置:确保 MDS 和客户端之间有良好的网络连接
- 存储池规划:合理规划元数据和数据存储池
2. 性能优化
- 客户端调优:根据工作负载调整客户端参数
- MDS 调优:合理配置 MDS 缓存和日志参数
- 负载均衡:启用并配置 MDS 负载均衡器
3. 数据保护
- 快照策略:制定定期快照策略
- 备份机制:建立定期备份机制
- 配额管理:合理使用配额功能控制存储使用
注意事项
- 依赖关系:Ceph FS 依赖于 MDS 和 OSD 集群
- 内核支持:使用内核客户端需要支持 Ceph 的内核版本
- 权限控制:合理配置客户端访问权限
- 配额限制:配额是软限制,不是硬限制
总结
Ceph FS 提供了完整的 POSIX 兼容文件系统功能,适用于各种需要共享文件存储的场景。通过合理配置和管理 Ceph FS,可以为用户提供高性能、高可用的分布式文件系统服务。在实际使用中,应根据具体需求选择合适的配置参数和管理策略。
评论区