0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Ceph集群部署与运维完全指南

马哥Linux运维 ? 来源:马哥Linux运维 ? 2025-08-29 17:18 ? 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

Linux下的分布式存储方案:Ceph集群部署与运维完全指南

前言:为什么选择Ceph?

作为一名资深运维工程师,我见证了太多企业在存储架构选型上的纠结。传统的NAS/SAN方案成本高昂,扩展性差;而云存储又面临厂商锁定的风险。直到我深入研究Ceph后,才真正理解什么叫"软件定义存储的未来"。

今天,我将毫无保留地分享在生产环境中部署和运维Ceph集群的完整经验,包括那些文档里不会告诉你的"坑"和优化技巧。

什么是Ceph?不只是分布式存储那么简单

Ceph不仅仅是一个分布式存储系统,它是一个统一的存储平台,能够同时提供:

?对象存储(RADOS Gateway):兼容S3/Swift API

?块存储(RBD):为虚拟机提供高性能磁盘

?文件系统(CephFS):POSIX兼容的分布式文件系统

这种"三合一"的架构让Ceph成为企业存储整合的完美选择。

Ceph的核心优势

1.无单点故障:真正的去中心化架构

2.动态扩展:PB级扩展能力,在线扩容

3.自我修复:数据自动平衡和恢复

4.开源生态:避免厂商锁定,社区支持强大

生产环境Ceph集群架构设计

硬件配置推荐

基于我在多个生产环境的部署经验,推荐以下配置:

Monitor节点(至少3个,奇数个)

CPU: 4核心以上
内存: 8GB以上
磁盘: SSD 100GB(系统盘)
网络: 双万兆网卡(冗余)

OSD节点(建议6个起步)

CPU: 每个OSD分配1个核心
内存: 每个OSD分配4GB(BlueStore)
磁盘: 企业级SSD或高转速机械盘
网络: 双万兆网卡(公网+集群网络)

MGR节点(至少2个)

CPU: 2核心
内存: 4GB
磁盘: 系统盘即可

网络架构设计

这是很多工程师容易忽略的关键点:

# 公网(客户端访问)
10.0.1.0/24

# 集群网络(数据复制和心跳)
10.0.2.0/24

核心原则:将客户端流量和集群内部流量分离,避免网络拥塞影响集群稳定性。

手把手部署Ceph集群

环境准备

# 1. 系统要求(以CentOS 8为例)
cat/etc/os-release

# 2. 时间同步(关键!)
systemctlenable--now chronyd
chrony sources -v

# 3. 防火墙配置
firewall-cmd --zone=public --add-port=6789/tcp --permanent
firewall-cmd --zone=public --add-port=6800-7300/tcp --permanent
firewall-cmd --reload

# 4. SELinux设置
setenforce 0
sed -i's/SELINUX=enforcing/SELINUX=disabled/'/etc/selinux/config

安装cephadm工具

# 安装官方包管理器
curl --silent --remote-name --location https://github.com/ceph/ceph/raw/octopus/src/cephadm/cephadm
chmod+x cephadm
./cephadm add-repo --release octopus
./cephadm install

初始化集群

# 1. 初始化第一个Monitor节点
cephadm bootstrap --mon-ip 10.0.1.10 --cluster-network 10.0.2.0/24

# 2. 安装Ceph CLI工具
cephadm install ceph-common

# 3. 检查集群状态
ceph status

成功后你会看到类似输出:

cluster:
 id:   a7f64266-0894-4f1e-a635-d0aeaca0e993
  health: HEALTH_OK

添加OSD节点

# 1. 复制SSH密钥到所有节点
ssh-copy-id root@node2
ssh-copy-id root@node3

# 2. 添加主机到集群
ceph orch host add node2 10.0.1.11
ceph orch host add node3 10.0.1.12

# 3. 列出可用磁盘
ceph orch devicels

# 4. 添加OSD
ceph orch daemon add osd node2:/dev/sdb
ceph orch daemon add osd node2:/dev/sdc
ceph orch daemon add osd node3:/dev/sdb
ceph orch daemon add osd node3:/dev/sdc

配置存储池

# 1. 创建复制池(3副本)
ceph osd pool create mypool 128 128 replicated

