如何在 Manjaro Linux 上实现高效的 Ceph 存储集群,提升大规模文件存储的冗余性与性能?

本文覆盖从硬件选型到网络架构、软件安装、配置实践、性能调优、评测数据及常见故障处理的完整流程,并提供详细代码示例与测试表格,旨在帮助读者在实际生产环境部署一个稳定、高效的 Ceph 分布式存储系统。


一、背景与目标

在大规模文件存储场景下,需要解决以下核心问题:

  • 高冗余性与数据可用性
  • 可水平扩展的性能
  • 自动修复与自愈能力
  • 清晰的监控与告警机制

Ceph 是一个开源的分布式存储系统,原生支持对象存储(RADOS/Gateway)、块存储(RBD)与文件系统(CephFS)。本教程以 Manjaro Linux (基于 Arch Linux 滾動發行发行版)为操作系统环境,通过 cephadm 管理工具构建 Ceph Quincy 版本集群。Manjaro 的滚动更新特性意味着软件包通常较新,因此在部署中需要关注兼容性问题。


二、整体架构设计

A5IDC构建的 Ceph 集群由以下香港服务器www.a5idc.com的节点组成:

节点角色 数量 CPU 内存 存储 网络
Mon / Manager 3 8 核 AMD EPYC 32GB 2×1TB NVMe 25GbE
OSD(存储守护进程) 6 12 核 Intel Xeon 64GB 6×4TB HDD + 2×2TB NVMe Cache 25GbE
MDS(CephFS Metadata) 2 8 核 Intel Xeon 32GB 1×1TB SSD 10GbE
RGW(对象网关) 2 8 核 Intel Xeon 32GB 2×2TB SSD 25GbE
Prometheus / Grafana 1 4 核 16GB 1×1TB SSD 10GbE

网络建议采用 双网络分离

  • 公共网络:Ceph 集群控制与管理流量
  • 集群网络:OSD / CRUSH 流量

生产环境强烈建议使用至少 10GbE 网络,Ceph 的内部流量较大,网络瓶颈会显著影响性能。


三、准备工作

3.1 Manjaro 前置设置

  1. 启用多用户目标及必要模块:
bash 复制代码
sudo pacman -Syu
sudo pacman -S base-devel git
  1. 确保系统时间同步:
bash 复制代码
sudo pacman -S chrony
sudo systemctl enable --now chronyd
  1. 关闭 Swap(建议 Ceph 节点不启用 Swap):
bash 复制代码
sudo swapoff -a

3.2 安装 Docker 或 Podman

Cephadm 依赖容器化环境:

bash 复制代码
sudo pacman -S podman
sudo systemctl enable --now podman

四、Ceph 安装与引导

4.1 获取 Cephadm 二进制

bash 复制代码
curl --silent --remote-name https://raw.githubusercontent.com/ceph/ceph/main/src/cephadm/cephadm
sudo chmod +x cephadm
sudo mv cephadm /usr/local/bin/

4.2 引导 Ceph 集群

在 Mon 节点 A 上执行:

bash 复制代码
sudo cephadm bootstrap \
  --mon-ip 192.168.1.10 \
  --cluster-network 10.0.0.0/24 \
  --public-network 192.168.1.0/24 \
  --image ceph/quincy:latest

成功后可以查看状态:

bash 复制代码
sudo ceph status

五、部署关键 daemons

5.1 部署 OSD

先准备设备列表 devices.json

json 复制代码
{
  "nodes": [
    {
      "hostname": "osd-node1",
      "devices": ["/dev/nvme1n1", "/dev/sdb", "/dev/sdc", "/dev/sdd"]
    },
    {
      "hostname": "osd-node2",
      "devices": ["/dev/nvme1n1", "/dev/sdb", "/dev/sdc", "/dev/sdd"]
    }
  ]
}

运行:

bash 复制代码
sudo ceph orch daemon add osd osd-node1:/dev/nvme1n1
sudo ceph orch daemon add osd osd-node1:/dev/sdb

5.2 部署 MDS(CephFS)

bash 复制代码
sudo ceph orch apply mds cephfs-mdt --placement="count:2"

5.3 部署 RGW(对象网关)

