个人用云计算学习笔记 --35 Ceph 分布式存储

Ceph 分布式存储完整知识点整理

Ceph 分布式存储

1. 存储中用户角色

(1)云存储用户角色
角色 核心职责
存储管理员 集群安装 / 配置 / 维护、功能培训、数据弹性与恢复、自动化集成、数据分析访问支持
存储操作员 通过 Dashboard 监控集群、响应警报、更换故障存储设备
其他角色 应用架构师:关联 Ceph 架构与资源可用性;云操作员:管理 OpenStack/OpenShift 与 Ceph 协作;自动化工程师:创建重复任务剧本;应用开发人员:协调存储资源与配额;服务管理员:管理生产服务产品;部署工程师:执行应用部署调整;基础架构架构师:提供集群架构布局支持;数据中心操作员:底层数据供应
(2)组织中用户角色
  • 电信 / 云服务提供商:云操作员、存储操作员、基础架构架构师、云服务开发人员(仅消费存储)
  • 银行 / 金融机构:所有角色内部配备,存储管理员等充当服务提供商
  • 大学 / 小型实施:技术支持人员承担所有角色(存储管理员 + 架构师 + 云操作员)

2. Ceph 介绍

(1)核心定义
  • 开源、分布式、软件定义存储,支持 x86/ARM 混合部署,用于存储海量数据,具备高可用、高扩展、易用性
  • 软件定义存储(SDS)核心:脱离硬件依赖,通过软件实现存储资源池化与管理
(2)技术优势
  • 基于 RADOS 系统,所有数据以对象存储于存储池
  • 去中心化:客户端通过 CRUSH 算法直算对象存储位置,无需中央查找表
  • 自动扩展、数据再平衡、故障自动恢复
(3)使用场景
  • 高性能计算、内容存储、日志留存、智慧城市、虚拟化 / 云平台、资源池、数据库
(4)企业版 Ceph 存储
  • 类比 RHEL 与 Fedora,红帽整合上游特性,提供 36 个月支持(比上游长 1 年)
  • 企业级特性:EB 级容量、支持数千客户端、统一存储(对象 / 块 / 文件)

3. Ceph 架构介绍

(1)集群架构核心
  • 核心:RADOS(可靠自主分布式对象存储),上层提供多访问接口,底层四大组件(MON/OSD/MGR/MDS)
(2)访问方式
访问方式 核心库 功能 / 适用场景
原生 API(librados) librados 底层基础库,支持多语言,性能最优
块设备(RBD) librbd 虚拟磁盘,支持 KVM/QEMU、OpenStack Cinder
对象网关(RADOSGW) librgw RESTful API,兼容 S3/Swift,适用于镜像存储、备份
文件系统(CephFS) libcephfs 并行文件系统,兼容 POSIX,需 MDS
(3)后端存储组件
  • Monitor(MON):维护集群映射,奇数部署,需超过半数正常运行,端口 6789(msgr)、3300(msgr2)

  • OSD(对象存储设备):存储数据,处理复制 / 恢复 / 再平衡,主 OSD 服务 I/O,次 OSD 提供冗余,支持 XFS 文件系统,OSD 日志建议存 SSD

  • Manager(MGR):集群统计、Dashboard(端口 8443)、导出监控指标,至少部署 2 个,无 MGR 不影响 I/O

  • MDS(元数据服务器):仅支持 CephFS,管理元数据(所有权、时间戳),客户端通过 MDS 获取文件位置

(4)集群映射(Cluster Map)
  • 五大核心映射:Monitor Map(fsid、MON 地址)、OSD Map(池 / 复本 / OSD 状态)、PG Map(PG 状态 / 数据统计)、CRUSH Map(故障域 / 映射规则)、MDS Map(元数据池 / MDS 状态)
  • 其他映射:Manager Map、Service Map(RGW 信息)
  • 查看命令:ceph mon dumpceph osd dumpceph pg dumpceph osd crush dumpceph fs dump

Ceph 分布式存储 部署

1. Ceph 集群安装介绍

(1)安装方式
  • 官方推荐:Cephadm(容器化,支持 Octopus+)、Rook(K8s 部署,支持 Nautilus+)
  • 其他方式:ceph-ansible(Ansible)、ceph-deploy(已废弃)、DeepSea(Salt)、手动部署
(2)最小硬件规格
组件 资源 规格
ceph-osd CPU 最少 1 核(每 200-500MB/s 或 1000-3000IOPS 增 1 核)
内存 4G(2G-4G 基本可用但卡顿)
存储空间 1 整块硬盘 + 1 个 SSD 分区
网络 至少 1G,推荐 10G
ceph-mon CPU 最少 2 核
内存 2-4GB
磁盘空间 60G
网络带宽 1G+
ceph-mds CPU 最少 2 核
内存 最少 2G
磁盘空间 1M
网络带宽 1G+
(3)服务端口(TCP 协议)
服务 端口 描述
MON 6789、3300 集群内部通信
OSD 6800-7300 客户端 / MON 通信、OSD 间数据 / 心跳通信(占 4 个端口)
MDS 6800-7300 元数据服务器通信
MGR 8443 Dashboard SSL 访问
RESTful 管理模块 8003 SSL 通信
Prometheus 管理模块 9283 与 Prometheus 插件通信
Prometheus 告警管理 9093 与 Alertmanager 通信
Prometheus 节点导出器 9100 节点数据收集通信
Grafana 服务器 3000 Grafana 服务通信
RGW 80 RADOSGW 通信(默认)
Ceph iSCSI 网关 9287 与 iSCSI 网关通信

2. Cephadm 简介

全生命周期管理工具,容器化部署,降低依赖复杂度

引导节点:安装 cephadm 包,启动首个 MON 和 MGR

3. 管理接口