# 2. 设置应用类型
ceph osd pool applicationenablemypool rbd

# 3. 设置CRUSH规则(机架级容错)
ceph osd crush rule create-replicated rack_rule default rack
ceph osd poolsetmypool crush_rule rack_rule

生产环境运维实战

性能监控与调优

核心监控指标

# 1. 集群整体健康状态
ceph health detail

# 2. 存储使用情况
cephdf

# 3. OSD性能统计
ceph osd perf

# 4. 慢查询监控
ceph osd slow-requests

# 5. PG状态分布
ceph pgstat

性能调优参数

创建优化配置文件/etc/ceph/ceph.conf:

[global]
# 网络优化
ms_bind_port_max=7300
ms_bind_port_min=6800

# OSD优化
osd_max_write_size=512
osd_client_message_size_cap=2147483648
osd_deep_scrub_interval=2419200
osd_scrub_max_interval=604800

# BlueStore优化
bluestore_cache_size_hdd=4294967296
bluestore_cache_size_ssd=8589934592

# 恢复控制
osd_recovery_max_active=5
osd_max_backfills=2
osd_recovery_op_priority=2

故障排查实战案例

案例一:OSD Down故障

现象:某个OSD突然down掉,集群显示HEALTH_WARN

# 1. 查看具体错误
ceph health detail
# HEALTH_WARN: 1 osds down

# 2. 定位问题OSD
ceph osd tree | grep down
# osd.3  down

# 3. 检查OSD日志
journalctl -u ceph-osd@3 -f

# 4. 尝试重启OSD
systemctl restart ceph-osd@3

# 5. 如果硬件故障,标记为out并替换
ceph osd out 3

案例二:PG不一致修复

# 1. 发现不一致PG
ceph pg dump | grep inconsistent

# 2. 修复不一致数据
ceph pg repair 2.3f

# 3. 深度清理
ceph pg deep-scrub 2.3f

案例三:磁盘空间不足

# 1. 检查使用率
cephdfdetail

# 2. 找出占用最多的池
ceph osd poollsdetail

# 3. 临时提高告警阈值(紧急情况)
ceph configsetglobal mon_osd_full_ratio 0.95
ceph configsetglobal mon_osd_backfillfull_ratio 0.90
ceph configsetglobal mon_osd_nearfull_ratio 0.85

# 4. 长期解决:添加OSD或删除数据
ceph orch daemon add osd node4:/dev/sdb

容量规划与扩容策略

容量计算公式

可用容量 = 原始容量 × (1 - 副本数/副本数) × (1 - 预留空间比例)

# 例如:100TB原始容量,3副本,10%预留
# 可用容量 = 100TB × (1 - 3/3) × (1 - 0.1) = 30TB

平滑扩容流程

# 1. 添加新OSD前设置
ceph configsetglobal osd_max_backfills 1
ceph configsetglobal osd_recovery_max_active 1

# 2. 逐个添加OSD
ceph orch daemon add osd node5:/dev/sdb
# 等待数据平衡完成
ceph -w

# 3. 恢复默认配置
ceph configrmglobal osd_max_backfills
ceph configrmglobal osd_recovery_max_active

备份与灾难恢复

RBD快照备份

# 1. 创建快照
rbd snap create mypool/myimage@snapshot1

# 2. 导出快照
rbdexportmypool/myimage@snapshot1 /backup/myimage.snapshot1

# 3. 跨集群复制
rbd mirror poolenablemypool image
rbd mirror imageenablemypool/myimage

集群级备份策略

# 1. 配置导出
ceph config dump > /backup/ceph-config.dump

# 2. CRUSH Map备份
ceph osd getcrushmap -o /backup/crushmap.bin

# 3. Monitor数据备份
ceph-mon --extract-monmap /backup/monmap

高级运维技巧

自动化运维脚本

创建集群健康检查脚本:

#!/bin/bash
# ceph-health-check.sh

LOG_FILE="/var/log/ceph-health.log"
ALERT_EMAIL="admin@company.com"

