当前位置: 首页 > article >正文

Ceph运维实战:从‘ceph -s’到‘systemctl’,手把手教你搞定集群日常管理与故障排查

Ceph运维实战从集群状态检查到服务管理的完整指南清晨7:30运维工程师小李的电脑弹出一条告警Ceph集群出现OSD异常。对于刚接触Ceph运维的小李来说这既是一次挑战也是学习机会。本文将带你走进Ceph运维的日常工作场景掌握从基础状态检查到复杂故障排查的全套实战技能。1. 集群健康检查运维工作的起点每天上班第一件事就是检查集群整体状态这相当于给Ceph做体检。ceph -s是最基础的检查命令但真正专业的运维会结合多个命令进行全面诊断。核心诊断命令组合ceph -s # 集群概况 ceph health detail # 健康详情 ceph osd tree # OSD分布拓扑 ceph osd df # OSD磁盘使用详情小李发现集群有一个OSD显示down状态通过ceph osd tree确认是osd.3异常。此时需要进一步检查ceph osd find osd.3 # 定位故障OSD所在主机 ssh hostname systemctl status ceph-osd3 # 检查服务状态常见误区提醒新手常犯的错误是看到OSD down就立即重启实际上应该先确认是硬件故障还是服务异常。如果是服务崩溃日志通常在/var/log/ceph/ceph-osd.3.log。2. 服务管理systemctl的进阶用法Ceph各组件都作为systemd服务运行掌握服务管理是运维的基本功。不同于简单的start/stop专业运维需要了解服务间的依赖关系。服务管理命令对照表服务类型启动命令停止命令重启命令查看状态单个OSDsystemctl start ceph-osd3systemctl stop ceph-osd3systemctl restart ceph-osd3systemctl status ceph-osd3所有OSDsystemctl start ceph-osd.targetsystemctl stop ceph-osd.targetsystemctl restart ceph-osd.targetceph osd statMON服务systemctl start ceph-monnode1systemctl stop ceph-monnode1systemctl restart ceph-monnode1ceph mon stat重要提示停止MON服务前需确认quorum状态避免导致集群不可用。建议使用ceph quorum_status检查当前leader。小李遇到的osd.3问题通过重启服务解决了但他发现集群恢复后性能下降。这时需要检查恢复参数ceph tell osd.* injectargs --osd_recovery_max_active 3 # 限制恢复并发 ceph tell osd.* injectargs --osd_recovery_sleep 0.1 # 增加恢复间隔3. 存储池与PG管理实战中午时分业务部门报告某个存储池写入变慢。经验丰富的运维会从PG分布和存储池配置入手排查。PG状态检查三板斧ceph pg dump | grep ^[0-9] | awk {print $1,$2,$15} # 查看所有PG状态 ceph pg pg_id query # 查看具体PG详情 ceph osd pool get poolname pg_num # 检查PG数量发现热点PG集中在几个OSD上小李决定进行手动均衡ceph osd reweight-by-utilization # 自动调整OSD权重 ceph osd crush reweight osd.3 0.8 # 手动降低特定OSD权重避坑指南调整PG数量时必须同时调整pgp_num且建议每次增加不超过原值的2倍ceph osd pool set poolname pg_num 128 ceph osd pool set poolname pgp_num 1284. 高级故障排查从日志到内核下午集群突然出现网络波动导致多个OSD被标记为down。此时需要多维度排查分层诊断法网络层检查节点间连通性ping mon_ip ceph daemon osd.0 perf dump | grep networkOSD层检查心跳和副本状态ceph daemon osd.0 dump_heartbeat_map ceph osd blocked-by内核层检查网络和磁盘IOethtool -S interface # 网卡统计 iostat -x 1 # 磁盘IO统计发现是网卡驱动问题导致的心跳超时临时解决方案ceph tell osd.* injectargs --osd_heartbeat_interval 10 # 调大心跳间隔长期则需要更新网卡驱动并优化内核参数ethtool -K interface tx off rx off # 关闭校验和卸载 sysctl -w net.ipv4.tcp_keepalive_time605. 性能调优实战技巧临近下班小李接到性能优化任务。以下是经过验证的调优参数组合OSD调优参数表参数推荐值作用osd_op_threads4-8处理客户端请求的线程数osd_disk_threads2-4磁盘IO线程数osd_network_threads2-4网络通信线程数osd_client_op_priority63客户端操作优先级osd_recovery_op_priority3恢复操作优先级设置方法ceph tell osd.* injectargs --osd_op_threads 4 ceph tell osd.* injectargs --osd_recovery_op_priority 3对于SSD优化的特殊配置ceph osd set-ssd-tier poolname ceph osd pool set poolname hit_set_type bloom6. 日常维护自动化脚本专业运维都会建立自己的脚本库。以下是几个实用脚本片段每日健康检查脚本#!/bin/bash echo Cluster Status ceph -s echo -e \n OSD Usage ceph osd df echo -e \n Pool Stats rados df自动日志收集脚本#!/bin/bash LOG_DIR/tmp/ceph_logs_$(date %Y%m%d) mkdir -p $LOG_DIR # 收集关键日志 for osd in $(ceph osd ls); do ssh $(ceph osd find $osd | grep host | awk {print $2}) \ journalctl -u ceph-osd$osd --since 1 day ago $LOG_DIR/osd_$osd.log done # 打包发送 tar czf $LOG_DIR.tar.gz $LOG_DIR7. 监控与告警配置完善的监控是预防故障的关键。除了PrometheusGrafana的标准方案还可以配置CLI监控实时监控命令watch -n 1 ceph -s | grep -E health|osd|mon ceph-w # 监控集群事件流自定义告警规则示例需配合监控系统# OSD down超过5分钟告警 if ceph osd stat | grep -q 3 down; then echo CRITICAL: OSD down detected | mail -s Ceph Alert adminexample.com fi # 存储池使用率超过85%告警 for pool in $(rados lspools); do usage$(ceph df | grep $pool | awk {print $4} | tr -d %) [ $usage -gt 85 ] echo WARNING: $pool usage $usage% /tmp/ceph_alerts done8. 升级与维护最佳实践每月维护窗口时系统升级是必要工作。安全升级的步骤预检查ceph health detail ceph osd set noout ceph osd set norecover滚动升级MONfor mon in $(ceph mon dump | grep -oE mon\.[^ ]); do ssh ${mon#mon.} systemctl stop ceph-mon${mon#mon.} # 安装新版本包 ssh ${mon#mon.} systemctl start ceph-mon${mon#mon.} ceph -s # 确认quorum正常 done滚动升级OSDfor osd in $(ceph osd ls); do host$(ceph osd find $osd | grep host | awk {print $2}) ssh $host systemctl stop ceph-osd$osd # 安装新版本包 ssh $host systemctl start ceph-osd$osd while ! cph osd stat | grep -q up $osd; do sleep 1; done done恢复集群ceph osd unset noout ceph osd unset norecover ceph -w # 观察恢复状态9. 数据安全与备份策略数据是企业的生命线Ceph运维必须掌握备份方法元数据备份ceph mon getmap -o /backup/monmap-$(date %Y%m%d) ceph osd getcrushmap -o /backup/crushmap-$(date %Y%m%d)存储池快照管理# 创建快照 rbd snap create pool/imagesnap_$(date %Y%m%d) # 定期清理旧快照 find /backup -name monmap-* -mtime 30 -delete异地备份方案# 使用RBD mirroring rbd mirror pool/image enable rbd mirror pool/image promote --force # 灾难恢复时提升为primary10. 性能基准测试方法容量规划时需要准确的性能数据。推荐测试方法顺序写测试rados bench -p testpool 300 write --no-cleanup随机读测试rados bench -p testpool 300 rand混合负载测试fio --nametest --ioenginerbd --pooltestpool --rbdnametestimage \ --size100G --runtime300 --rwrandrw --bs4k --numjobs16测试后记得清理rados -p testpool cleanup11. 常见故障处理手册根据多年运维经验总结高频故障处理方法案例1PG卡在activeremapped状态原因通常是由于OSD权重变化导致数据迁移未完成解决ceph osd set norebalance # 暂停平衡 ceph osd crush reweight osd.x new_weight # 调整权重 ceph osd unset norebalance # 恢复平衡案例2客户端出现慢请求检查方法ceph daemon osd.0 dump_historic_ops | jq .ops[] | select(.duration 1)可能原因磁盘响应慢、网络延迟、OSD过载案例3MON磁盘空间不足紧急处理ceph tell mon.* compact ceph tell mon.* trim 100 # 保留最近100个版本长期方案监控/var/lib/ceph/mon目录使用情况12. 资源限制与配额管理多租户环境下资源隔离至关重要存储池配额设置ceph osd pool set-quota data max_bytes 100T # 容量限制 ceph osd pool set-quota data max_objects 1000000 # 对象数限制RBD镜像配额rbd resize --size 100G pool/image --allow-shrink # 调整大小 rbd snap limit set pool/image 10 # 快照数量限制客户端流量限制ceph tell osd.* injectargs --osd_client_message_size_cap 104857600 # 100MB单消息限制 ceph tell osd.* injectargs --osd_client_message_cap 256 # 并发消息数限制13. 硬件故障处理流程硬盘故障是常态标准处理流程如下确认故障设备smartctl -a /dev/sdX ceph device ls | grep -B10 FAILED安全移除OSDceph osd out osd.X ceph osd crush remove osd.X ceph auth del osd.X ceph osd rm osd.X更换硬盘后重新部署ceph-deploy osd create --data /dev/sdY hostname观察数据恢复watch -n 1 ceph -s | grep recovery14. 安全加固措施生产环境必须进行安全加固基础安全配置# 禁用不安全的协议 ceph osd set require_jewel_osds ceph osd set require_kraken_osds # 启用加密 ceph osd pool set poolname compression_mode aggressive ceph osd pool set poolname compression_algorithm zstd审计日志配置ceph tell mon.* injectargs --mon_cluster_log_to_syslogtrue ceph tell mon.* injectargs --mon_cluster_log_to_syslog_levelinfo客户端访问控制ceph auth caps client.app mon allow r osd allow rw poolapp-pool15. 环境准备与部署规范标准化的部署能减少后期运维问题硬件配置建议MON节点至少2核CPU8GB内存SSD系统盘OSD节点每块数据盘对应1个CPU核心每TB数据需要1GB内存网络要求# 检查网络延迟 ping -c 10 mon_ip # 检查带宽 iperf3 -c mon_ip部署检查清单确认NTP同步chronyc sources检查内核版本uname -r # 推荐4.18验证Ceph版本兼容性ceph versions16. 日志分析与问题定位有效的日志分析能快速定位问题根源关键日志位置/var/log/ceph/ceph-mon.hostname.log/var/log/ceph/ceph-osd.id.log/var/log/ceph/ceph-mgr.hostname.log日志过滤技巧# 查找错误日志 grep -E ERR|WARN /var/log/ceph/ceph-osd.0.log # 跟踪特定请求 grep op0x1234 /var/log/ceph/*动态调整日志级别ceph tell osd.0 injectargs --debug_osd 10 ceph tell mon.* injectargs --debug_mon 517. 性能指标监控要点需要重点监控的核心指标OSD关键指标延迟ceph osd perf负载ceph osd df tree网络ceph daemon osd.0 perf dump | grep network集群容量规划指标ceph df detail # 总容量和使用率 ceph osd pool stats # 各存储池IOPS和吞吐推荐监控面板配置集群健康状态OSD使用率分布客户端读写延迟恢复/回填进度PG状态分布18. 客户端优化配置客户端配置不当常导致性能问题最佳实践配置[client] rbd cache true rbd cache size 64MB rbd cache max dirty 32MB rbd cache writethrough until flush true挂载参数优化mount -t xfs -o noatime,inode64 /dev/rbd0 /mnt并发连接控制ceph tell osd.* injectargs --osd_op_num_threads_per_shard 4 # 每OSD线程数19. 灾难恢复演练定期演练确保恢复能力模拟MON故障systemctl stop ceph-monmon_id ceph quorum_status # 观察quorum变化 systemctl start ceph-monmon_id模拟OSD全损ceph osd lost osd_id --yes-i-really-mean-it ceph osd purge osd_id --yes-i-really-mean-it恢复验证步骤检查数据完整性rados -p poolname list-inconsistent-obj验证副本数ceph pg dump | awk /^[0-9]/{print $1,$2,$15} | grep -v activeclean20. 运维经验与技巧分享最后分享一些实战中积累的宝贵经验变更管理黄金法则任何变更前执行ceph health detail记录初始状态一次只做一个变更变更后观察至少5分钟性能问题排查顺序网络 → 磁盘 → OSD配置 → 客户端 → 集群负载必备诊断工具包perf分析OSD进程性能blktrace跟踪磁盘IOtcpdump抓包分析网络问题容量预警阈值单个OSD使用率超过85%时告警整个集群超过70%时开始扩容PG数量达到每OSD 100个时考虑增加最实用的命令组合watch -n 1 ceph -s; echo; ceph osd df; echo; ceph pg dump | grep -v activeclean

