一、Ceph基础
1.1 ceph简介
Ceph 是一个开源的分布式存储系统,同时支持对象存储、文件系统、块设备。

ceph把每一个待管理的数据流(文件等数据)切分为一到多个固定大小(默认4兆)的对象数据,并以其为原子单元(原子是构成元素的最小单元)完成数据读写。
ceph的底层存储服务是由多个存储主机组成的存储集群,该集群也被称为RADOS(reliable automatic distributed obeject store)存储集群,即可靠的、自动化的、分布式的对象存储系统。
librados是RADOS存储集群的API,支持C/C++/JAVA/Python/ruby/php/go等编程语言客户端。
Ceph 独特地在一个统一系统中提供对象、块和文件存储。Ceph 高度可靠、易于管理且免费。Ceph 提供了卓越的可扩展性——数千个客户端访问 PB 到 EB 级别的数据。一个 Ceph 节点利用商用硬件和智能守护程序,而一个Ceph 存储集群 容纳大量节点,这些节点彼此通信以动态复制和重新分配数据。

1.2 ceph的组成部分
Ceph 存储集群需要以下组件:至少一个 Ceph Monitor 和至少一个 Ceph Manager,以及至少与 Ceph 集群中存储的给定对象副本数一样多的Ceph 对象存储守护进程(OSD)(例如,如果 Ceph 集群中存储了给定对象的三个副本,则该 Ceph 集群中必须至少存在三个 OSD)。
Ceph 元数据服务器对于运行 Ceph 文件系统客户端是必需的。
- Monitors:Ceph Monitor (
ceph-mon) 维护集群状态的地图(maintains maps of the cluster status),包括monitor 地图、manager 地图、OSD 地图、MDS 地图和 CRUSH 地图。这些地图是 Ceph 守护进程相互协调所需的关键集群状态。Monitors 还负责管理守护进程和客户端之间的身份验证。通常需要至少三个 monitors 以实现冗余和高可用性。 - Managers:Ceph Manager 守护进程 (
ceph-mgr) 负责跟踪运行时指标和 Ceph 集群的当前状态,包括存储利用率、当前性能指标和系统负载。Ceph Manager 守护进程还托管基于 python 的模块,用于管理和公开 Ceph 集群信息,包括基于 web 的Ceph Dashboard。通常需要至少两个 managers 以实现高可用性。 - Ceph OSDs:对象存储守护进程 Ceph OSD,
ceph-osd) 存储数据,处理数据复制、恢复、再平衡,并通过检查其他 Ceph OSD 守护进程的心跳来向 Ceph Monitors 和 Managers 提供一些监控信息。通常需要至少三个 Ceph OSD 以实现冗余和高可用性。 - MDSes:Ceph 元数据服务器 (MDS,
ceph-mds) 存储Ceph 文件系统的元数据。Ceph 元数据服务器允许 CephFS 用户运行基本命令(如ls、find等),而不会给 Ceph 存储集群带来负担。 - RGWs:Ceph 对象网关(RGW,
ceph-radosgw) 守护进程提供应用程序和 Ceph 存储集群之间的 RESTful 网关。S3 兼容 API 是最常用的,但也提供 Swift API。
Ceph 将数据存储为逻辑存储池中的对象。使用 CRUSH算法,Ceph 计算哪个 placement group (PG) 应该包含该对象,以及哪个 OSD 应该存储该 placement group。CRUSH 算法使 Ceph 存储集群能够动态扩展、再平衡和恢复。
ceph的管理节点:ceph的常用管理接口是一组命令行工具程序,例如rados、ceph、rbd等命令,ceph 管理员可以从某个特定的ceph-mon节点执行管理操作
1.3 ceph的逻辑架构
Pool:存储池、存储数据的逻辑环境(不能直接对应OSD)、不同业务可以使用不同的存储池隔离数据(类似于k8s的namespace),存储池的空间大小取决于底层物理存储空间的大小。
PG(placement group): 一个pool内部通常有多个PG存在,pool和PG都是抽象的逻辑概念,一个pool中有多少个PG可以通过公式粗略计算。
OSD(Object Storage Daemon,对象存储设备):每一个磁盘都是一个osd,一个主机由一个或多个osd组成。
ceph集群部署好之后,要先创建存储池并指定PG数量、才能向ceph写入数据,文件在向ceph保存之前要先进行一致性hash计算,计算后会把文件保存在某个对应的PG,此文件一定属于某个pool的一个PG,在通过PG保存在OSD上。
数据对象在写到主OSD之后在同步从OSD实例以实现数据的高可用。
池
Ceph 存储系统支持“池”的概念,池是用于存储对象的逻辑分区。
Ceph 客户端从 Ceph Monitor 检索 集群映射,并将 RADOS 对象写入池。Ceph 在池中放置数据的方式由池的 size 或副本数、CRUSH 规则以及池中的放置组数决定。