(1)Ceph CLI 接口
  • cephadm shell:启动容器化 shell,执行集群命令(如cephadm shell -- ceph status
  • 物理机直接执行:安装ceph-common包,如dnf install -y ceph-common
(2)Ceph Dashboard 接口
  • 基于 Web,MGR 模块,默认端口 8443,支持用户管理、单点登录、审计、SSL 加密

  • 功能:集群监控(健康 / 容量 / 性能)、集群管理(CRUSH 映射 / OSD / 池 /iSCSI)

4. Ceph 集群安装过程

(1)环境说明
  • 部署方法:cephadm

  • 操作系统:CentOS Stream 8(最小化)

  • 硬件:2CPU、4G 内存、1 系统盘 + 3 个 20G 数据盘

  • 节点:client(192.168.108.10)、主集群(ceph1-3:192.168.108.11-13)、备集群(ceph4-6:192.168.108.14-16)

(2)准备虚拟机模板
bash 复制代码
# 1. 配置主机名解析
cat >> /etc/hosts << EOF
###### ceph ######
192.168.108.10 client.laogao.cloud client
192.168.108.11 ceph1.laogao.cloud ceph1
192.168.108.12 ceph2.laogao.cloud ceph2
192.168.108.13 ceph3.laogao.cloud ceph3
192.168.108.14 ceph4.laogao.cloud ceph4
192.168.108.15 ceph5.laogao.cloud ceph5
192.168.108.16 ceph6.laogao.cloud ceph6
EOF

# 2. 关闭SELinux
sed -ri 's/^SELINUX=.*/SELINUX=disabled/g' /etc/selinux/config

# 3. 关闭防火墙
systemctl disable firewalld --now

# 4. 配置yum仓库
cat << 'EOF' > /etc/yum.repos.d/ceph.repo
[Ceph]
name=Ceph 
baseurl=https://mirrors.aliyun.com/centos-vault/8-stream/storage/x86_64/ceph-pacific
enabled=1
gpgcheck=0
EOF

# 5. 安装基础软件包
dnf install -y bash-completion vim lrzsz unzip rsync sshpass tar

# 6. 配置时间同步
dnf install -y chrony
systemctl enable chronyd --now

# 7. 安装cephadm(自动安装podman)
dnf install -y cephadm

# 8. 提前下载镜像
podman pull quay.io/ceph/ceph:v16
podman pull quay.io/ceph/ceph-grafana:8.3.5
podman pull quay.io/prometheus/node-exporter:v1.3.1
podman pull quay.io/prometheus/alertmanager:v0.23.0
podman pull quay.io/prometheus/prometheus:v2.33.4

# 9. 准备配置主机脚本
cat > /usr/local/bin/sethost <<'EOF'
#!/bin/bash
hostnamectl set-hostname ceph$1.laogao.cloud
nmcli connection modify ens160 ipv4.method manual ipv4.addresses 192.168.108.1$1/24 ipv4.gateway 192.168.108.2 ipv4.dns 192.168.108.2
init 0
EOF
chmod +x /usr/local/bin/sethost
(3)准备集群节点
  • 克隆模板机,ceph1-6 执行sethost 1-6,client 单独配置主机名和 IP
(4)集群初始化(ceph1 执行)
bash 复制代码
cephadm bootstrap --mon-ip 192.168.108.11 \
--allow-fqdn-hostname \
--initial-dashboard-user admin \
--initial-dashboard-password laogao@123 \
--dashboard-password-noupdate
  • 选项说明:--mon-ip指定 MON IP,--allow-fqdn-hostname支持长主机名,--initial-dashboard-user/password配置 Dashboard 账户

  • 输出关键信息:Dashboard 地址(https://ceph1.laogao.cloud:8443)、CLI 访问方式(cephadm shell

(5)添加节点
bash 复制代码
# 1. 安装ceph-common
dnf install -y ceph-common

# 2. 获取集群公钥
ceph cephadm get-pub-key > ~/ceph.pub

# 3. 推送公钥到其他节点(免密)
ssh-copy-id -f -i ~/ceph.pub root@ceph2.laogao.cloud
ssh-copy-id -f -i ~/ceph.pub root@ceph3.laogao.cloud

# 4. 添加节点
ceph orch host add ceph2.laogao.cloud
ceph orch host add ceph3.laogao.cloud

# 5. 验证节点
ceph orch host ls
(6)部署 MON 和 MGR
bash 复制代码
# 1. 禁用自动扩展
ceph orch apply mon --unmanaged=true
ceph orch apply mgr --unmanaged=true

# 2. 添加_admin标签
ceph orch host label add ceph2.laogao.cloud _admin
ceph orch host label add ceph3.laogao.cloud _admin

# 3. 部署到标签节点
ceph orch apply mon --placement="label:_admin"
ceph orch apply mgr --placement="label:_admin"

# 4. 验证
ceph orch ls | egrep 'mon|mgr'
(7)部署 OSD
bash 复制代码
# 部署所有可用设备为OSD
ceph orch apply osd --all-available-devices

# 验证
ceph orch ls osd
ceph -s  # 查看OSD状态(up/in数量)
ceph osd tree  # 查看OSD结构
(8)集群验证
  • 查看服务:ceph orch ls
  • 查看集群状态:ceph -s(健康状态:HEALTH_OK/WARN/ERR)
  • 查看 OSD 结构:ceph osd tree
  • 查看组件:ceph orch ps

5. Ceph 集群组件管理

(1)ceph orch 命令核心
  • 支持对象:host(物理节点)、service type(nfs/mds/osd 等)、Service(逻辑服务)、Daemon(进程)
  • 特殊标签:_no_schedule(不部署服务)、_no_autotune_memory(不内存调优)、_admin(自动同步配置和密钥环)
(2)禁用服务自动扩展
bash 复制代码
# 禁用MON自动扩展
ceph orch apply mon --unmanaged=true

# 启用MON自动扩展
ceph orch apply mon --unmanaged=false
(3)删除服务(以 crash 为例)
bash 复制代码
# 1. 禁用自动扩展
ceph orch apply crash --unmanaged=true

# 2. 查看实例
ceph orch ps | grep crash

# 3. 删除特定实例
ceph orch daemon rm crash.ceph1

# 4. 删除服务
ceph orch rm crash
(4)删除 OSD
bash 复制代码
# 1. 确认OSD与设备映射(脚本)
vim /usr/local/bin/show-osd-device
#!/bin/bash
cluster_id=$(ceph -s|grep id |awk '{print $2}')
cd /var/lib/ceph/${cluster_id}
for osd in osd.*
do
device_id=$(ls -l $osd/block | awk -F '-' '{print $NF}')
device=/dev/$(lsblk |grep -B1 ${device_id} |grep -v ${device_id} | awk '{print $1}')
echo $osd : $device
done
chmod +x /usr/local/bin/show-osd-device
show-osd-device

# 2. 禁用OSD自动扩展
ceph orch apply osd --all-available-devices --unmanaged=true

# 3.  删除OSD(编排方式)
ceph orch osd rm 0

# 4. 清理设备数据
ceph orch device zap ceph1.laogao.cloud /dev/sdb --force

# 5. 手动删除(备选)
ceph orch daemon stop osd.0
ceph orch daemon rm osd.0 --force
ceph osd out 0
ceph osd crush rm osd.0
ceph osd rm 0
(5)删除主机(以 ceph2 为例)
bash 复制代码
# 1. 禁用所有服务自动扩展
for service in $(ceph orch ls |grep -v -e NAME -e osd| awk '{print $1}');do ceph orch apply $service --unmanaged=true;done
ceph orch apply osd --all-available-devices --unmanaged=true

# 2. 查看ceph2上的daemon
ceph orch ps |grep ceph2 |awk '{print $1}'

# 3. 删除daemon
for daemon in $(ceph orch ps |grep ceph2 |awk '{print $1}');do ceph orch daemon rm $daemon --force;done

# 4. 清理CRUSH信息
ceph osd crush rm osd.2 osd.4 osd.7
ceph osd crush rm ceph2
ceph osd rm 2 4 7

# 5. 清理磁盘数据
ceph orch device zap ceph2.laogao.cloud /dev/sdb --force
ceph orch device zap ceph2.laogao.cloud /dev/sdc --force
ceph orch device zap ceph2.laogao.cloud /dev/sdd --force

# 6. 删除主机
ceph orch host rm ceph2

# 7. 清理ceph2遗留文件
rm -rf /var/lib/ceph /etc/ceph /etc/systemd/system/ceph* /var/log/ceph

Ceph 分布式存储 集群配置

1. 集群配置概述

  • 配置来源(优先级从高到低):命令行参数 > 环境变量 > 本地配置文件 > 集中配置数据库 > 编译默认值
  • 配置生效:启动时解析本地配置,后从 MON 获取集中配置,集中配置优先于本地配置文件

2. 配置文件

  • 查找路径:CEPH_CONF 环境变量 > -c参数指定 > ./$cluster.conf > ~/.ceph/$cluster.conf > /etc/ceph/$cluster.conf(默认)
  • 格式:INI 格式, sections 包括[global](全局)、[mon][osd][mgr][mds][client]
  • 注释:#;

3. 元变量

元变量 说明 示例
$cluster 集群名称(默认 ceph) /etc/ceph/$cluster.keyring
$type 守护进程类型(mon/osd/mds/mgr/client) /var/lib/ceph/$type
$id 守护进程实例 ID osd.0 的 $id=0
$name typ**e.id /var/run/ceph/$cluster-$name.asok
$host 主机名 运行守护进程的主机名称

4. 集中配置数据库(MON 管理)

(1)核心命令
命令 功能 示例
ceph config ls 列出所有配置条目 ceph config ls
ceph config help 查看配置帮助 ceph config help public_network
ceph config dump 显示配置数据库设置 ceph config dump
ceph config show typ**e.id [key] 显示特定守护进程生效配置 ceph config show mon.ceph1 public_network
ceph config get typ**e.id [key] 获取配置数据库中的值 ceph config get mon mon_allow_pool_delete
ceph config set typ**e.id key value 设置配置 ceph config set mon mon_allow_pool_delete true
ceph config rm typ**e.id [key] 清除配置(还原默认) ceph config rm mon mon_allow_pool_delete
ceph config log [num] 查看配置历史 ceph config log 5(最近 5 条)
ceph config reset [num] 回滚配置到历史版本 ceph config reset 20

5. 集群引导选项

  • 核心选项:mon_ip(必填,不能存于配置数据库)、mon_host_override(初始 MON 列表)、mon_dns_serv_name(DNS SRV 记录名称)
  • 数据目录:mon_data/osd_data/mds_data/mgr_data
  • 认证凭据:keyring/keyfile/key

6. 运行时覆盖配置

(1)ceph tell 命令(需 MON 运行)
bash 复制代码
# 查看运行时设置
ceph tell mon.* config show

# 获取特定设置
ceph tell mon.ceph1 config get mon_allow_pool_delete

# 设置临时配置(重启失效)
ceph tell mon.ceph1 config set mon_allow_pool_delete false
(2)ceph daemon 命令(无需 MON,需守护进程运行)
bash 复制代码
# 进入容器shell
cephadm shell

# 查看运行时设置
ceph daemon mon.ceph1 config show

# 获取特定设置
ceph daemon mon.ceph1 config get mon_allow_pool_delete

# 设置临时配置(重启失效)
ceph daemon mon.ceph1 config set mon_allow_pool_delete false

7. 配置集群监控器(Monitor)

(1)查看仲裁状态
bash 复制代码
ceph status | grep mon
ceph mon stat
ceph quorum_status -f json-pretty
(2)分析 Monitor 映射
bash 复制代码
ceph mon dump  # 查看MON映射
(3)管理集中配置数据库
  • 压缩数据库:ceph tell mon.ceph1 compact
  • 配置启动时压缩:ceph config set mon mon_compact_on_start true
  • 数据库大小阈值:mon_data_size_warn(15GB,HEALTH_WARN)、mon_data_avail_warn(30%,HEALTH_WARN)、mon_data_avail_crit(5%,HEALTH_ERR)

8. 集群验证(Cephx 协议)

  • 查看认证配置:ceph config get mon auth_service_required(默认 cephx)
  • 启用 / 禁用 Cephx:ceph config set mon auth_service_required none(不建议禁用)
  • 密钥环文件:/etc/ceph/ceph.client.admin.keyring(管理员)、/var/lib/ceph/$fsid/mon.$host/keyring(MON)

9. 配置集群网络

(1)公共网络和集群网络
bash 复制代码
# 设置公共网络
ceph config set mon public_network 192.168.108.0/24

# 设置集群网络(独立于公共网络)
ceph config set mon cluster_network 192.168.101.0/24

# 配置文件方式
[global]
public_network = 192.168.108.0/24,192.168.109.0/24
cluster_network = 192.168.101.0/24
(2)运行 IPv6
bash 复制代码
ceph config set mon ms_bind_ipv6 true
ceph config set mon ms_bind_ipv4 false
(3)启用巨型帧
  • 配置 MTU=9000(通信路径所有节点和设备需一致)
(4)防火墙规则
bash 复制代码
# MON节点(公共区域)
firewall-cmd --zone=Public --add-port=6789/tcp --add-port=3300/tcp --permanent
firewall-cmd --zone=Public --add-service=ceph-mon --permanent
firewall-cmd --reload

# OSD节点
firewall-cmd --zone=<public-or-cluster> --add-port=6800-7300/tcp --permanent
firewall-cmd --zone=<public-or-cluster> --add-service=ceph --permanent
firewall-cmd --reload

Ceph 分布式存储 池管理

1. 数据组织结构

  • 对象(Object):数据基本单元(ID + 数据 + 元数据)
  • PG(Placement Group) :对象的集合,PG = hash(object_name) % pg_num,是对象与 OSD 的中间层
  • Pool:逻辑分区,包含多个 PG,关联 CRUSH 规则和数据保护类型
  • 数据映射流程:Client → Object → PG → CRUSH → OSD

2. 数据读写流程

(1)读取流程
  1. 客户端从 MON 获取集群映射
  2. 计算 PG 和主 OSD
  3. 客户端直连主 OSD 读取数据
(2)写入流程
  1. 客户端从 MON 获取集群映射
  2. 计算 PG 和主 OSD
  3. 主 OSD 写入数据并同步到次 OSD
  4. 所有 OSD 确认后,主 OSD 向客户端返回成功(优化:先写缓存确认,再刷盘确认)

3. 数据保护

(1)复本池(Replicated Pool)
  • 原理:对象多副本存储(默认 3 副本),性能优,占用空间多
  • 适用场景:频繁访问、低延迟需求
(2)纠删码池(Erasure Coded Pool)
  • 原理:K 个数据块 + M 个编码块(如 4+2,仅占 1.5 倍空间),CPU 开销大
  • 适用场景:低频访问、大容量存储
  • 支持组合:4+2(1:1.5)、8+3(1:1.375)、8+4(1:1.5)

4. 创建池

(1)创建复本池
bash 复制代码
ceph osd pool create pool_web 32 32 replicated
# 参数:池名、pg_num、pgp_num(与pg_num一致)、类型(默认replicated)、CRUSH规则
(2)创建纠删码池
bash 复制代码
# 1. 创建纠删码配置文件
ceph osd erasure-code-profile set ec_profile k=4 m=2

# 2. 创建池
ceph osd pool create pool_ec 32 32 erasure ec_profile

5. 查看池状态

bash 复制代码
# 列出池
ceph osd pool ls
ceph osd lspools

# 池详细信息
ceph osd pool ls detail

# 池状态(客户端使用)
ceph osd pool stats

# 容量使用
ceph df

6. 管理池

(1)应用类型管理
bash 复制代码
# 启用RBD类型
ceph osd pool application enable pool_web rbd

# 设置应用详情
ceph osd pool application set pool_web rbd app1 apache

# 查看应用类型
ceph osd pool application get pool_web

# 禁用应用类型
ceph osd pool application disable pool_web rbd --yes-i-really-mean-it
(2)配额管理
bash 复制代码
# 设置配额(最大对象数10万)
ceph osd pool set-quota pool_web max_objects 100000

# 设置配额(最大容量10G)
ceph osd pool set-quota pool_web max_bytes 10G

# 查看配额
ceph osd pool get-quota pool_web

# 删除配额(设为0)
ceph osd pool set-quota pool_web max_objects 0
(3)池配置调整
bash 复制代码
# 查看所有配置
ceph osd pool get pool_web all

# 设置不可删除
ceph osd pool set pool_web nodelete true

# 恢复可删除
ceph osd pool set pool_web nodelete false
(4)复本数调整
bash 复制代码
# 调整池复本数
ceph osd pool set pool_web size 2

# 设置新池默认复本数
ceph config set mon osd_pool_default_size 2

# 最小复本数(I/O请求所需最小副本)
ceph config set mon osd_pool_default_min_size 1
(5)PG 数调整
bash 复制代码
# 调整PG数
ceph osd pool set pool_web pg_num 64
ceph osd pool set pool_web pgp_num 64

# 启用PG自动扩展
ceph mgr module enable pg_autoscaler
ceph osd pool set pool_web pg_autoscale_mode on

# 查看自动扩展状态
ceph osd pool autoscale-status
(6)对象管理(rados 命令)
bash 复制代码
# 上传对象
rados -p pool_web put hosts /etc/hosts

# 查看对象
rados -p pool_web ls

# 下载对象
rados -p pool_web get hosts new_hosts

# 追加对象
rados -p pool_web append hosts hosts2

# 删除对象
rados -p pool_web rm hosts
(7)快照管理
bash 复制代码
# 创建快照
ceph osd pool mksnap pool_web snap1

# 查看快照
ceph osd pool ls detail
rados -p pool_web lssnap

# 从快照获取对象
rados -p pool_web -s snap1 get hosts hosts_from_snap1

# 恢复对象到快照状态
rados -p pool_web rollback hosts snap1

# 删除快照
ceph osd pool rmsnap pool_web snap1
(8)命名空间管理
bash 复制代码
# 上传对象到命名空间myns1
rados put -p pool_web -N myns1 hostname /etc/hostname

# 查看命名空间对象
rados ls -p pool_web -N myns1
rados ls -p pool_web --all --format=json-pretty
(9)重命名与删除
bash 复制代码
# 重命名池
ceph osd pool rename pool_web pool_apache

# 删除池(需先启用删除权限)
ceph config set mon mon_allow_pool_delete true
ceph osd pool rm pool_apache pool_apache --yes-i-really-really-mean-it

7. PG 数量配置原则

  • 计算公式(旧版):集群 PG 总数 =(OSD 数 ×100)/ 最大副本数;单个池 PG 数 = 集群 PG 总数 / 池数(结果取 2 的 N 次幂)
  • 简化原则:OSD<5→128;5≤OSD<10→512;10≤OSD<50→4096;OSD>50→使用官方工具(https://old.ceph.com/pgcalc/)

Ceph 分布式存储 认证和授权管理

1. Cephx 协议

  • 核心:共享密钥加密通信,用于守护进程间、客户端与集群间认证
  • 账户命名:守护进程(osd.0、mgr.ceph1)、客户端(client.xxx,如 client.openstack、client.rgw.hostname)、管理员(client.admin)

2. 密钥环文件

  • 路径:/etc/ceph/ceph.client.xxx.keyring(客户端)、/var/lib/ceph/$fsid/mon.$host/keyring(MON)
  • 权限:严格保护,仅授权用户访问

3. 指定用户身份

bash 复制代码
# 使用--id(无需client.前缀)
ceph --id operator3 osd lspools

# 使用--name(需client.前缀)
ceph --name client.operator3 osd lspools

# 环境变量
export CEPH_ARGS="--id laogao"

4. Cephx 认证流程

  1. 客户端向 MON 请求会话密钥(传递共享密钥)
  2. MON 加密会话密钥返回,客户端解密
  3. 客户端请求票据,MON 加密返回
  4. 客户端使用票据与 MDS/OSD 通信

5. 管理用户账户

(1)查看用户
bash 复制代码
ceph auth list
ceph auth get osd.0  # 特定用户详情
ceph auth get-key osd.0  # 仅获取密钥
(2)创建用户
bash 复制代码
# 创建用户(空权限)
ceph auth add client.app1

# 创建用户并授权
ceph auth add client.laogao mon 'allow r' osd 'allow rw'

# 自动生成密钥
ceph auth get-or-create client.app2

# 仅生成密钥
ceph auth get-or-create-key client.app3
(3)删除用户
bash 复制代码
ceph auth del client.app3
ceph auth rm client.app2
(4)导出 / 导入用户
bash 复制代码
# 导出
ceph auth export osd.0 -o ceph.osd.0.keyring
ceph auth get osd.0 -o ceph.osd.0.keyring

# 导入
ceph auth import -i ceph.client.app4.keyring

6. 配置用户功能(权限)

(1)权限类型
  • r:读取;w:写入;x:执行;*:完整权限;class-read/class-write:RBD 专用
(2)预定义配置文件
  • osd:OSD 通信权限;bootstrap-osd:OSD 引导权限;rbd:RBD 读写权限;rbd-read-only:RBD 只读权限
(3)限制访问范围
bash 复制代码
# 限制池
ceph auth get-or-create client.formyapp1 mon 'allow r' osd 'allow rw pool=myapp'

# 限制命名空间
ceph auth get-or-create client.formyapp2 mon 'allow r' osd 'allow rw namespace=photos'

# 限制池+命名空间
ceph auth get-or-create client.formyapp3 mon 'allow r' osd 'allow rw pool=myapp namespace=photos'

# 限制对象前缀
ceph auth get-or-create client.formyapp4 mon 'allow r' osd 'allow rw object_prefix pref'

# 限制CephFS目录
ceph fs authorize cephfs client.webdesigner /webcontent rw

# 限制Monitor命令
ceph auth get-or-create client.operator1 mon 'allow r, allow command "auth list"'

7. 实践案例:客户端管理 Ceph

bash 复制代码
# 1. 客户端安装ceph-common
dnf install -y ceph-common

# 2. 复制配置和密钥环(从ceph1)
scp root@ceph1:/etc/ceph/ceph.conf /etc/ceph/
scp root@ceph1:/etc/ceph/ceph.client.admin.keyring /etc/ceph/

# 3. 客户端执行命令
ceph -s

Ceph 分布式存储 块存储管理

1. RADOS 块设备(RBD)介绍

  • 定义:虚拟块设备,以镜像形式存储于池,支持快照、克隆、镜像同步
  • 访问方式:KRBD(内核模块)、librbd(用户空间库,适用于 KVM/OpenStack)

2. 创建 RBD 镜像

bash 复制代码
# 1. 创建RBD池并初始化
ceph osd pool create images_pool 32 32
rbd pool init images_pool  # 等同于ceph osd pool application enable images_pool rbd

# 2. 创建专用用户
ceph auth get-or-create client.rbd mon 'profile rbd' osd 'profile rbd' -o /etc/ceph/ceph.client.rbd.keyring

# 3. 创建RBD镜像(1G)
rbd create images_pool/webapp1 --size 1G

# 4. 查看镜像
rbd ls images_pool
rbd pool stats images_pool

3. 访问 RBD 存储

(1)KRBD 方式(内核模块)
bash 复制代码
# 1. 客户端准备(复制配置和密钥环)
scp root@ceph1:/etc/ceph/{ceph.conf,ceph.client.rbd.keyring} /etc/ceph/
export CEPH_ARGS='--id=rbd'

# 2. 映射镜像
rbd map images_pool/webapp1  # 设备路径/dev/rbd0

# 3. 格式化并挂载
mkfs.xfs /dev/rbd0
mkdir -p /webapp/webapp1
mount /dev/rbd0 /webapp/webapp1

# 4. 验证
echo "Hello RBD" > /webapp/webapp1/index.html
df /webapp/webapp1

# 5. 取消映射
umount /webapp/webapp1
rbd unmap /dev/rbd0
(2)持久映射(rbdmap 服务)
bash 复制代码
# 1. 配置rbdmap
vim /etc/ceph/rbdmap
images_pool/webapp1 id=rbd,keyring=/etc/ceph/ceph.client.rbd.keyring

# 2. 配置fstab
echo "/dev/rbd/images_pool/webapp1 /webapp/webapp1 xfs _netdev 0 0" >> /etc/fstab

# 3. 启用服务
systemctl enable rbdmap.service --now

# 4. 验证(重启后)
lsblk /dev/rbd0

4. RBD 缓存

(1)缓存模式
  • writearound(默认):写入不经过缓存
  • write-back(回写):缓存写入完成即确认
  • write-through(直写):缓存写入后刷盘确认
(2)核心参数
bash 复制代码
# 查看参数
for arg in $(ceph config ls|grep rbd_cache);do echo -n "$arg: "; ceph config get client $arg;done

# 设置缓存模式为直写
ceph config set client rbd_cache_policy writethrough

5. RBD 镜像管理

bash 复制代码
# 查看镜像状态(谁在使用)
rbd status images_pool/webapp1

# 查看镜像大小使用
rbd du images_pool/webapp1

# 扩展镜像(1G→2G)
rbd resize images_pool/webapp1 --size 2G
xfs_growfs /webapp/webapp1  # 扩展文件系统

# 缩减镜像(需--allow-shrink)
rbd resize images_pool/webapp1 --size 1G --allow-shrink

# 重命名镜像
rbd rename images_pool/webapp2 images_pool/webapp02

# 复制镜像(跨池)
rbd cp images_pool/webapp2 images_pool_2/webapp2

# 垃圾箱管理
rbd trash mv images_pool/webapp2  # 移入垃圾箱
rbd trash ls images_pool  # 查看垃圾箱
rbd trash restore -p images_pool <镜像ID>  # 恢复
rbd trash rm -p images_pool <镜像ID>  # 彻底删除

# 删除镜像
rbd rm images_pool_2/webapp2

6. RBD 快照与克隆

(1)快照管理
bash 复制代码
# 1. 卸载文件系统(或冻结)
umount /webapp/webapp1

# 2. 创建快照
rbd snap create images_pool/webapp1@snap1

# 3. 查看快照
rbd snap ls images_pool/webapp1

# 4. 挂载快照(只读)
rbd map images_pool/webapp1@snap1
mount /dev/rbd1 /webapp/webapp1-snap1

# 5. 回滚快照
rbd snap rollback images_pool/webapp1@snap1

# 6. 删除快照
rbd snap rm images_pool/webapp1@snap1

# 7. 删除所有快照
rbd snap purge images_pool/webapp1
(2)克隆管理
bash 复制代码
# 1. 创建并保护快照
rbd snap create images_pool/webapp1@snap1
rbd snap protect images_pool/webapp1@snap1

# 2. 克隆快照
rbd clone images_pool/webapp1@snap1 images_pool/webapp1-clone

# 3. 查看克隆的父快照
rbd children images_pool/webapp1@snap1

# 4. 扁平化克隆(脱离父快照)
rbd flatten images_pool/webapp1-clone

# 5. 修改克隆UUID(避免冲突)
xfs_admin -U $(uuidgen) /dev/rbd2

7. RBD 镜像导入与导出

bash 复制代码
# 导出镜像
rbd export images_pool/webapp1 webapp1.img

# 导入镜像
rbd import webapp1.img images_pool/webapp1-backup

# 管道导出导入(跨集群)
rbd export images_pool/webapp1 - | ssh root@ceph4 rbd import - images_pool/webapp1-backup

8. RBD 镜像差异(export-diff/import-diff)

bash 复制代码
# 导出快照间差异(snap1→snap2)
rbd export-diff --from-snap snap1 images_pool/webapp1@snap2 snap1-snap2.diff

# 导入差异
rbd import-diff snap1-snap2.diff images_pool/webapp1

9. 配置 RBD Mirrors(镜像同步)

(1)单向同步(主备集群)
bash 复制代码
# 主集群(ceph1)
radosgw-admin realm create --rgw-realm=webapp --default
radosgw-admin zonegroup create --rgw-realm=webapp --rgw-zonegroup=video --master --default
radosgw-admin zone create --rgw-realm=webapp --rgw-zonegroup=video --rgw-zone=storage1 --master --default
radosgw-admin period update --rgw-realm=webapp --commit
ceph orch apply rbd-mirror --placement=ceph1.laogao.cloud
radosgw-admin user create --uid=system-user --display-name=system-user --access-key=laogao@123 --secret=Huawei12#$ --system
radosgw-admin zone modify --rgw-realm=webapp --rgw-zonegroup=video --rgw-zone=storage1 --endpoints 'http://ceph1:8080' --access-key=laogao@123 --secret=Huawei12#$

# 备集群(ceph4)
radosgw-admin realm pull --url=http://ceph1:8080 --access-key=laogao@123 --secret=Huawei12#$
radosgw-admin period pull --url=http://ceph1:8080 --access-key=laogao@123 --secret=Huawei12#$
radosgw-admin zone create --rgw-zonegroup=video --rgw-zone=storage2 --endpoints 'http://ceph4:8080' --access-key=laogao@123 --secret=Huawei12#$
ceph orch apply rbd-mirror --placement=ceph4.laogao.cloud
ceph config set client.rgw.webapp.ceph4 rgw_realm webapp rgw_zonegroup video rgw_zone storage2
radosgw-admin period update --commit

# 验证同步
rbd mirror pool status
(2)双向同步
  • 主备集群均部署 rbd-mirror,导入 token 时指定--direction rx-tx,其余步骤参考单向同步

Ceph 分布式存储 对象存储管理

1. 对象存储介绍

  • 核心:对象(Key+Metadata+Data)、桶(扁平命名空间,存储对象)
  • 特征:接入灵活(API/SDK)、HTTP/HTTPS 访问、网络无限制、结构扁平化

2. RADOS 网关(RGW)介绍

(1)核心功能
  • 兼容 S3/Swift API,提供 RESTful 接口
  • 守护进程:radosgw,基于 librados,支持多站点复制
  • 默认池:.rgw.root.default.rgw.control.default.rgw.meta.default.rgw.log.default.rgw.buckets.index.default.rgw.buckets.data
(2)架构
  • 域(Realm):全局命名空间
  • 区域组(Zone Group):多个区域集合,主区域组处理元数据更新
  • 区域(Zone):关联 RGW 和 Ceph 集群,主区域复制数据到次要区域
(3)用例
  • 大规模数据存储、云存储服务、备份归档、大数据分析、多媒体分发、容器存储、灾难恢复、混合云、科学计算、物联网数据存储

3. RGW 部署

(1)创建对象存储域 / 区域组 / 区域
bash 复制代码
# 1. 创建Realm
radosgw-admin realm create --rgw-realm=webapp --default

# 2. 创建Zone Group(主)
radosgw-admin zonegroup create --rgw-realm=webapp --rgw-zonegroup=video --master --default

# 3. 创建Zone(主)
radosgw-admin zone create --rgw-realm=webapp --rgw-zonegroup=video --rgw-zone=storage --master --default

# 4. 提交配置
radosgw-admin period update --rgw-realm=webapp --commit
(2)部署 RGW 服务
bash 复制代码
# 命令行部署(3个实例,端口8080)
ceph orch apply rgw webapp --placement="3 ceph1 ceph2 ceph3" --realm=webapp --zone=storage --port=8080

# 服务文件部署(rgw_service.yaml)
cat > rgw_service.yaml << EOF
service_type: rgw
service_id: webapp
service_name: rgw.webapp
placement:
  count: 3
  hosts:
    - ceph1.laogao.cloud
    - ceph2.laogao.cloud
    - ceph3.laogao.cloud
spec:
  rgw_frontend_port: 8080
EOF
ceph orch apply -i rgw_service.yaml

# 验证
ceph orch ls rgw
curl http://ceph1:8080  # 返回XML格式

4. 管理 RGW 用户

(1)创建用户
bash 复制代码
# 创建用户(指定密钥)
radosgw-admin user create --uid="operator" --display-name="S3 Operator" --access-key="12345" --secret="67890"

# 自动生成密钥
radosgw-admin user create --uid="s3user" --display-name="Amazon S3 User"

# 查看用户
radosgw-admin user list
radosgw-admin user info --uid=operator
(2)密钥管理
bash 复制代码
# 重新生成密钥
radosgw-admin key create --uid=s3user --access-key="ZQI72JZZDTA8BRCQOLGK" --gen-secret

# 添加额外密钥
radosgw-admin key create --uid=s3user --gen-access-key

# 删除密钥
radosgw-admin key rm --uid=s3user --access-key="6WBR1FL8CBFX26KVRPPA"
(3)用户状态管理
bash 复制代码
# 暂停用户
radosgw-admin user suspend --uid=s3user

# 启用用户
radosgw-admin user enable --uid=s3user

# 修改用户信息
radosgw-admin user modify --uid=s3user --access=full

# 删除用户(--purge-data删除对象和桶)
radosgw-admin user rm --uid=s3user --purge-data

5. 使用 S3 API 访问

(1)安装客户端(awscli)
bash 复制代码
pip3 install awscli --trusted-host mirrors.aliyun.com -i https://mirrors.aliyun.com/pypi/simple/
(2)配置凭据
bash 复制代码
aws configure
# 输入access-key、secret-key,区域和输出格式留空
(3)管理桶和对象
bash 复制代码
# 创建桶
aws --endpoint=http://ceph1:8080 s3 mb s3://webapp

# 查看桶
aws --endpoint=http://ceph1:8080 s3 ls

# 上传对象(公开权限)
aws --endpoint=http://ceph1:8080 s3 cp Welcome.html s3://webapp/ --acl=public-read-write

# 查看对象
aws --endpoint=http://ceph1:8080 s3 ls s3://webapp

# 下载对象
aws --endpoint=http://ceph1:8080 s3 cp s3://webapp/Welcome.html /tmp/

# 递归下载桶
aws --endpoint=http://ceph1:8080 s3 cp s3://webapp /tmp --recursive

# 删除对象
aws --endpoint=http://ceph1:8080 s3 rm s3://webapp/Welcome.html

# 删除桶(需为空)
aws --endpoint=http://ceph1:8080 s3 rb s3://webapp

6. 配额管理

(1)用户配额
bash 复制代码
# 启用用户配额
radosgw-admin quota enable --quota-scope=user --uid=operator

# 设置最大对象数1024
radosgw-admin quota set --quota-scope=user --uid=operator --max-objects=1024

# 查看配额
radosgw-admin user info --uid=operator

# 禁用配额
radosgw-admin quota set --quota-scope=user --uid=operator --max-objects=-1
radosgw-admin quota disable --quota-scope=user --uid=operator
(2)桶配额
bash 复制代码
# 启用桶配额
radosgw-admin quota enable --quota-scope=bucket --bucket=webapp

# 设置最大容量10M
radosgw-admin quota set --quota-scope=bucket --bucket=webapp --max-size=10M

# 查看配额
radosgw-admin bucket stats --bucket=webapp

# 禁用配额
radosgw-admin quota set --quota-scope=bucket --bucket=webapp --max-size=-1
radosgw-admin quota disable --quota-scope=bucket --bucket=webapp
(3)全局配额
bash 复制代码
# 全局用户配额
radosgw-admin global quota set --quota-scope user --max-objects=2048
radosgw-admin global quota enable --quota-scope user

# 全局桶配额
radosgw-admin global quota set --quota-scope bucket --max-objects=2048
radosgw-admin global quota enable --quota-scope bucket

# 提交配置
radosgw-admin period update --commit
ceph orch restart rgw.webapp

7. 使用 Swift API 访问

(1)创建子用户
bash 复制代码
# 创建用户swift
radosgw-admin user create --uid=swift --display-name=swift

# 创建子用户swift:swift_rgw
radosgw-admin subuser create --uid=swift --subuser=swift:swift_rgw --access=full

# 创建Swift密钥
radosgw-admin key create --subuser=swift:swift_rgw --key-type=swift --gen-secret
(2)安装客户端(python-swiftclient
bash 复制代码
pip3 install python-swiftclient --trusted-host mirrors.aliyun.com -i https://mirrors.aliyun.com/pypi/simple/
(3)配置凭据
bash 复制代码
cat > swift.rc << EOF
export ST_AUTH=http://ceph1:8080/auth/1.0
export ST_USER=swift:swift_rgw
export ST_KEY=生成的secret_key
EOF
source swift.rc
(4)管理容器和对象
bash 复制代码
# 创建容器
swift post webapp

# 查看容器
swift list

# 上传对象
swift upload webapp Welcome.html

# 查看对象
swift list webapp

# 下载对象
swift download webapp Welcome.html

# 删除对象
swift delete webapp Welcome.html

# 删除容器
swift delete webapp

8. 多站点 RGW 配置

(1)架构选择
  • 多区域(Multi Zone):同一区域组,主区域复制到次要区域
  • 多区域组(Multi ZoneGroup):多个区域组,管理地理位置
  • 多域(Multi Realm):多个全局命名空间
(2)配置流程(主备集群)
bash 复制代码
# 主集群(ceph1)
radosgw-admin realm create --rgw-realm=webapp --default
radosgw-admin zonegroup create --rgw-realm=webapp --rgw-zonegroup=video --master --default
radosgw-admin zone create --rgw-realm=webapp --rgw-zone=storage1 --master --default --endpoints 'http://ceph1:8080'
radosgw-admin period update --rgw-realm=webapp --commit
ceph orch apply rgw webapp --placement="ceph1" --realm=webapp --zone=storage1 --port=8080

# 备集群(ceph4)
radosgw-admin realm pull --url=http://ceph1:8080 --access-key=主集群system-user密钥
radosgw-admin period pull --url=http://ceph1:8080 --access-key=主集群system-user密钥
radosgw-admin zone create --rgw-zonegroup=video --rgw-zone=storage2 --endpoints 'http://ceph4:8080'
ceph orch apply rgw webapp --placement="ceph4" --realm=webapp --zone=storage2 --port=8080
radosgw-admin period update --rgw-realm=webapp --commit

# 验证同步
radosgw-admin sync status
(3)故障转移
bash 复制代码
# 备集群升级为主区域
radosgw-admin zone modify --master --rgw-zone=storage2
radosgw-admin zonegroup modify --rgw-zonegroup=video --endpoints=http://ceph4:8080
radosgw-admin period update --commit

Ceph 分布式存储 文件系统存储管理

1. CephFS 介绍

  • 定义:兼容 POSIX 的并行文件系统,构建于 librados,支持多 MDS 和多文件系统
  • 核心组件:MDS(元数据管理)、数据池(存储文件数据)、元数据池(存储元数据)

2. 元数据服务器(MDS)

  • 运行模式:活跃 MDS(管理元数据)、备用 MDS(故障接管)
  • 配置选项:max_mds(最大活跃 MDS 数)、mds_cache_memory_limit(缓存内存限制)、mds_cache_size(最大索引节点数)
  • 配额:ceph.quota.max_bytes(最大字节数)、ceph.quota.max_files(最大文件数)

3. 客户端访问流程

  1. 客户端向 MON 认证并获取集群映射
  2. 客户端从映射获取活跃 MDS 信息
  3. 客户端向 MDS 请求文件元数据
  4. 客户端直连 OSD 访问文件数据

4. CephFS 部署

(1)手动部署
bash 复制代码
# 1. 创建数据池和元数据池
ceph osd pool create cephfs.cephfs1.data.1 32 32
ceph osd pool create cephfs.cephfs1.meta 32 32
ceph osd pool set cephfs.cephfs1.meta size 3  # 元数据池3副本

# 2. 创建CephFS
ceph fs new cephfs1 cephfs.cephfs1.meta cephfs.cephfs1.data.1

# 3. 添加额外数据池
ceph osd pool create cephfs.cephfs1.data.2 32 32
ceph fs add_data_pool cephfs1 cephfs.cephfs1.data.2

# 4. 部署MDS
ceph orch apply mds cephfs1 --placement="3 ceph1 ceph2 ceph3"

# 5. 验证
ceph fs ls
ceph fs status
ceph mds stat
(2)卷部署(简化)
bash 复制代码
# 部署3个MDS实例
ceph fs volume create cephfs2 --placement="3 ceph1 ceph2 ceph3"

# 验证
ceph fs ls
ceph orch ls mds
(3)删除 CephFS
bash 复制代码
# 1. 删除MDS服务
ceph orch rm mds.cephfs1

# 2. 标记文件系统为down
ceph fs set cephfs1 down true

# 3. 删除文件系统
ceph fs rm cephfs1 --yes-i-really-mean-it

# 4. 删除池
ceph config set mon mon_allow_pool_delete true
ceph osd pool rm cephfs.cephfs1.meta cephfs.cephfs1.meta --yes-i-really-really-mean-it

5. 挂载 CephFS

(1)Kernel 挂载
bash 复制代码
# 1. 客户端准备
dnf install -y ceph-common
scp root@ceph1:/etc/ceph/{ceph.conf,ceph.client.admin.keyring} /etc/ceph/

# 2. 挂载(指定用户和文件系统)
mkdir /mnt/cephfs1
mount.ceph ceph1.laogao.cloud:/ /mnt/cephfs1 -o name=admin,fs=cephfs1

# 3. 挂载特定子目录
mount -t ceph ceph1.laogao.cloud:/dir2 /mnt/cephfs1 -o name=admin,fs=cephfs1

# 4. 永久挂载(fstab)
echo "ceph1.laogao.cloud:/ /mnt/cephfs1 ceph name=admin,fs=cephfs1,_netdev 0 0" >> /etc/fstab

# 5. 卸载
umount /mnt/cephfs1
(2)FUSE 挂载(支持配额和 ACL)
bash 复制代码
# 1. 安装ceph-fuse
dnf install -y ceph-fuse

# 2. 挂载
ceph-fuse -n client.admin /mnt/cephfs1

# 3. 挂载特定子目录
ceph-fuse -n client.admin -r /dir2 /mnt/cephfs1

# 4. 永久挂载(fstab)
echo "ceph1.laogao.cloud /mnt/cephfs1 fuse.ceph ceph.id=admin,_netdev 0 0" >> /etc/fstab

# 5. 卸载
umount /mnt/cephfs1

6. 管理 CephFS

(1)快照管理
bash 复制代码
# 1. 启用/禁用快照功能
ceph fs set cephfs1 allow_new_snaps true/false

# 2. 创建快照(需s权限)
ceph auth caps client.admin mds "allow rwps fsname=cephfs1"
mkdir /mnt/cephfs1/.snap/snap1

# 3. 从快照恢复文件
cp /mnt/cephfs1/.snap/snap1/file /restore/

# 4. 删除快照
rmdir /mnt/cephfs1/.snap/snap1
(2)CephFS Mirror(文件系统镜像)
bash 复制代码
# 前提:源和目标集群均为Pacific+版本,已部署CephFS

# 源集群(ceph1)
ceph orch apply ceph

# 3. 删除文件系统
ceph fs rm cephfs1 --yes-i-really-mean-it

# 4. 删除池
ceph config set mon mon_allow_pool_delete true
ceph osd pool rm cephfs.cephfs1.meta cephfs.cephfs1.meta --yes-i-really-really-mean-it

5. 挂载 CephFS

(1)Kernel 挂载
bash 复制代码
# 1. 客户端准备
dnf install -y ceph-common
scp root@ceph1:/etc/ceph/{ceph.conf,ceph.client.admin.keyring} /etc/ceph/

# 2. 挂载(指定用户和文件系统)
mkdir /mnt/cephfs1
mount.ceph ceph1.laogao.cloud:/ /mnt/cephfs1 -o name=admin,fs=cephfs1

# 3. 挂载特定子目录
mount -t ceph ceph1.laogao.cloud:/dir2 /mnt/cephfs1 -o name=admin,fs=cephfs1

# 4. 永久挂载(fstab)
echo "ceph1.laogao.cloud:/ /mnt/cephfs1 ceph name=admin,fs=cephfs1,_netdev 0 0" >> /etc/fstab

# 5. 卸载
umount /mnt/cephfs1
(2)FUSE 挂载(支持配额和 ACL)
bash 复制代码
# 1. 安装ceph-fuse
dnf install -y ceph-fuse

# 2. 挂载
ceph-fuse -n client.admin /mnt/cephfs1

# 3. 挂载特定子目录
ceph-fuse -n client.admin -r /dir2 /mnt/cephfs1

# 4. 永久挂载(fstab)
echo "ceph1.laogao.cloud /mnt/cephfs1 fuse.ceph ceph.id=admin,_netdev 0 0" >> /etc/fstab

# 5. 卸载
umount /mnt/cephfs1

6. 管理 CephFS

(1)快照管理
bash 复制代码
# 1. 启用/禁用快照功能
ceph fs set cephfs1 allow_new_snaps true/false

# 2. 创建快照(需s权限)
ceph auth caps client.admin mds "allow rwps fsname=cephfs1"
mkdir /mnt/cephfs1/.snap/snap1

# 3. 从快照恢复文件
cp /mnt/cephfs1/.snap/snap1/file /restore/

# 4. 删除快照
rmdir /mnt/cephfs1/.snap/snap1
(2)CephFS Mirror(文件系统镜像)
bash 复制代码
# 前提:源和目标集群均为Pacific+版本,已部署CephFS

# 源集群(ceph1)
ceph orch apply ceph
相关推荐
Leinwin5 小时前
OpenClaw 多 Agent 协作框架的并发限制与企业化规避方案痛点直击
java·运维·数据库
2401_865382505 小时前
信息化项目运维与运营的区别
运维·运营·信息化项目·政务信息化
漠北的哈士奇5 小时前
VMware Workstation导入ova文件时出现闪退但是没有报错信息
运维·vmware·虚拟机·闪退·ova
如意.7595 小时前
【Linux开发工具实战】Git、GDB与CGDB从入门到精通
linux·运维·git
运维小欣6 小时前
智能体选型实战指南
运维·人工智能
yy55276 小时前
Nginx 性能优化与监控
运维·nginx·性能优化
爱吃土豆的马铃薯ㅤㅤㅤㅤㅤㅤㅤㅤㅤ7 小时前
Linux 查询某进程文件所在路径 命令
linux·运维·服务器
盐水冰7 小时前
【烘焙坊项目】后端搭建(12) - 订单状态定时处理,来单提醒和顾客催单
java·后端·学习
Hello小赵7 小时前
视频压缩编码学习(一)—— 基础知识大集合
学习
左左右右左右摇晃7 小时前
计算机网络笔记整理
笔记·计算机网络