相关文章:

Ceph运维实战:从‘ceph -s’到‘systemctl’,手把手教你搞定集群日常管理与故障排查

Ceph运维实战:从集群状态检查到服务管理的完整指南 清晨7:30,运维工程师小李的电脑弹出一条告警:Ceph集群出现OSD异常。对于刚接触Ceph运维的小李来说,这既是一次挑战也是学习机会。本文将带你走进Ceph运维的日常工作场景&#xf…...

如何彻底掌握Dism++:Windows系统维护的终极解决方案

如何彻底掌握Dism:Windows系统维护的终极解决方案 【免费下载链接】Dism-Multi-language Dism Multi-language Support & BUG Report 项目地址: https://gitcode.com/gh_mirrors/di/Dism-Multi-language 还在为Windows系统维护而烦恼吗?磁盘空…...

MATLAB R2022b新功能实测:用stem函数直接画表格数据,效率提升不止一点点

MATLAB R2022b新功能实测:用stem函数直接画表格数据,效率提升不止一点点 如果你经常用MATLAB处理表格或时间序列数据,R2022b版本带来的stem函数升级绝对值得你立刻升级。这次更新彻底改变了我们处理结构化数据可视化的方式——现在可以直接对…...

刚刷到_“网安月薪3万”想冲?先停!这4个坑一定要避开