池至少设置以下参数
- 对象的所有权/访问权限
- 放置组的数量
- 要使用的 CRUSH 规则。
将 PG 映射到 OSD
每个池中都有许多放置组 (PG)。CRUSH 动态地将 PG 映射到 OSD。当 Ceph 客户端存储对象时,CRUSH 将每个 RADOS 对象映射到一个 PG。
这种 RADOS 对象到 PG 的映射实现了 Ceph OSD Daemon 和 Ceph 客户端之间的抽象和间接层。当内部拓扑发生变化时,Ceph 存储集群必须能够增长(或收缩)并自适应地重新分配数据。
如果 Ceph 客户端“知道”哪个 Ceph OSD Daemon 正在存储哪个对象,那么 Ceph 客户端和 Ceph OSD Daemon 之间就会存在紧密耦合。但是 Ceph 避免了这种紧密耦合。相反,CRUSH 算法将每个 RADOS 对象映射到放置组,然后将每个放置组映射到一个或多个 Ceph OSD Daemon。当新的 Ceph OSD Daemon 及其底层 OSD 设备上线时,这种“间接层”允许 Ceph 动态地重新平衡。下图显示了 CRUSH 算法如何将对象映射到放置组,以及如何将放置组映射到 OSD。

客户端使用其集群映射副本和 CRUSH 算法来精确计算读取或写入特定对象时将使用哪个 OSD
二、部署ceph集群
2.1 部署方式
ceph-ansible: https://github.com/ceph/ceph-ansible # python
ceph-salt: https://github.com/ceph/ceph-salt # python
ceph-container: https://github.com/ceph-container # shell
cephadm: https://docs.ceph.com/en/cephadm # ceph 15版本加入
最低硬件配置
Cephadm 是一个可用于安装和管理 Ceph 集群的工具。
- cephadm 仅支持 Octopus 及更高版本。
- cephadm 与编排 API 完全集成,并完全支持用于管理集群部署的 CLI 和仪表板功能。
- cephadm 需要容器支持(以 Podman 或 Docker 的形式)和 Python 3。
- cephadm 需要 systemd。
Rook 部署和管理运行在 Kubernetes 中的 Ceph 集群,同时还通过 Kubernetes API 实现存储资源的管理和配置。我们推荐使用 Rook 作为在 Kubernetes 中运行 Ceph 或将现有 Ceph 存储集群连接到 Kubernetes 的方式。
- Rook 仅支持 Nautilus 及更高版本的 Ceph。
- Rook 是在 Kubernetes 上运行 Ceph 或将 Kubernetes 集群连接到现有(外部)Ceph 集群的首选方法。
- Rook 支持编排器 API。CLI 和仪表板中的管理功能得到全面支持。
cephadm 是用于管理 Ceph 集群的实用程序。
以下是 cephadm 可以执行的一些操作列表
cephadm可以向集群添加 Ceph 容器。cephadm可以从集群中删除 Ceph 容器。cephadm可以更新 Ceph 容器。
cephadm 不依赖于 Ansible、Rook 或 Salt 等外部配置工具。但是,这些外部配置工具可用于自动化非 cephadm 本身执行的操作。要了解有关这些外部配置工具的更多信息,请访问它们的页面
cephadm 管理 Ceph 集群的完整生命周期。这个生命周期始于引导过程,此时 cephadm 在单个节点上创建一个小型 Ceph 集群。该集群由一个监视器和一个管理器组成。cephadm 随后使用编排接口扩展集群,添加主机并配置 Ceph 守护程序和服务。此生命周期的管理可以通过 Ceph 命令行界面 (CLI) 或仪表板 (GUI) 执行。
cephadm 是在 Ceph v15.2.0 (Octopus) 版本中引入的,不支持较旧版本的 Ceph。
网络配置参考
仔细的网络基础设施和配置对于构建弹性、高性能的Ceph 存储集群至关重要。Ceph 存储集群不会代表Ceph 客户端执行请求路由或分派。相反,Ceph 客户端直接向 Ceph OSD 守护进程发出请求。Ceph OSD 代表 Ceph 客户端执行数据复制,这会给 Ceph 网络带来额外负载。
我们的快速入门配置提供了一个最小的 Ceph 配置文件,其中包括 Monitor IP 地址和守护进程主机名。除非您指定集群网络,否则 Ceph 假定使用单个“公共”网络。在许多部署中,仅使用公共网络,Ceph 也能正常工作,尤其是在使用 25GE 或更快网络链接的情况下。对于客户端流量较高的集群,通过配置第二个专用网络可以显著提高弹性和性能。
可以使用两个网络运行 Ceph 存储集群:一个“公共”(“客户端”、“前端”)网络和一个“集群”(“专用”、“复制”、“后端”)网络。然而,这种方法使网络配置、成本和管理复杂化,并且通常可能对整体性能没有显著影响。如果使用的网络技术按现代标准来看较慢(例如 1GE,或者对于密集或 SSD 节点为 10GE),您可能希望绑定两个以上的链接以获得足够的吞吐量和/或实现专用的复制网络。
我们建议为了弹性和容量,网络接口应进行绑定并连接到冗余交换机。绑定应为主动/主动(active/active),或使用 FRR 或类似技术实现第 3 层多路径策略。使用 LACP 绑定时,咨询您的组织网络团队以确定正确的传输散列策略非常重要,通常为 2+3 或 3+4。错误的选择可能导致网络链接利用不平衡,吞吐量仅为可用吞吐量的一小部分。网络可观察性工具,包括
bmon、iftop和netstat,对于确保绑定成员链接得到充分利用非常宝贵。如果尽管存在复杂性,仍希望为 Ceph 集群配置专用复制网络,则每个Ceph 节点将需要有多个网络接口或 VLAN。有关更多详细信息,请参阅硬件推荐 - 网络。