check_health() {
  HEALTH=$(ceph health --format json | jq -r'.status')
 
 if["$HEALTH"!="HEALTH_OK"];then
   echo"$(date): Cluster health is$HEALTH">>$LOG_FILE
    ceph health detail >>$LOG_FILE
   
   # 发送告警邮件
   echo"Ceph cluster health issue detected"| mail -s"Ceph Alert"$ALERT_EMAIL
 fi
}

check_capacity() {
  USAGE=$(cephdf--format json | jq -r'.stats.total_used_ratio')
  THRESHOLD=0.80
 
 if(( $(echo "$USAGE>$THRESHOLD" | bc -l) ));then
   echo"$(date): Storage usage is${USAGE}">>$LOG_FILE
   echo"Storage capacity warning"| mail -s"Ceph Capacity Alert"$ALERT_EMAIL
 fi
}

main() {
  check_health
  check_capacity
}

main

性能基准测试

# 1. RADOS性能测试
rados bench -p mypool 60 write --no-cleanup
rados bench -p mypool 60seq
rados bench -p mypool 60 rand

# 2. RBD性能测试
rbd create --size 10G mypool/test-image
rbd map mypool/test-image
fio --name=rbd-test --rw=randwrite --bs=4k --size=1G --filename=/dev/rbd0

# 3. CephFS性能测试
mkdir/mnt/cephfs/test
fio --name=cephfs-test --rw=write --bs=1M --size=1G --directory=/mnt/cephfs/test

生产环境最佳实践

安全配置

# 1. 启用认证
ceph configsetmon auth_cluster_required cephx
ceph configsetmon auth_service_required cephx
ceph configsetmon auth_client_required cephx

# 2. 创建专用用户
ceph auth get-or-create client.backup mon'allow r'osd'allow rwx pool=mypool'

# 3. 网络加密
ceph configsetglobal ms_cluster_mode secure
ceph configsetglobal ms_service_mode secure

日志管理

# 1. 配置日志轮转
cat> /etc/logrotate.d/ceph <

升级策略

# 1. 滚动升级前检查
ceph status
ceph versions

# 2. 升级OSD节点
ceph orch upgrade start --ceph-version 15.2.14

# 3. 监控升级进度
ceph orch upgrade status

常见问题与解决方案

Q1: 新添加的OSD不平衡数据怎么办?

# 手动触发数据平衡
ceph osd reweight-by-utilization 105

# 调整特定OSD权重
ceph osd crush reweight osd.6 2.0

Q2: 集群时钟偏差导致的问题

# 检查时钟偏差
ceph time-sync-status

# 修复方案
systemctl restart chronyd
ceph configsetglobal mon_clock_drift_allowed 0.5

Q3: 大量慢查询如何优化?

# 分析慢查询
ceph daemon osd.0 dump_historic_ops

# 临时缓解
ceph tell'osd.*'injectargs'--osd-op-complaint-time 30'

# 永久优化
ceph configsetosd osd_op_complaint_time 30

总结与展望

通过本文的深入讲解,相信你已经掌握了Ceph集群在生产环境中的部署和运维精髓。从我的实践经验来看,Ceph不仅仅是一个存储解决方案,更是企业数字化转型的基石。

关键要点回顾

1.架构设计:合理的硬件选型和网络规划是成功的前提

2.监控运维:建立完善的监控体系,防患于未然

3.性能调优:根据业务特点调整参数,发挥最佳性能

4.故障处理:快速定位和解决问题的能力是核心竞争力

随着云原生技术的发展,Ceph在容器化、微服务架构中的应用会越来越广泛。掌握Ceph运维技能,将让你在分布式存储领域占据技术制高点。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 存储
    +关注

    关注

    13

    文章

    4576

    浏览量

    87887
  • Linux
    +关注

    关注

    88

    文章

    11548

    浏览量

    215130
  • 集群
    +关注

    关注

    0

    文章

    122

    浏览量

    17488

原文标题:Linux下的分布式存储方案:Ceph集群部署与运维完全指南