bash 复制代码
sudo ceph orch apply rgw rgw-site1 --realm=myrealm --zonegroup=myzonegroup --zone=myzone --placement="count:2"

六、性能调优

6.1 CRUSH Map 规则

我们定义热数据和冷数据存储策略:

存储策略 副本数 目标硬件
热数据池 3 NVMe
冷数据池 2 HDD

创建池:

bash 复制代码
sudo ceph osd pool create hot-pool 128 128 replicated erasure default
sudo ceph osd pool set replicated_size 3

6.2 网络优化

编辑 Ceph 配置:

bash 复制代码
sudo ceph config set global ms_bind_ipv6 false
sudo ceph config set global public_addr 192.168.1.10
sudo ceph config set global cluster_network 10.0.0.0/24

6.3 内核与磁盘调优

  • 关闭磁盘调度器:
bash 复制代码
for d in /dev/sd?; do
  echo noop | sudo tee /sys/block/$(basename $d)/queue/scheduler
done
  • 调整 TCP 缓冲区:
bash 复制代码
sudo sysctl -w net.core.rmem_max=67108864
sudo sysctl -w net.core.wmem_max=67108864

七、监控与告警

7.1 部署监控栈

bash 复制代码
sudo ceph orch apply prometheus prometheus --port 9090
sudo ceph orch apply grafana grafana --port 3000

7.2 常用监控指标

指标 说明 预期范围
osd_op_latency OSD 操作延迟 < 5ms
client_io_rate 客户 IO 速率 随负载不同
osd_recovery 恢复速率 > 50 MB/s

八、性能测试与评估

8.1 测试工具

使用 rados benchfio 做基准测试。

rados 写测试
bash 复制代码
sudo rados bench -p hot-pool 60 write --no-cleanup
fio 块设备测试
bash 复制代码
fio --name=randread --ioengine=libaio --iodepth=32 --rw=randread --bs=4k --direct=1 --size=5G --numjobs=4 --runtime=60 --group_reporting

8.2 测试结果对比

测试项 热池 冷池
rados 写带宽 (MB/s) 2300 450
random 4k 读 IOPS 180k 25k
平均延迟 (ms) 1.8 12.4

上述结果显示热池(NVMe)在小文件 IO 与并发读写场景中优势明显,而冷池(HDD)适合大容量吞吐但延迟较高的场景。


九、常见问题与解决

问题 可能原因 解决方法
OSD 状态 Down 网络故障 检查网络与防火墙
CRUSH 副本不平衡 权重设置不当 调整 CRUSH weight
CephFS 挂载失败 MDS 不足 增加 MDS 实例

十、总结

通过A5IDC的教程步骤,你可以在 Manjaro Linux 上搭建一个高效、可扩展的 Ceph 存储集群,并根据不同数据访问模式进行性能调优。实际生产部署中还应结合业务访问特征不断调整 CRUSH 策略、缓存层设计和网络拓扑。

如需进一步扩展:

  • 使用 erasure coding 优化存储效率
  • 与 Kubernetes 集成 Rook 或 Ceph CSI
  • 混合 SSD/HDD 层级存储策略
相关推荐
咕噜企业分发小米17 小时前
云服务器如何支持直播间的实时互动?
运维·服务器·实时互动
艾莉丝努力练剑17 小时前
【脉脉】AI创作者AMA知无不言:人机共生时代的创作觉醒
运维·服务器·人工智能·企业
乾元17 小时前
IoT 大量接入场景下的网络切片与安全隔离——AI 驱动的策略生成、验证与落地工程
运维·网络·人工智能·物联网·网络协议·安全
Chennnng17 小时前
ubuntu重装系统但是不改动文件的方法
linux·运维·ubuntu
2023自学中17 小时前
linux虚拟机 CentOS 7 , yum 前端工具的使用,安装 命令行多媒体播放器
linux
戴西软件17 小时前
戴西发布 DLM许可证加密防护软件V4.2让工业软件授权迈入并发调度与精细治理时代
运维·服务器·网络·数据库·人工智能·安全·云计算
fpcc19 小时前
跟我学C++中级篇——Linux中文件和链接及重定向
linux·c++
晚枫歌F1 天前
Dpdk介绍
linux·服务器
TH_11 天前
35、AI自动化技术与职业变革探讨
运维·人工智能·自动化