2.2 cephadm部署ceph集群
Cephadm 通过引导单个主机来创建新的 Ceph 集群,将集群扩展到包含任何额外的主机,然后部署所需的服务。
要求
- Python 3
- Systemd
- 用于运行容器的 Podman 或 Docker
- 时间同步(例如 Chrony 或旧版
ntpd)- 用于配置存储设备的 LVM2
任何现代 Linux 发行版都应该足够。依赖项将通过下面的引导过程自动安装。
有关允许重启 Docker 引擎而无需重启所有正在运行的容器的可选功能,请参阅 Docker Live Restore。
有关 Ceph 版本与 Podman 兼容性的表格,请参阅 与 Podman 版本的兼容性 部分。并非所有版本的 Podman 都与 Ceph 兼容。
安装 cephadm
安装 cephadm 时有两个关键步骤:首先需要获取 cephadm 的初始副本,然后第二步是确保您拥有最新的 cephadm。获取初始
cephadm的方法有两种
特定发行版的安装方法
特定仓库
基于 curl 的安装方法
CEPH_RELEASE=18.2.0 # replace this with the active release
curl –silent –remote-name –location https://download.ceph.com/rpm-${CEPH_RELEASE}/el9/noarch/cephadm
系统环境初始化:
时间同步
关闭selinux和防火墙(centos)
配置主机域名解析或通过DNS解析
配置节点间免密
安装docker
Ubuntu 22.04 默认使用 systemd-timesyncd 进行时间同步,通过 timedatectl 管理。{下面发现问题改用 chrony }
1 | # 查看当前时间同步状态 |
1 | apt install chrony -y |
2.2.1 配置网络(所有节点)
集群规划:
2.1.2 节点规划
| 角色 | 主机名 | 业务网络 (Public) | 存储网络 (Cluster) | 说明 |
|---|---|---|---|---|
| Monitor + Manager + OSD | ceph-node1 | 10.10.0.230/24 | 192.168.75.230/24 | 引导节点(Bootstrap) |
| Monitor + Manager + OSD | ceph-node2 | 10.10.0.231/24 | 192.168.75.231/24 | — |
| Monitor + Manager + OSD | ceph-node3 | 10.10.0.232/24 | 192.168.75.232/24 | — |
2.1.3 网络规划
| 网络类型 | 网段 | 网卡示例 | 用途 |
|---|---|---|---|
| Public Network(业务网络) | 10.10.0.0/24 | ens33 | 客户端访问、Monitor 通信、可访问外网 |
| Cluster Network(存储网络) | 192.168.75.0/24 | ens37 | OSD 数据复制、恢复、回填流量 |
2.1.4 下载cephadm(仅 Bootstrap 节点)
https://download.ceph.com/
1 | root@ceph-node1:~# curl -O https://download.ceph.com/debian-20.2.1/pool/main/c/ceph/cephadm_20.2.1-1noble_amd64.deb |
2.1.5 初始化ceph集群
1 | cephadm bootstrap \ |
1 | root@ceph-node1:~# cephadm bootstrap --mon-ip 10.10.0.230 --cluster-network 192.168.75.0/24 --allow-fqdn-hostname |
宿主机安装管理命令common
1 | root@ceph-node1:~# cephadm add-repo --release tentacle |
分发ceph密钥
1 | root@ceph-node1:~# ssh-copy-id -f -i /etc/ceph/ceph.pub root@ceph-node1 |
2.1.6 添加主机
1 | root@ceph-node1:~# cephadm shell ceph orch host add ceph-node2 10.10.0.231 |
添加到集群的主机默认都部署了mon服务
常用命令
·查看集群主机·
ceph orch host ls
·调整mon 节点·
会中止其他节点的mon服务,到指定节点起mon服务
ceph orch apply mon mon1-hostname mon2-hostname mon3-hostname
·列出所有当前存储在 Monitor 配置数据库中的配置选项及其值·
ceph config dump
·列出主机磁盘设备·
ceph orch device ls
·重启osd daemon·
ceph orch daemon restart osd.2
ceph orch host rescan ceph-node3
·开启/关闭自动部署 osd service spec·
ceph orch apply osd --all-available-devices
ceph orch rm osd.all-available-devices
只删除自动部署规则,不会删除已经创建的 OSD
root@ceph-node1:
# ceph orch rm osd.all-available-devices# ceph orch rm osd.all-available-devices –force
Error EINVAL: If osd.all-available-devices is removed then the following OSDs will remain, –force to proceed anyway
host ceph-node3: osd.2
root@ceph-node1:
1 | root@ceph-node1:~# ceph orch device ls |
2.1.7 部署OSD
数据分类保存方式:
Data: ceph保存的数据对象
Block: rocks DB数据即元数据
block-wal: 数据库的wal日志
1 | # 方式一:自动部署所有可用磁盘(推荐) |
1 | root@ceph-node1:~# ceph orch daemon add osd ceph-node1:/dev/nvme0n1 |
1 | root@ceph-node1:/var/lib/ceph/32e044ec-8fb1-11f1-a636-000c29b8ae8b/osd.0# ls -l |
时间同步和互联网同步时间的节点作为server 其他节点同步存在时间偏移
1 | # 临时放宽到 1 秒 |
1 | root@ceph-node1:~# ceph orch daemon add --help |
不清楚为什么node1节点有个daemon stop的使用下面的命令,提示把正在运行的node3节点的osd.2删除了
ceph orch daemon rm osd.2 --host ceph-node1 --force
数据在的lvm 正常,加入不了直接删了
现在 cephadm 已经没有 osd.2 daemon,所以直接:
1 ceph osd out 2然后删除:
1 ceph osd crush remove osd.2删除认证:
1 ceph auth del osd.2删除 OSD:
1 ceph osd rm 2
1
2
3
4
5 lvremove -y /dev/ceph-ece6de67-8e56-4e59-89e4-823558549b5d/osd-block-2e0fe218-8b07-41f5-849b-af99538a3000
vgremove -y ceph-ece6de67-8e56-4e59-89e4-823558549b5d
root@ceph-node3:~# pvremove /dev/nvme0n1
Labels on physical volume "/dev/nvme0n1" successfully wiped.
root@ceph-node3:~# wipefs -a /dev/nvme0n1重新加入
1
2 ceph orch daemon add osd ceph-node3:/dev/nvme0n1
ceph orch device zap ceph-node3 /dev/nvme0n1 --force