网络安全学习必看:收藏这份避坑指南,让你少走3年弯路 文章揭示了网络安全学习的5大误区:将网络安全与黑客行为混淆、误认为行业缺人便随意入门、迷信高薪入行、期望通过挖漏洞致富,以及缺乏系统学习方法。强调网络安全核心是&quo…...

终极指南:解决Krita AI Diffusion插件“Process exited with code 1“安装错误

终极指南:解决Krita AI Diffusion插件"Process exited with code 1"安装错误 【免费下载链接】krita-ai-diffusion Streamlined interface for generating images with AI in Krita. Inpaint and outpaint with optional text prompt, no tweaking requir…...

高转化网站的共性:都做好了这10个图文排版细节

在网页设计领域,许多作品往往从“动手”开始,却缺乏一套清晰、完整的设计解决方案。即使是经验丰富的设计师,也常会依赖直觉与惯性,凭多年感觉直接铺开设计——这种做法固然高效,但真的能带来最佳效果吗?实…...

终极NVIDIA显卡优化指南:5个简单步骤彻底解决游戏卡顿问题

终极NVIDIA显卡优化指南:5个简单步骤彻底解决游戏卡顿问题 【免费下载链接】nvidiaProfileInspector 项目地址: https://gitcode.com/gh_mirrors/nv/nvidiaProfileInspector 还在为游戏画面撕裂、帧率不稳而烦恼吗?NVIDIA Profile Inspector这款…...