文章出处:【微信号:magedu-Linux,微信公众号:马哥Linux运维】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    Hadoop的集群环境部署说明

    或者是相同,指令多、步骤繁琐。有的时候觉得不免觉得很奇怪,这些发行商为什么不对hadoop的集群环境部署做一下优化呢?幸运的是总算是让我找到了一个hadoop发行版集群环境搭建简单易用。这里使用的是一款
    发表于 10-12 15:51

    Flink集群部署方法

    Flink集群部署详细步骤
    发表于 04-23 11:45

    kubernetes学习指南

    k8s学习4 - 指南
    发表于 09-04 10:46

    redis集群的如何部署

    redis集群部署(伪分布式)
    发表于 05-29 17:13

    基于全HDD aarch64服务器的Ceph性能调优实践总结

    和成本之间实现了最佳平衡,可以作为基于arm服务器来部署存储的参考设计。2 Ceph架构3 测试集群硬件配置:3台arm服务器每台arm服务器:软件配置性能测试工具4 调优方式4.1 硬件调优近些年
    发表于 07-05 14:26

    Ceph是什么?Ceph的统一存储方案简析

    ,一般来说,用于部署Ceph集群物理机器(或虚拟机)的磁盘数量与OSD守护进程数量是一样的。MDS,元数据服务器,只有Ceph FS才需要,对象存储场景不需要使用到MDS。小结本篇简单
    发表于 10-08 15:40

    如何部署基于Mesos的Kubernetes集群

    的内核。把Kubernetes运行在Mesos集群之上,可以和其他的框架共享集群资源,提高集群资源的利用率。 本文是Kubernetes和Mesos集成指南系列文章第一篇:实战
    发表于 10-09 18:04 ?0次下载
    如何<b class='flag-5'>部署</b>基于Mesos的Kubernetes<b class='flag-5'>集群</b>

    Ceph分布式存储中遇到的问题和解决办法

    首先,原作者分析Ceph中遇到的问题是真实存在的,甚至在实际的过程中还出现过其他更复杂的问题。因为最初的
    发表于 10-20 10:17 ?4564次阅读

    ceph-zabbix监控Ceph集群文件系统

    ceph-zabbix.zip
    发表于 04-26 09:48 ?2次下载
    <b class='flag-5'>ceph</b>-zabbix监控<b class='flag-5'>Ceph</b><b class='flag-5'>集群</b>文件系统

    autobuild-ceph远程部署Ceph及自动构建Ceph

    autobuild-ceph.zip
    发表于 05-05 11:09 ?2次下载
    autobuild-<b class='flag-5'>ceph</b>远程<b class='flag-5'>部署</b><b class='flag-5'>Ceph</b>及自动构建<b class='flag-5'>Ceph</b>

    NKD:容器云集群与OS一体化利器

    NKD 是 NestOS-kubernetes-Deployer 的缩写,是为了基于 NestOS 部署的 Kubernetes 集群工作准备的解决方案。其目标是在
    的头像 发表于 08-15 14:52 ?2187次阅读
    NKD:容器云<b class='flag-5'>集群</b>与OS一体化<b class='flag-5'>运</b><b class='flag-5'>维</b>利器

    请问怎样使用cephadm部署ceph集群呢?

    从红帽ceph5开始使用cephadm代替之前的ceph-ansible作为管理整个集群生命周期的工具,包括部署,管理,监控。
    的头像 发表于 01-16 09:32 ?2383次阅读
    请问怎样使用cephadm<b class='flag-5'>部署</b><b class='flag-5'>ceph</b><b class='flag-5'>集群</b>呢?

    分布式管理平台在跨地域企业中的部署案例

    问题,某跨地域企业决定引入分布式管理平台,以提升其效率和管理水平。 二、平台部署与优势 统一化管理与监控 分布式
    的头像 发表于 03-26 16:11 ?832次阅读

    Redis集群部署与性能优化实战

    Redis作为高性能的内存数据库,在现代互联网架构中扮演着关键角色。作为工程师,掌握Redis的部署、配置和优化技能至关重要。本文将从实战角度出发,详细介绍Redis集群的搭建、性
    的头像 发表于 07-08 17:56 ?355次阅读

    使用Ansible实现大规模集群自动化部署

    当你面对1000+服务器需要部署时,你还在一台台手工操作吗?本文将揭秘如何用Ansible实现大规模集群的自动化部署,让效率提升10倍!
    的头像 发表于 08-27 14:41 ?92次阅读