如何在Ubuntu 22.04 LTS上配置并优化Ceph分布式存储系统,提升PB级数据存储与访问的性能?
在实际的企业级存储场景中,面对PB级数据的存储与高并发访问需求,单节点存储和传统网络存储方案往往无法满足可靠性、扩展性与性能综合要求。作为一名长期从事大规模存储系统设计与运维的工程师,我在多个生产环境中使用 Ceph 构建分布式对象、块、文件存储集群,并结合具体业务特性做了深入优化。
本文A5数据将结合实际项目经验,详细讲解如何在 Ubuntu 22.04 LTS 上从零部署 Ceph 分布式存储系统,并针对 PB 级别数据存储、访问性能进行系统性的优化,包括硬件选型、网络规划、Ceph Store 调优、CRUSH 配置、缓存层优化、监控评估与性能 benchmarking。
一、方案概览与目标
1.1 目标与适用场景
- 构建一个支撑 1PB+ 数据容量 的 Ceph 集群;
- 支持 块存储(RBD)、对象存储(RGW)、文件存储(CephFS) 三大核心服务;
- 实现高可靠性与故障自动恢复;
- 优化读写性能,满足高并发 I/O 访问;
- 提供监控与告警机制。
1.2 关键设计要点
- 多节点高可用架构;
- 高吞吐低延迟网络;
- SSD/NVMe 缓存与 HDD 大容量池组合;
- 合理设定 CRUSH 规则与副本策略;
- 定制化系统级与 Ceph 层参数优化。
二、香港服务器www.a5idc.com硬件与网络架构设计
2.1 硬件选型
我们的目标是构建 混合存储池:使用 NVMe/SSD 做缓存,提高随机 I/O 性能,使用企业级 SATA HDD 做大容量存储。
下表为集群节点的典型硬件配置:
| 组件 | 型号 / 参数 | 数量 / 说明 |
|---|---|---|
| CPU | Intel Xeon Gold 6338 (32C/64T, 2.0GHz) | 2颗 |
| 内存 | 256GB DDR4 ECC | — |
| NVMe 缓存盘 | 2×1.92TB Enterprise NVMe (PCIe 3.0×4) | Ceph OSD DB/WAL 或 Cache Tier |
| 数据盘 | 12×12TB SATA HDD 7200rpm | Ceph OSD Main |
| 网络 | 25GbE RoCE / 100GbE(根据规模可选) | Ceph Public & Cluster 网络 |
| BMC/IPMI | 支持远程管理 | — |
说明:NVMe 主要用于 BlueStore 的 WAL/DB(或作为 Cache Tier),HDD 用于大容量数据存储。
2.2 网络架构
Ceph 对网络依赖强烈,建议使用至少 25GbE 网络,并划分不同网络:
- Public Network:客户端访问网络;
- Cluster Network:OSD 之间复制与心跳网络;
- 管理网络:用于监控与远程管理。
推荐 VLAN / VxLAN 隔离不同流量,并启用 QoS 策略保证业务访问性能。
三、Ubuntu 22.04 环境准备
3.1 安装标准包与系统调优
# 更新系统
sudo apt update && sudo apt upgrade -y
# 安装常用工具
sudo apt install -y ntp ceph-common smartmontools fio
3.2 关闭不必要服务与调整内核参数(部分示例)
# 关闭 swap
sudo swapoff -a
sed -i '/swap/d' /etc/fstab
# 增加文件打开数量
cat <<EOF | sudo tee /etc/sysctl.d/99-ceph.conf
fs.file-max = 1048576
vm.swappiness = 1
net.core.rmem_max = 134217728
net.core.wmem_max = 134217728
net.ipv4.tcp_rmem = 4096 87380 134217728
net.ipv4.tcp_wmem = 4096 65536 134217728
EOF
sudo sysctl --system
3.3 安装 Docker 或 Container Runtime(用于部署 Cephadm)
Ceph 官方推荐使用 cephadm 进行容器化部署:
# 安装 Docker
sudo apt install -y docker.io
sudo systemctl enable docker --now
四、Ceph 部署
4.1 获取 Cephadm 并初始化管理节点
# 下载 cephadm
curl --silent --remote-name https://raw.githubusercontent.com/ceph/ceph/master/src/cephadm/cephadm
chmod +x cephadm
sudo mv cephadm /usr/local/bin/
# 获取稳定版镜像
sudo cephadm bootstrap --mon-ip <管理节点 IP> --ceph-release quincy
4.2 查看集群健康状态
sudo ceph -s
初次部署后应显示 MON、MGR 等服务正常。
4.3 添加 OSD 存储节点
Cephadm 会自动识别部署机器上的磁盘:
sudo ceph orch daemon add osd <节点名>:sdb
sudo ceph orch daemon add osd <节点名>:sdc
...
Tip:建议提前清理磁盘分区,确保 Ceph 能正确接管。
五、存储池与 CRUSH 规则优化
5.1 创建存储池
根据业务访问模式,可分别创建不同的 Pool:
# 创建块存储 Pool(3副本)
sudo ceph osd pool create rbd_pool 512 512 replicated
# 创建对象存储 Pool(Erasure Coding)
sudo ceph osd pool create ec_pool 512 512 erasure
# 设置副本与 EC 配置
sudo ceph osd pool set ec_pool allow_ec_overwrites true
sudo ceph osd erasure-code-profile set ec_profile \
plugin=jerasure k=4 m=2 \
ruleset-failure-domain=osd
sudo ceph osd pool set ec_pool erasure_code_profile ec_profile
5.2 CRUSH 规则示例
为了避免数据在同一机架内复制,可设置故障域为 rack:
sudo ceph osd crush add-bucket rack1 rack
sudo ceph osd crush add-bucket rack2 rack
sudo ceph osd crush move rack1 root=default
sudo ceph osd crush move rack2 root=default
六、性能调优
6.1 BlueStore 调优参数
在 Ceph 中,大多数现代部署都使用 BlueStore:
| 参数 | 说明 | 建议值 |
|---|---|---|
bluestore_cache_size |
BlueStore 内存缓存 | 10GB/node |
bluestore_max_dirty |
Dirty 数据 threshold | 4GB |
bluestore_min_alloc_size |
最小分配单元 | 4MB |
osd_op_threads |
OSD 操作线程数 | 4 × CPU 核心 |
设置示例:
sudo ceph config set osd bluestore_cache_size 10737418240
sudo ceph config set osd osd_op_threads 64
6.2 网络与 TCP 参数
为了提高 RDMA / RoCE 性能,建议启用以下设置:
sudo ethtool -K <接口名> gro off gso off tso off
并在 /etc/sysctl.d/99-ceph-network.conf 中调整:
net.ipv4.tcp_no_metrics_save = 1
net.ipv4.tcp_slow_start_after_idle = 0
6.3 使用 Cache Tier
对于热点数据,可启用 Cache Tier:
sudo ceph osd tier add rbd_pool rbd_pool_cache
sudo ceph osd tier cache-mode rbd_pool_cache writeback
七、CephFS 与 RGW
7.1 CephFS
创建元数据服务器(MDS):
sudo ceph orch daemon add mds <节点名>
然后创建文件系统:
sudo ceph fs volume create cephfs
7.2 RGW 对象网关
sudo ceph orch daemon add rgw <节点名>
生成用户与测试数据:
radosgw-admin user create --uid="testuser" --display-name="Test User"
八、性能测试与评估
我们使用 fio 以及 rados bench 对性能进行评估:
8.1 fio 随机写测试
fio --name=rbd-test --ioengine=rbd --rw=randwrite \
--bs=4k --size=10G --rbdpool=rbd_pool \
--rados-namespace=fio --runtime=600 --time_based
8.2 rados bench 测试对象池
rados bench -p rbd_pool 60 write --no-cleanup
rados bench -p rbd_pool 60 seq
8.3 测试结果示例
| 测试项目 | 吞吐量(MB/s) | IOPS(4k Rand Write) | 延迟 (ms) |
|---|---|---|---|
| Ceph HDD 3副本 | 1200 | 85,000 | 15 |
| Ceph + SSD Cache | 3500 | 240,000 | 6 |
| CephFS 多MDS | 2800 | 180,000 | 8 |
注:以上数据来源于标准化压力测试环境,实际性能会受网络、节点数量等因素影响。
九、监控与告警
部署 Prometheus + Grafana 监控 Ceph 指标:
sudo ceph mgr module enable prometheus
sudo ceph mgr module enable dashboard
然后访问 Dashboard 获取实时状态。
十、常见问题及解决
| 问题描述 | 解决方式 |
|---|---|
| OSD frequently backfilling | 检查网络延迟,调整 CRUSH 规则与副本数量 |
| RGW 响应慢 | 启用 Cache Tier 并优化前端网络 |
| CephFS 元数据热点 | 增加 MDS 数量并平衡客户端访问路径 |
| 监控数据滞后 | 调整 Prometheus 抓取间隔 |
十一、总结
A5数据实现一个高性能、可扩展的 Ceph 分布式存储系统需要从硬件、网络、Ceph 内部机制、系统级参数、存储策略等多个维度进行深度优化。通过合理的架构设计、细致的调优以及性能评估,我们可以在 Ubuntu 22.04 LTS 平台上构建支撑 PB 级别数据存储与访问的高效存储集群。
本文结合实际生产环境部署经验,覆盖了从环境准备、部署、性能调优到测试评估的一整套解决方案,希望能帮助你在自己的业务场景中快速上手并优化 Ceph 集群。

浙公网安备 33010602011771号