ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

十、Ceph 分布式存储5-8

十、Ceph 分布式存储5-8 第 5 章 认证和授权管理Cephx5.1 cephx 概述Cephx 是 Ceph默认启用的身份认证与鉴权协议对集群内部组件、客户端访问做加密身份校验防止未授权访问集群。认证确认用户是谁授权确认该用户拥有哪些操作权限。不建议关闭 cephx关闭会带来重大安全风险。5.2 Ceph 用户分类守护进程用户内部服务账号格式类型.IDmon.xxx监视器账号、osd.0OSD 账号、mgr.xxx管理器账号、mds.xxx元数据服务器账号。集群内部各个守护进程互相通信使用普通客户端不能使用这类账号。客户端用户业务访问账号统一前缀client.示例client.admin超级管理员集群部署默认生成业务自定义账号client.rbd_user、client.rgw。业务应用、虚拟机、外部主机访问 Ceph 集群全部使用client.*账号。5.3 Keyring 密钥环密钥环keyring文件保存用户名称 对应的密钥 secret用于身份认证。默认路径/etc/ceph/ceph.client.admin.keyringadmin 管理员密钥环。文件权限要求严格限制权限防止密钥泄露。分发外部客户端接入集群需要拷贝ceph.conf配置文件 对应 client 账号的 keyring 密钥环。5.4 Capabilitycap 能力权限cap 定义用户可以在各个组件上执行的权限权限粒度分为mon、osd、mgr、mds四大模块。 权限标识r读权限w写权限x执行权限*全部权限生产尽量避免使用osd 的 cap 还可以做进一步限制限制只能访问指定存储池 pool、对象前缀、命名空间。示例osd allow rw poolpool_web, poolrbdpool mon allow r最佳实践遵循最小权限原则业务账号不给*全部权限按需分配池权限。5.5 auth 身份认证管理命令#查看集群全部用户账号 ceph auth list #创建用户同时设置cap权限 ceph auth add client.rbduser mon allow r osd allow rw poolpool_web #获取或创建用户账号存在就获取密钥不存在新建 ceph auth get-or-create client.rbduser mon allow r osd allow rw poolpool_web #导出用户密钥输出到文件 ceph auth get client.rbduser -o ceph.client.rbduser.keyring #修改已有用户权限 ceph auth caps client.rbduser mon allow r osd allow rw poolpool_web poolrbd #删除用户 ceph auth del client.rbduser5.6 客户端接入集群完整流程在 Ceph 集群服务端创建业务client.*账号配置 cap 权限导出该账号的 keyring 密钥环文件将/etc/ceph/ceph.conf配置文件 导出的 keyring 拷贝到客户端主机/etc/ceph目录客户端安装软件包ceph‑common客户端即可执行 ceph/rbd/rados 命令访问集群。5.7 安全注意事项不要禁用 cephx 认证密钥环文件权限设置严格禁止普通用户读取业务账号使用最小权限不随意授予*全部权限不要把 admin 超级账号密钥给到业务应用。第 6 章 块存储管理 RBDRADOS Block DeviceRBD 即 RADOS 块设备提供块磁盘服务广泛用于 KVM/QEMU 虚拟机、OpenStack、Cinder 云硬盘。底层基于 librados把块 IO 切分为固定大小对象存储在 Ceph 存储池 Pool。⚠️RBD只支持副本 replicated 存储池纠删码池不能用于 RBD。6.1 RBD 两种使用模式内核模式 rbd 模块Linux 内核将 RBD 映射成本地块设备/dev/rbdX可以直接格式化、挂载文件系统。用户态 librbd 库QEMU/KVM、Cinder 直接调用 librbd 库不需要在宿主机映射出 /dev 设备虚拟化场景主流方式。6.2 RBD 镜像基础管理准备存储池开启 RBD 功能、初始化 RBD 池#开启池的RBD应用标记 ceph osd pool application enable rbd_pool rbd #初始化RBD池 rbd pool init -p rbd_pool镜像基础操作#创建RBD镜像--size支持M/G/T rbd create -p rbd_pool --size 10G vol01 #列出池内所有镜像 rbd ls -p rbd_pool #查看镜像详细信息大小、特性、快照 rbd info rbd_pool/vol01 #扩容镜像大小 rbd resize rbd_pool/vol01 --size 15G #重命名镜像 rbd rename rbd_pool/vol01 rbd_pool/vol02 #删除镜像 rbd rm rbd_pool/vol02内核映射客户端主机执行#将远端RBD镜像映射成本地/dev/rbd0块设备 rbd map rbd_pool/vol01 #查看本机已经映射的rbd设备 rbd showmapped #取消映射 rbd unmap /dev/rbd06.3 RBD 快照 Snapshot快照保存镜像某一时间点只读副本用于备份、回滚。#为镜像创建快照 rbd snap create rbd_pool/vol01snap_202609 #查看镜像全部快照 rbd snap ls rbd_pool/vol01 #快照回滚镜像恢复到快照时刻快照之后的数据全部丢失 rbd snap rollback rbd_pool/vol01snap_202609 #删除单个快照 rbd snap rm rbd_pool/vol01snap_202609 #清除该镜像全部快照 rbd snap purge rbd_pool/vol016.4 RBD 克隆 Clone基于受保护的快照生成全新可读写镜像。克隆镜像默认依赖父快照。#保护快照禁止快照被误删除克隆的前提条件 rbd snap protect rbd_pool/vol01snap_202609 #基于快照克隆出新镜像clone_vol rbd clone rbd_pool/vol01snap_202609 rbd_pool/clone_vol01 #扁平化flatten解除克隆镜像对父快照的依赖完整复制数据之后父快照可以删除 rbd flatten rbd_pool/clone_vol01 #取消快照保护flatten完成之后执行 rbd snap unprotect rbd_pool/vol01snap_202609⚠️风险未执行 flatten 扁平化直接删除父快照克隆镜像会损坏不可用。6.5 RBD 镜像导入导出备份迁移#导出RBD镜像为本地raw文件备份 rbd export rbd_pool/vol01 ./vol01.raw #从本地raw文件导入生成RBD镜像 rbd import ./vol01.raw rbd_pool/vol01_new6.6 RBD 镜像 Features 特性layering快照克隆依赖、striping、exclusive‑lock 等。老旧 Linux 内核不支持部分高级特性需要手动关闭对应 feature。第 7 章 对象存储管理 RGWRADOS‑GatewayRGW 是 Ceph 对象网关提供兼容S3、OpenStack Swift的 RESTful 对象存储 API。不依赖 MDS 元数据服务器直接基于 librados 操作 RADOS 对象。支持多实例部署前端 Nginx 负载均衡实现高可用。7.1 RGW 核心概念UserRGW 用户对象存储访问账号生成access_key和secret_key密钥S3 客户端认证使用。Bucket 桶对象的容器桶名称全局唯一同一个集群桶名不能重复。Object 对象桶中存储的文件包含对象 key、数据、元数据。7.2 cephadm 部署 RGW#部署RGW服务实例服务实例名称myrgw指定运行节点 ceph orch apply rgw myrgw --placementceph1,ceph2cephadm 部署 RGW 会自动创建 RGW 所需一系列内部存储池默认监听 TCP 80 端口浏览器 / SDK 通过http://IP访问对象网关。7.3 RGW 用户管理 radosgw‑admin 工具#创建RGW用户uid用户名display‑name显示名称 radosgw‑admin user create --uiduser01 --display‑nametest user01 #列出全部RGW用户 radosgw‑admin user list #查看用户详情输出access_key、secret_key radosgw‑admin user info --uiduser01 #删除RGW用户 radosgw‑admin user remove --uiduser01access_key / secret_key提供给 s3cmd、boto3、各类 S3 兼容客户端做身份认证。7.4 Bucket 桶管理桶配额限制桶最大存储容量、最大对象数量。对象版本控制开启版本对象覆盖保留历史版本防止误删。生命周期策略设置规则过期对象自动删除。注意Bucket 名称全局唯一整个 RGW 集群不可重名。7.5 客户端访问 RGW支持多种 S3 兼容客户端s3cmd 命令行工具Python boto3 SDK 开发各类备份软件、对象存储网关。7.6 RGW 高可用与异地容灾高可用多台节点部署 RGW 实例前端 Nginx 做负载均衡。Multi‑Site 多站点同步两个独立 Ceph 集群之间实现 Bucket 对象跨集群异步复制实现异地对象容灾。第 8 章 文件系统存储管理 CephFSCephFS 是POSIX 兼容并行分布式文件系统支持多客户端同时挂载共享同一个文件目录。组件区分MDS 元数据服务器只管理元数据文件名、权限、时间戳、inode文件真实业务数据存放在 RADOS OSD 磁盘。 CephFS 需要两类存储池元数据池、数据池建议使用副本池元数据池不建议纠删码池。8.1 CephFS 组件说明MDS 元数据服务器active主 MDS处理所有元数据业务请求standby备用 MDS主 MDS 故障自动切换实现高可用。MDS 全部故障文件系统无法访问但 OSD 上的实际文件数据不会丢失。两个存储池metadata 元数据池存放 inode、目录权限元数据对性能可靠性要求高data 数据池存放真实的文件内容。8.2 创建 CephFS 文件系统#1 创建元数据池、数据池副本模式 ceph osd pool create cephfs_meta 64 64 replicated ceph osd pool create cephfs_data 128 128 replicated #2 创建CephFS实例绑定元数据池与数据池 ceph fs new cephfs_demo cephfs_meta cephfs_data #3 部署MDS守护进程指定节点一主多备 ceph orch apply mds cephfs_demo --placementceph1,ceph2 #查看文件系统信息 ceph fs ls ceph fs status8.3 CephFS 客户端两种挂载方式内核挂载 mount‑t ceph性能高mount -t ceph 192.168.108.11:6789:/ /mnt/cephfs \ -o nameclient.admin,secretfile/etc/ceph/ceph.client.admin.keyringceph‑fuse 用户态 FUSE 挂载兼容性好旧内核也支持ceph‑fuse /mnt/cephfs --name client.admin --keyring /etc/ceph/ceph.client.admin.keyring8.4 CephFS 高级功能Subvolume 子卷CephFS 内部逻辑隔离目录类似存储池可独立设置配额、快照。目录配额限制子卷最大存储容量、最大文件数量。子卷快照针对子卷打快照用于数据备份恢复。8.5 故障注意事项MDS 全部挂掉文件系统挂载访问失败但OSD 磁盘中原始文件数据完好无损MDS 恢复后业务即可恢复。元数据池损坏会直接造成 CephFS 严重故障元数据池必须保证高可靠性优先高副本。
返回列表