2.3 grafana初始化
默认情况下,Grafana不会创建初始管理员用户。为了创建管理员用户,请创建一个grafana.yaml
1 | root@ceph-node1:~# cat grafana.yaml |
访问Grafana:https://10.10.0.231:3000/
2.4 从RADOS移除OSD
Ceph集群中的一个OSD是一个node节点的服务进程对应一个磁盘设备,是一个专用的守护进程,在某个OSD设备出现故障,管理员出于管理的需要,需要移除特定的OSD设备时,需要先停止相关的守护进程,然后再进行移除操作。
1 | #停用设备 |
三、存储池管理
3.1 创建存储池
1 | # 创建存储池 |
3.2 客户端挂在块存储
安装ceph-common
1 | root@client:~# apt update |


3.2.1 验证数据 :
1 | ceph df |
3.2.2删除数据
1 | rm -rf /data/* |
1 | # PG与PGP组合 |
四、 Ceph 对象存储网关
RGW 提供的是REST风格的API接口,客户端通过http与其进行交互,完成数据的增删改查等管理操作。
radosgw用在需要使用RESTful API接口访问ceph数据的场合,因此在使用RBD即块存储的场合或者使用cephFS的可以不启用radosgw功能。
4.1 ceph radosgw(RGW)对象存储网关
Ceph RADOS Gateway (RGW) 是基于 RADOS 之上构建的对象存储接口,支持 Amazon S3 和 OpenStack Swift API。
4.1.1部署radosgw服务
在 cephadm 环境中,可以通过应用规范文件 (Spec File) 或命令行快速部署 RGW 服务。
在首次部署 RGW 之前,必须显式建立 Ceph RGW 的三级组织架构,并提交配置(Period)。
1 创建 Realm(领域)
1 | radosgw-admin realm create --rgw-realm=default --default |
2 创建Zonegroup(区域组)并绑定 Realm
1 | radosgw-admin zonegroup create --rgw-zonegroup=default --rgw-realm=default --master --default |
3 创建 Zone(区域)并绑定 Zonegroup 与 Realm
1 | radosgw-admin zone create --rgw-zonegroup=default --rgw-zone=default --rgw-realm=default --master --default |
4 提交 Period(配置生效)
1 | radosgw-admin period update --commit |
确认标志:输出中包含
"current_period"以及"epoch": 1(或更高的数字),且无错误提示。
部署 RGW 守护进程服务
底层的元数据链路打通后,使用 cephadm 自动化部署容器化 RGW 服务。
5 部署 RGW 服务
在主控节点上运行以下命令,指定端口(如 8000)及运行主机:
1 | ceph orch apply rgw site-rgw --realm=default --zone=default --placement="2 ceph-node1 ceph-node2" --port=8000 |
方法一:通过 CLI 部署
使用 ceph orch apply rgw 命令指定服务名称、绑定的 Realm/Zone、节点选择器及端口:
1 | 1. 将 Zonegroup 关联到 default Realm |
方法二:通过 YAML 规范文件部署(推荐)
- 创建规范文件
rgw-spec.yaml:
1 | service_type: rgw |
- 应用规范文件:
1 | ceph orch apply -i rgw-spec.yaml |
4.1.2:验证radosgw服务
部署完成后,检查 cephadm 管理的服务状态以及运行中的容器容器状态。
- 查看 RGW 服务列表:
1 | ceph orch ls --service_type=rgw |
预期输出:
1 | NAME PORTS RUNNING REFRESHED AGE PLACEMENT |
- 查看守护进程运行状态:
1 | ceph orch ps --daemon_type=rgw |
- 测试 HTTP 响应:
使用 curl 验证 RGW 服务端点:
1 | curl http://node1:8000 |
预期返回 XML 格式响应(如 <ListAllMyBucketsResult>),说明 RGW 接口服务已成功响应 HTTP 请求。
- 创建对象存储用户与密钥(测试用):
1 | ceph orchestrator daemon restart rgw.site-rgw.node1.xxxxxx |
4.1.3:验证ceph状态
确认添加 RGW 服务后,集群整体健康状态正常。
1 | ceph -s |
预期输出示例:
1 | cluster: |
确保 health 显示为 HEALTH_OK,且 rgw 字段显示正确的活跃 Daemon 数量。
4.1.4:验证radosgw存储池
RGW 服务初始化时会自动创建一系列默认的系统存储池(Pools)。
- 列出所有 RADOS 存储池:
1 | ceph df |
自动生成的 RGW 存储池包含:
.rgw.root:存储全局配置与 Realm/Zonegroup/Zone 元数据default.rgw.main.poolsdefault.rgw.control:控制流通知default.rgw.meta:用户与 Bucket 元数据default.rgw.log:日志与操作审计default.rgw.buckets.data:实际存储对象数据的默认池default.rgw.buckets.index:Bucket 索引与清册
检查存储池 PG 状态与应用类型:
1 | ceph osd pool application get default.rgw.buckets.data |
预期输出:
1 | { |
4.2 Ceph-FS文件存储
Ceph File System (CephFS) 是一个符合 POSIX 标准的文件系统,依赖 MDS (Metadata Server) 守护进程来管理目录树和文件元数据。构建于 Ceph 的分布式对象存储 RADOS 之上。CephFS 致力于为各种应用提供一个先进、多用途、高可用且高性能的文件存储,包括共享主目录、HPC 暂存空间和分布式工作流共享存储等传统用例。
可以实现文件系统共享功能,客户端通过ceph协议挂载并使用,ceph 集群作为数据存储服务器。
ephFS 通过新颖的架构选择实现了这些目标。值得注意的是,文件元数据存储在与文件数据分开的 RADOS 存储池中,并通过一个可调整大小的元数据服务器(简称 MDS)集群提供服务,该集群可以扩展以支持更高吞吐量的工作负载。文件系统的客户端可以直接访问 RADOS 来读取和写入文件数据块。这使得工作负载能够随着底层 RADOS 对象存储的大小线性扩展。没有网关或代理来协调客户端的数据 I/O。
对数据的访问由 MDS 集群协调,该集群充当分布式元数据缓存状态的权威机构,该缓存由客户端和 MDS 共同维护。对元数据的修改由每个 MDS 聚合到一系列高效写入到 RADOS 上的日志中;MDS 本地不存储元数据状态。这种模型允许客户端在 POSIX 文件系统的上下文中实现连贯且快速的协作。
4.2.1:部署MDS服务
使用 cephadm 部署 MDS 服务,为 CephFS 提供元数据处理能力。
方法一:通过 CLI 直接应用
1 | # 在指定节点上部署 2 个 MDS 实例(1个主,1个热备) |
方法二:通过 YAML 规范文件部署
- 创建
mds-spec.yaml:
1 | service_type: mds |
- 应用配置:
1 | ceph orch apply -i mds-spec.yaml |
4.2.2:验证MDS服务
检查 MDS 守护进程的启动和运行状态。
- 查看 MDS 服务汇总状态:
1 | ceph orch ls --service_type=mds |
- 查看 MDS 容器进程详情:
1 | ceph orch ps --daemon_type=mds |
查看状态:
1 | root@ceph-node1:~# ceph mds stat |
4.2.3:创建CephFS metadata和data存储池
CephFS 需要至少两个独立的 RADOS 存储池:一个用于存储文件系统元数据 (Metadata Pool),另一个用于存储实际文件数据 (Data Pool)。
- 创建元数据存储池 (CephFS Metadata Pool):
1 | # 创建名为 cephfs.myfs.meta 的存储池,指定 PG 数量为 32 |
- 创建数据存储池 (CephFS Data Pool):
1 | # 创建名为 cephfs.myfs.data 的存储池,指定 PG 数量为 64 |
- 禁用 pg_autoscale(可选,根据生产需要调整):
1 | ceph osd pool set cephfs.myfs.meta pg_autoscale_mode on |
4.2.4:创建cephFS并验证
利用创建好的存储池关联并初始化 CephFS 文件系统。
- 创建 CephFS 文件系统:
1 | # 格式: ceph fs new <fs_name> <metadata_pool> <data_pool> |
- 验证文件系统创建结果:
1 | ceph fs ls |
4.2.5:验证cephFS服务状态
检查 CephFS 的健康状况及 MDS 的主备(Active/Standby)角色状态。
- 查看 CephFS 详细状态:
1 | ceph fs status myfs |
- 通过 ceph status 查看:
1 | ceph -s |
在 services 字段中应看到类似 mds: 1/1 daemons up, 1 standby 的提示。
4.2.6:客户端挂载cephFS
支持通过 内核客户端 (Kernel Client) 或 用户态 FUSE 客户端 (ceph-fuse) 进行挂载。
准备工作:客户端密钥
1 | # |
方式 1:Linux 内核客户端挂载 (Kernel Mount)
- 创建挂载目录:
1 | mkdir -p /mnt/cephfs |
- 使用 mount 命令挂载:
1 | mount -t ceph ceph-node2:6789,ceph-node3:6789,node3:6789:/ /data -o name=admin,secret=AQC8VnFqFrr3ExAAzqAQpdfBta7gAPk7yC5/5A== |
- 验证挂载与读写测试:
1 | root@client:~# df -hT /data |
方式 2:Ceph-FUSE 用户态挂载
- 安装
ceph-fuse软件包:
1 | apt-get install -y ceph-fuse # Debian/Ubuntu |
- 执行挂载:
1 | ceph-fuse -n client.myfs -m node1:6789,node2:6789,node3:6789 /data |
命令总结
下表梳理了在 Ceph v20.2.2 (Cephadm) 环境中管理 RGW 与 CephFS 的常用运维命令:
| 分类 | 操作需求 | 核心命令 / 配置示例 |
|---|---|---|
| RGW 管理 | 部署 RGW 服务 | ceph orch apply rgw site-rgw default default --placement="2 node1 node2" --port=8000 |
| 查看 RGW 状态 | ceph orch ls --service_type=rgw |
|
| 创建 RGW 用户 | radosgw-admin user create --uid="<user_id>" --display-name="<name>" |
|
| 列出 RGW 存储池 | ceph df (观察 .rgw.root / *.buckets.data 等) |
|
| MDS 管理 | 部署 MDS 服务 | ceph orch apply mds <fs_name> --placement="2 node1 node2" |
| 查看 MDS 守护进程 | ceph orch ps --daemon_type=mds |
|
| CephFS 管理 | 创建元数据与数据池 | ceph osd pool create <meta_pool> <pg_num>ceph osd pool create <data_pool> <pg_num> |
| 创建 CephFS 文件系统 | ceph fs new <fs_name> <meta_pool> <data_pool> |
|
| 查看 CephFS 列表与状态 | ceph fs lsceph fs status <fs_name> |
|
| 查看集群整体状态 | ceph -s |
|
| 客户端挂载 | 生成客户端密钥 | ceph auth get-or-create client.<user> ... -o /etc/ceph/keyring |
| 内核挂载 (Kernel Mount) | mount -t ceph <MON_IP>:/ /mnt/cephfs -o name=<user>,secretfile=<path> |
|
| FUSE 挂载 | ceph-fuse -n client.<user> -m <MON_IP>:6789 /mnt/cephfs |