用CubeIDE搞定LCD12864:手把手教你移植字库并显示自定义汉字

STM32CubeIDE实战:LCD12864自定义字库开发全指南 在嵌入式设备的人机交互界面开发中,LCD12864液晶屏因其高性价比和良好的显示效果被广泛应用。但当我们需要显示特殊符号、罕见汉字或自定义图形时,内置字库往往无法满足需求。本文将带你从零开…...

元宇宙压力测试:新职业需求分析报告

新大陆的守护者随着元宇宙从构想步入产业实践,一个融合虚拟现实、人工智能、区块链与物联网的沉浸式数字世界正在形成。这片“新大陆”并非仅仅提供娱乐与社交,更承载着日益复杂的经济活动与社会交互。其稳定运行不再只是一个技术问题,而是关…...

RPFM终极指南:10个技巧让你成为Total War模组制作专家

RPFM终极指南:10个技巧让你成为Total War模组制作专家 【免费下载链接】rpfm Rusted PackFile Manager (RPFM) is a... reimplementation in Rust and Qt5 of PackFile Manager (PFM), one of the best modding tools for Total War Games. 项目地址: https://git…...

保姆级教程:在Ubuntu 20.04上为ARM开发板配置QtCreator 4.14(含gcc/g++编译器避坑指南)

