个人用云计算学习笔记 --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
相关推荐
oMcLin2 小时前
如何在 Linux 上打开和编辑 Apple iWork 文件(增强版)
linux·运维·服务器
Ares-Wang2 小时前
网络》》FTP、TFTP、Telnet DHCP
运维·服务器·网络
艾莉丝努力练剑2 小时前
【Linux进程(七)】进程虚拟地址空间详解:从概念到实现与设计哲学
java·linux·运维·服务器·人工智能·安全·进程
AI视觉网奇2 小时前
Audio2Face 实时推理
笔记·ue5
曼诺尔雷迪亚兹2 小时前
微服务启动失败:Nacos 403(unknown user)与配置拉取失败故障双排查
java·运维·微服务
❀͜͡傀儡师2 小时前
Docker 部署 OpenVidu
运维·docker·容器·openvidu
iconball2 小时前
个人用云计算学习笔记 --36 MySQL
运维·笔记·学习·云计算
SadSunset2 小时前
Spring框架全面学习总结
java·学习·spring
日更嵌入式的打工仔2 小时前
linux内核查看网口负荷的指令
linux·服务器·笔记