块存储(RBD)
核心概念
- RADOS 块设备提供虚拟块设备,以镜像形式存储在池中,支持精简配置、快照、克隆
- 数据默认按 4 MiB 切分为对象,对象命名 rbd_data.<image-id>.<object-seq>
- I/O 流程:librbd → pool → rbd image → object → PG → CRUSH 映射到 OSD → 主 OSD 写入副本
常用命令
| rbd create | 创建块设备镜像 |
| rbd ls | 列出池中镜像 |
| rbd info | 查看镜像详细信息 |
| rbd map/unmap | 映射/取消映射为本地块设备 |
| rbd showmapped | 查看已映射设备 |
| rbd resize | 调整镜像大小 |
| rbd rm | 删除镜像 |
| rbd trash mv/ls/restore/rm | 垃圾箱管理 |
镜像功能(Features)
- layering、striping、exclusive-lock、object-map、fast-diff、deep-flatten、journaling、data-pool
- 默认启用:layering, exclusive-lock, object-map, fast-diff, deep-flatten
访问方式
- KRBD(内核模块):rbd map 映射为 /dev/rbdX,可格式化挂载;持久化需配置 /etc/ceph/rbdmap 和 /etc/fstab,启用 rbdmap.service
- librbd:用户空间库,供 QEMU/KVM、OpenStack 等使用,支持 COW/COR
缓存
- 位于客户端内存(librbd),模式:writearound(默认)、writeback、writethrough
- 关键参数:rbd_cache、rbd_cache_size、rbd_cache_max_dirty 等
快照
- 创建:rbd snap create <pool>/<td>@<snap>
- 列出:rbd snap ls
- 回滚:rbd snap rollback(需先卸载映射)
- 删除:rbd snap rm 或 rbd snap purge
- 存在快照时无法删除镜像,快照为只读
克隆
- 基于受保护的快照创建可写克隆
- 步骤:创建快照 → rbd snap protect → rbd clone
- COW(写时复制)默认支持;COR(读时复制)需启用 rbd_clone_copy_on_read
- 扁平化:rbd flatten 将克隆转为独立镜像
导入导出
- rbd export / rbd import:完整镜像导入导出
- rbd export-diff / rbd import-diff:增量导入导出(基于快照)
- rbd diff:比较两个时间点之间的差异块
镜像(Mirroring)
- 用于两个集群间异步复制,支持单向(主动-被动)或双向(主动-主动)
- 模式:池模式(自动镜像池内所有镜像)或镜像模式(选择性启用)
- 基于日志或基于快照实现
- 关键命令:rbd mirror pool enable/disable,rbd mirror pool peer bootstrap create/import
对象存储(RGW)
基础概念
- 对象由 Key(对象名)、Metadata(元数据)、Data(数据内容)组成
- 桶/容器为扁平命名空间,无目录树结构
- 访问协议:Amazon S3 和 OpenStack Swift(兼容大部分 API)
RADOS 网关架构
- 守护进程:radosgw(基于 Beast HTTP 库)
- 域(realm)→ 区域组(zonegroup)→ 区域(zone)→ 期间(period)跟踪配置版本
- 默认池:.rgw.root、.default.rgw.control、.default.rgw.meta、.default.rgw.log、.default.rgw.buckets.index、.default.rgw.buckets.data
部署
- 创建 realm/zonegroup/zone:radosgw-admin realm create、zonegroup create、zone create
- 部署网关服务:ceph orch apply rgw <name> –realm=<name> –zone=<name> –port=<port>
- 支持 YAML 服务规范文件(placement、count、rgw_frontend_port)
- 删除服务:ceph orch rm rgw.<id>(不删除池中数据)
用户管理
- 创建用户:radosgw-admin user create –uid=<id> –display-name=<name> [–access-key –secret]
- 查看/列表:radosgw-admin user info / user list
- 密钥管理:radosgw-admin key create/rm
- 启用/禁用用户:radosgw-admin user enable/suspend
- 子用户(用于 Swift):radosgw-admin subuser create
S3 接口访问
- 客户端:awscli(pip 安装)
- 配置:aws configure 设置 access_key/secret_key
- 常用操作:aws s3 mb(创建桶)、cp(上传/下载)、rm、ls、rb(删除桶)
- 匿名访问:wget http://<rgw-host>:<port>/<bucket>/<object>
Swift 接口访问
- 客户端:python-swiftclient(pip 安装)
- 环境变量:ST_AUTH、ST_USER、ST_KEY(v1.0)或 OS_*(v2.0)
- 常用命令:swift post(创建容器)、upload、download、list、delete
配额管理
- 用户配额:radosgw-admin quota set –quota-scope=user –uid=<id> –max-objects=<n> –max-size=<bytes>
- 桶配额:–quota-scope=bucket –bucket=<name>
- 全局配额:radosgw-admin global quota set –quota-scope=user/bucket
- 启用/禁用:radosgw-admin quota enable/disable
多站点对象网关
- 用于跨集群主动/主动复制,灾难恢复
- 元数据操作由主区域管理,数据操作为增量同步
- 配置步骤:
- 主集群创建 realm、zonegroup、zone,创建系统用户并绑定
- 备集群拉取 realm 配置:radosgw-admin realm pull
- 备集群创建非 master zone,部署 RGW
- 验证同步:radosgw-admin sync status
- 故障转移:提升次要区域为主区域 radosgw-admin zone modify –master
文件系统(CephFS)
概述
- POSIX 兼容的分布式文件系统,基于 librados
- MDS(元数据服务器)管理目录层次结构、文件元数据、客户端缓存一致性
- 运行模式:活动 MDS + 备用 MDS(高可用)
- 支持多文件系统(需多个 MDS)
部署
- 手动部署:
- 创建数据池和元数据池(至少各一个)
- ceph fs new <fs_name> <metadata_pool> <data_pool>
- ceph orch apply mds <fs_name> –placement="<hosts>"
- 卷部署(简化):ceph fs volume create <fs_name> –placement="…"
挂载
- Kernel 挂载:
- 命令:mount.ceph <mon_ip>:/ /mnt/cephfs -o name=<client_id>,fs=<fs_name>
- 支持子目录挂载:mount.ceph <mon_ip>:/subdir …
- 持久化:/etc/fstab 添加条目,选项 _netdev
- FUSE 挂载:
- 安装 ceph-fuse
- 命令:ceph-fuse -n client.<id> -r /subdir /mnt/cephfs
- 支持配额和 ACL(需配置 user_allow_other)
用户授权
- ceph fs authorize <fs_name> client.<id> <path> <perms>
- 权限:r(读)、w(写)、p(布局/配额)、s(快照)
- 示例:ceph fs authorize cephfs1 client.myuser / rw
快照
- 存储在目录下的 .snap 隐藏目录中
- 启用/停用快照:ceph fs set <fs_name> allow_new_snaps true/false
- 创建快照:在 .snap 下创建子目录(如 mkdir /mnt/cephfs/.snap/snap1)
- 恢复文件:从 .snap/<snap_name>/ 复制
- 删除快照:rmdir /mnt/cephfs/.snap/<snap_name>
CephFS 镜像(Mirroring)
- 用于两个集群间异步复制,基于快照实现增量同步
- 前提:源和目标集群均 ≥ Pacific (v16.2.0)
- 配置步骤:
- 源集群部署 cephfs-mirror 守护进程:ceph orch apply cephfs-mirror <host>
- 目标集群创建专用用户:ceph fs authorize cephfs client.cephfs-mirror / rwps
- 两端启用 mirroring 模块:ceph mgr module enable mirroring
- 源集群启用文件系统镜像:ceph fs snapshot mirror enable <fs_name>
- 目标集群创建引导令牌,源集群导入令牌
- 指定需要镜像的目录:ceph fs snapshot mirror add <fs_name> <path>