保姆级教程:在Ubuntu 20.04上为ARM开发板配置QtCreator 4.14(含gcc/g编译器避坑指南) 刚接触嵌入式开发的工程师们,是否曾被QtCreator与ARM工具链的配置折磨得焦头烂额?当你在Ubuntu系统上反复尝试却始终遭遇"Pat…...

智能自动化神器:3个核心功能彻底改变你的英雄联盟游戏体验

智能自动化神器:3个核心功能彻底改变你的英雄联盟游戏体验 【免费下载链接】League-Toolkit An all-in-one toolkit for LeagueClient. Gathering power 🚀. 项目地址: https://gitcode.com/gh_mirrors/le/League-Toolkit League Akari是一款为英…...

三步搞定国家中小学智慧教育平台电子课本下载:新手也能轻松掌握的完整指南

三步搞定国家中小学智慧教育平台电子课本下载:新手也能轻松掌握的完整指南 【免费下载链接】tchMaterial-parser 国家中小学智慧教育平台 电子课本下载工具,帮助您从智慧教育平台中获取电子课本的 PDF 文件网址并进行下载,让您更方便地获取课…...

网页图片格式转换难题:如何3秒内解决格式不兼容问题?

网页图片格式转换难题:如何3秒内解决格式不兼容问题? 【免费下载链接】Save-Image-as-Type Save Image as Type is an chrome extension which add Save as PNG / JPG / WebP to the context menu of image. 项目地址: https://gitcode.com/gh_mirrors…...

别再只盯着PSNR了!图像修复/超分实战中,SSIM、LPIPS、FID到底该怎么选?

图像修复与超分实战:如何科学选择评估指标? 当你熬了几个通宵训练出的超分辨率模型在测试集上PSNR值爆表,但生成的图像却让产品经理皱起眉头说"看起来怪怪的"时,作为工程师的你是否感到困惑?这种"指标很…...

TlbbGmTool:5分钟上手,轻松管理天龙八部单机版游戏数据

TlbbGmTool:5分钟上手,轻松管理天龙八部单机版游戏数据 【免费下载链接】TlbbGmTool 某网络游戏的单机版本GM工具 项目地址: https://gitcode.com/gh_mirrors/tl/TlbbGmTool 还在为管理《天龙八部》单机版游戏数据而烦恼吗?是否每次调…...

Vue项目里如何优雅地集成纯CSS悬浮导航?一个文件搞定侧边栏客服菜单

Vue项目中如何用纯CSS实现高颜值悬浮导航?三合一侧边栏实战 在电商后台或企业官网中,悬浮式侧边栏已成为提升用户操作效率的标准配置。不同于传统固定在顶部的导航栏,这种悬浮在视窗边缘的轻量级交互模块,既能保持随时可用的便捷性…...

告别敏捷!分布式团队正在回归瀑布制的真相——软件测试视角的深度剖析

一场正在发生的范式回摆在敏捷宣言问世二十余年后,软件工程领域正悄然经历一场静默但深刻的反思。尤其是在成员遍布全球、时区交错的分布式团队中,敏捷方法论所描绘的“理想国”正遭遇现实的无情拷问。每日站会沦为形式主义的远程汇报,迭代周…...

