如何在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 集群。

posted @ 2026-01-11 10:43  A5IDC  阅读(4)  评论(0)    收藏  举报