基于ESP32的磁吸轨道运输系统设计与实现

1. 项目概述:磁吸道路运输系统的设计初衷在模型铁路领域,TT比例(1:120)一直是个充满挑战的尺度。传统轨道系统需要复杂的布线,而道路车辆的控制更是难题。这个项目正是为了解决这些痛点而生——通过磁吸技术和ESP32控制…...

JSONEditor完整教程:轻松掌握JSON可视化编辑的终极指南

JSONEditor完整教程:轻松掌握JSON可视化编辑的终极指南 【免费下载链接】jsoneditor A web-based tool to view, edit, format, and validate JSON 项目地址: https://gitcode.com/gh_mirrors/js/jsoneditor JSON数据在现代Web开发中无处不在,无论…...

Windows Android应用安装终极指南:告别模拟器的5个快速步骤

Windows Android应用安装终极指南:告别模拟器的5个快速步骤 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 你是否厌倦了在Windows上使用笨重的Android模拟…...

告别UDP丢包!手把手教你用NIOS软核在FPGA上实现稳定TCP通信(附完整工程代码)

FPGA实战:基于NIOS II软核的高性能TCP通信架构设计与优化 在工业自动化、医疗影像传输和实时数据采集等领域,FPGA与上位机的稳定通信一直是开发者面临的挑战。传统UDP方案虽然实现简单,但数据丢失和乱序问题常常导致系统可靠性下降。本文将分…...

如何快速掌握R3nzSkin:英雄联盟国服换肤的完整指南

如何快速掌握R3nzSkin:英雄联盟国服换肤的完整指南 【免费下载链接】R3nzSkin-For-China-Server Skin changer for League of Legends (LOL) 项目地址: https://gitcode.com/gh_mirrors/r3/R3nzSkin-For-China-Server 在英雄联盟国服中,你是否曾羡…...

I2C总线长距离传输解决方案与信号完整性优化

1. I2C总线长距离传输的挑战与解决方案在嵌入式系统和设备间通信中,I2C总线因其简单的两线制设计(SCL时钟线和SDA数据线)而广受欢迎。然而标准I2C协议最初设计用于板级短距离通信,当需要扩展到20米甚至更长距离时,会遇…...

PyCharm + PyQt5 GUI开发环境搭建:从安装包到配置工具的完整避坑指南

PyCharm PyQt5 GUI开发环境搭建:从安装包到配置工具的完整避坑指南 第一次接触PyQt5 GUI开发时,最让人头疼的往往不是写代码本身,而是环境搭建这个看似简单却暗藏玄机的环节。你是否遇到过这些情况:明明按照教程安装了pyqt5&…...

Unity场景道具写实

Unity场景道具SuburbNeighborhoodHousePack资源-CSDN下载...

APK Installer:Windows平台的Android应用生态扩展技术方案

APK Installer:Windows平台的Android应用生态扩展技术方案 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 在数字化工作流日益复杂的今天,操作系…...

SAP ABAP 深度剖析:COMMIT WORK 与 ROLLBACK WORK 的异步世界与同步抉择

1. 异步与同步的数据库提交机制 在SAP ABAP开发中,COMMIT WORK和ROLLBACK WORK就像数据库操作的"确认键"和"撤销键"。但很多人不知道的是,标准的COMMIT WORK实际上是个"慢性子"——它采用的是异步更新机制。这就好比你在电…...

别再为相位差发愁了!手把手教你用STM32F103的ADC1和ADC3实现精准同步采样

STM32多ADC同步采样实战:相位测量精度提升指南 在电机控制、电力监测或音频处理领域,工程师们经常需要面对一个棘手问题——当两路信号存在相位差时,传统轮流采样方式会导致相位信息失真。去年参与某变频器项目时,我们就曾因电流电…...

51单片机入门实战:用独立按键控制数码管显示0~9(附Proteus仿真文件)

51单片机实战:独立按键与数码管交互全流程解析 第一次接触51单片机时,看着那些闪烁的LED和跳动的数字,总有种打开新世界大门的兴奋感。记得我最初尝试用按键控制数码管显示时,按键抖动问题让我调试到凌晨三点——这段经历让我深刻…...