Ceph性能调优
1. 最佳实践
1.1 基本
- 监控节点对于集群的正确运行非常重要,应当为其分配独立的硬件资源。如果跨数据中心部署,监控节点应该分散在不同数据中心或者可用性区域
- 日志可能会让集群的吞吐量减半。理想情况下,应该在不同磁盘上运行操作系统、OSD数据、OSD日志。对于高吞吐量工作负载,考虑使用SSD进行日志存储
- 纠删编码(Erasure coding)可以用于存储大容量的一次性写、非频繁读、性能要求不高的数据。纠删编码存储消耗小,但是IOPS也降低
- 目录项(Dentry)和inode缓存可以提升性能,特别是存在很多小对象的情况下
- 使用缓存分层(Cache Tiering)可以大大提升集群性能。此技术可以在热、冷Tier之间自动的进行数据迁移。为了最大化性能,请使用SSD作为缓存池、并且在低延迟节点上部署缓存池
- 部署奇数个数的监控节点,以便仲裁投票(Quorum Voting),建议使用3-5个节点。更多的节点可以增强集群的健壮性,但是mon之间需要保持数据同步,这会影响性能
- 诊断性能问题的时候,总是从最底层(磁盘、网络)开始,然后再检查块设备、对象网关等高层接口
- 在大型集群里用单独的集群网络(Cluster Newwork)可显著地提升性能和安全性
1.2 文件系统
- 限制最大文件大小,创建极大的文件会导致删除过程很缓慢
- 避免在生产环境下使用试验特性。你应该使用单个活动MDS、不使用快照(默认如此)
- 避免增大max_mds,可能导致大于1个的MDS处于Active
- 客户端选择:
- FUSE,容易使用、容易升级和服务器集群保持一致
- 内核,性能好
- 不同客户端的功能并不完全一致,例如FUSE支持客户端配额,内核不支持
- 对于Ceph 10.x,最好使用4.x内核。如果必须使用老内核,你应该使用FUSE作为客户端
2. 基础设施要求
2.1 处理器
OSD需要消耗CPU资源,可以将其绑定到一个核心上。如果使用纠删码,则需要更多的CPU资源。此外,集群处于Recovery状态时,OSD的CPU消耗显著增加
MON不怎么消耗CPU资源,几个G内存的单核心物理机即可。
MDS相当消耗CPU资源,考虑4核心或更多CPU。如果依赖于CephFS处理大量工作,应当分配专用物理机
2.2 内存
MON/MDS需要不少于2G内存。OSD通常需要1G内存(和存储容量有关)。此外,集群处于Recovery状态时,OSD的内存消耗显著增加,因此配备2G内存更好
2.3 网络
最好具有万兆网络,公共网络、集群网络需要物理隔离(双网卡连接到独立交换机)。对于数百TB规模的集群,千兆网络也能够正常工作
集群网络往往消耗更多的带宽,此外,高性能的集群网络对于Recovery的效率很重要。
如果交换机支持,应当启用Jumbo帧,可以提升网络吞吐量。
2.4 磁盘
在生产环境下,最好让OSD使用独立的驱动器,如果和OS共享驱动,最好使用独立的分区。
通常使用SATA SSD作为日志存储,预算足够可以考虑PCIE SSD。Intel S3500的4K随机写 IOPS可达10K+
关于RAID:
- 最好不要使用RAID
- 如果有RAID卡,并且磁盘数量太多,而对应的内存数量不足(每个OSD大概需要2G内存),可以RAID0
- 不要使用RAID5,因为随机IO的性能降低
关于filestore:
- 建议使用SSD存储日志,以减少访问时间、读取延迟,实现吞吐量的显著提升
- 可以为创建SSD分区,每个分区作为一个OSD的日志存储,但是最好不要超过4个
2.5 BIOS设置
- 启用超线程Hyper-Threading技术
- 关闭节能
- 关闭NUMA
2.6 内核参数
# 修改pid max
# 执行命令
echo 4194303 > /proc/sys/kernel/pid_max
# 或者
sysctl -w kernel.pid_max=4194303# read_ahead, 数据预读到内存,提升磁盘读操作能力
echo "8192" > /sys/block/sda/queue/read_ahead_kb# 禁用交换文件
echo "vm.swappiness = 0" | tee -a /etc/sysctl.conf# I/O Scheduler:SSD使用用noop,SATA/SAS使用deadline
echo "deadline" > /sys/block/sda/queue/scheduler
echo "noop" > /sys/block/sda/queue/scheduler
2.7 文件系统
底层文件系统的稳定性和性能对于Ceph很重要。在开发、非关键部署时可以使用btrfs,这也是未来的方向。关键的生产环境下应该使用XFS。
在高可扩容性的存储环境下,XFS和btrfs相比起ext3/4有很大优势。XFS和btrfs都是日志式文件系统,更健壮,容易从崩溃、断电中恢复。日志文件系统会在执行写操作之前,把需要进行的变更记录到日志。
OSD依赖于底层文件系统的扩展属性(Extended Attributes,XATTRs),来存储各种内部对象状态和属性。XFS支持64KB的XATTRs,但是ext4就太小了,你应该为运行在ext4上的OSD配置:
# 新版本Ceph此配置项已经没了
filestore xattr use omap = true
关于文件系统的一些知识:
- XFS 、 btrfs 和 ext4 都是日志文件系统
- XFS很成熟
- btrfs相对年轻,他是一个写时复制(COW)文件系统,因而支持可写文件系统快照。此外它还支持透明压缩、完整性校验
3. 归置组
3.1 PG数量
PG的数量应当总是和PGP相同。PGP是为了实现定位而创建的PG。再平衡仅仅再pgp_num被修改后才会触发,仅仅修改pg_num不会触发。
随着OSD数量的变化,选取适当的PG数量很重要。因为PG数量对集群行为、数据持久性(Durability,灾难性事件发生时保证数据堡丢失)有很大影响。此外,归置组很耗计算资源,所以很多存储池x很多归置组会导致性能下降。建议的取值:
- 对于小于5个OSD的集群:设置为128
- 5-10个OSD的集群:设置为512
- 10-50个OSD的集群:设置为1024
- 超过50个OSD的集群,需要自己权衡,利用pgcalc来计算适合的PG数量
《Ceph分布式存储学习指南》一书中建议的PG数量算法:
每个池的PG数量 = OSD总数 * 100 / 最大副本数 / 池数
计算结果需要向上舍入到2的N次幂。此外该书倾向于让所有池具有相同的PG数量。
4. 再平衡
- 加入新的OSD后,考虑设置权重为0,然后逐渐增加权重,这样可以避免性能下降
相关文章:
Ceph性能调优
1. 最佳实践 1.1 基本 监控节点对于集群的正确运行非常重要,应当为其分配独立的硬件资源。如果跨数据中心部署,监控节点应该分散在不同数据中心或者可用性区域日志可能会让集群的吞吐量减半。理想情况下,应该在不同磁盘上运行操作系统、OSD…...
机器学习-问答题准备(英文)-更新中
第一章 入门 How would you define Machine Learning? Machine Learning is about building systems that can learn from data. Learning means getting better at some task, given some performance measure. Can you name four types of problems where it shines? To r…...

展示演示软件设计制作(C语言)
展示演示软件设计制作 所谓展示演示软件就像是PPT那样的东西。PPT是幻灯片式的展示,而我设计的软件是多媒体的,多样展示方法的,多种功能的。可以扩展为产品展示,项目介绍,景点导游,多媒体授课,…...

Android 自定义view 入门 案例
自定义一个圆环进度条: 1.首页Android Studio创建一个项目 2.在项目src/xxx/目录下右键选择创建一个自定义view页面:new->UICompoent->customer view 3.输入自定义名称,选择开发语言 4.确定之后,自动生成3个文件一个是&…...

[imangazaliev/didom]一个简单又快速的DOM操作库
DiDOM是一个功能齐全、易于使用和高性能的解析器和操作库,可以帮助PHP开发者更加高效地处理HTML文档。 为了更好地了解这个项目,我们先来看看下面的介绍。 安装 你可以使用composer来安装DiDOM,只需要在你的项目目录下执行下面的命令&…...

Cookie和Session的工作流程及区别(附代码案例)
目录 一、 HTTP协议 1.1 为什么HTTP协议是无状态的? 1.2 在HTTP协议中流式传输和分块传输编码的区别 二、Cookie和Session 2.1 Cookie 2.2 Session 2.3 Cookie和Session的区别 三、servlet中与Cookie和Session相关的API 3.1 HttpServletRequest 类中的相关方…...

适用于高级别自动驾驶的驾驶员可预见误用仿真测试
摘要 借助高级别自动驾驶(HAD),驾驶员可以从事与驾驶无关的任务。在系统出现失效的情况下,驾驶员应该合理地重新获得对自动驾驶车辆(AV)的控制。不正确的系统理解可能会引起驾驶员的误操作,并可能导致车辆级的危害。ISO 21448预期功能安全标…...

Linux之进程知识点
一、什么是进程 进程是一个运行起来的程序。 问题思考: ❓ 思考:程序是文件吗? 是!都读到这一章了,这种问题都无需思考!文件在磁盘哈。 本章一开始讲的冯诺依曼,磁盘就是外设,和内…...

一种供水系统物联网监测系统
1.1供水系统 1.1.1监测范围选择依据 (1)管网老化区域管网 管网建设年代久远,通常管网发生破损问题较大,根据管网本身属性和历史发生事件的统计分析,结合数理统计,优先选择管网老化区域的管段所在区域进行…...

Linux驱动开发——字符设备(2)
目录 虚拟串口设备驱动 一个驱动支持多个设备 习题 虚拟串口设备驱动 字符设备驱动除了前面搭建好代码的框架外,接下来最重要的就是要实现特定于设备的操作方法,这是驱动的核心和关键所在,是一个驱动区别于其他驱动的本质所在,…...

【MySQL数据库原理】MySQL Community安装与配置
目录 安装成功之后查看版本验证1、介绍、安装与配置数据库2、操作MySQL数据库3、MySQL数据库原理安装成功之后查看版本验证 SELECT VERSION();查看mysql版本号 1、介绍、安装与配置数据库 下载安装包:https://download.csdn.net/download/weixin_41194129/87672588 MySQL…...

【ROS参数服务器增删改c++操作1】
需求:实现参数服务器参数的增删改查操作。 在C中实现参数服务器数据的增删改查,可以通过两套API实现:. ros::NodeHandle ros::param下面为具体操作演示: 在src下面的自己定义的作用包下面新建文件。 比如我的是一直存在的demo03_ws文件下的src里面&…...
elasticsearch 常用数据类型详解和范例
主要内容 elasticsearch 中的字符串(keyword)类型 的详解和范例 elasticsearch 中的字符串/文本(text)类型 的详解和范例 elasticsearch 中的数字(数值)类型 的详解和范例 elasticsearch 中的布尔&#…...

力扣119杨辉三角 II:代码实现 + 方法总结(数学规律法 记忆法/备忘录)
文章目录第一部分:题目第二部分:解法①-数学规律法2.1 规律分析2.2 代码实现2.3 需要思考第三部分:解法②-记忆法(备忘录)第四部分:对比总结第一部分:题目 🏠 链接:119.…...
安装pandas遇到No module named ‘_bz2’ 的解决方案
出现这个问题我们可以按照这篇博客去解决: https://blog.csdn.net/bf96163/article/details/128654915 如果解决不了,可以这样去做: 1.确保安装了 对应的库 // ubuntu安装命令 sudo apt-get install bzip2-devel // centos安装命令 sudo y…...

【数据治理-05】什么数据才是货真价实的数据资产,一起聊聊数据资产
在国家层面一些列文件、纲要、政策、办法等政府力量的推动下,数据资产这个词越来越频繁的出现在我们寻常工作当中,现在越来越觉得这个词被滥用,大有“一切数据皆是资产”的感觉,业务数据是资产、技术数据是资产,不能共…...
第三章 ARM处理器体系结构【嵌入式系统】
第三章 ARM处理器体系结构【嵌入式系统】前言推荐第三章 ARM处理器体系结构3.1 概述3.2 ARM处理器的结构3.7 ARM的异常中断处理最后前言 以下内容源自《【嵌入式系统】》 仅供学习交流使用 推荐 无 第三章 ARM处理器体系结构 留着占位 敬请期待 3.1 概述 3.2 ARM处理器的…...
最速下降法
首先,计算函数f的梯度向量:∇f(x1,x2)[2x150x2]\nabla f(x_1,x_2) \begin{bmatrix}2x_1\\50x_2\end{bmatrix}∇f(x1,x2)[2x150x2] 然后,选择一个初始点(x10,x20)(x_1^0,x_2^0)(x10,x20),比如(0,0)(0,0)(0,0)。 接…...

R语言实践——ggplot2+ggrepel绘制散点+优化注释文本位置
简介 书接adjustText实践——调整matplotlib散点图标签,避免重复 上文中,matplotlibadjustText对于我的实例来说并没有起到很好的效果。所以,博主决定在R中利用gglot2ggrepel绘制,期待效果。 操作过程 博主不常使用Rÿ…...

[TIFS 2022] FLCert:可证明安全的联邦学习免受中毒攻击
FLCert: Provably Secure Federated Learning Against Poisoning Attacks | IEEE Journals & Magazine | IEEE Xplore 摘要 由于其分布式性质,联邦学习容易受到中毒攻击,其中恶意客户端通过操纵其本地训练数据和/或发送到云服务器的本地模型更新来毒…...

模块二:C++核心能力进阶(5篇) 篇一:《STL源码剖析:vector扩容策略与迭代器失效》
一、前言:重新认识vector的复杂性 在C开发者中,std::vector常被视为"动态数组"的简单实现,但其底层机制实则蕴含着深刻的工程智慧。本篇将通过: 多维度源码剖析(GCC/Clang/MSVC三平台实现对比)…...

2025最新 MacBook Pro苹果电脑M系列芯片安装zsh教程方法大全
2025最新 MacBook Pro苹果电脑M系列芯片安装zsh教程方法大全 本文面向对 macOS 环境和终端操作尚不熟悉的“小白”用户。我们将从最基础的概念讲起,结合实际操作步骤,帮助你在 2025 年最新 MacBook Pro(搭载苹果 M 系列芯片)的环境…...
HTTP 如何升级成 HTTPS
有一个自己的项目需要上线,域名解析完成后,发现只能使用 http 协议,这在浏览器上会限制,提示用户不安全,所以需要把 HTTP 升级成 HTTPS 协议,但又不想花钱。 前提条件: 已经配置好 Nginx 服务器…...
基于大模型的急性乳腺炎全病程风险预测与综合治疗方案研究
目录 一、引言 1.1 研究背景与意义 1.2 研究目的与创新点 1.3 研究方法与技术路线 二、急性乳腺炎概述 三、大模型技术原理与应用现状 3.1 大模型基本原理 3.2 在医疗领域的应用案例 3.3 选择大模型用于急性乳腺炎预测的依据 四、大模型预测急性乳腺炎各阶段风险 4.…...
github actions入门指南
GitHub Actions 是 GitHub 提供的持续集成和持续交付(CI/CD)平台,允许开发者自动化软件工作流程(如构建、测试、部署)。以下是详细介绍: 一、核心概念 Workflow(工作流程) 持续集成的…...

嵌入式软件--stm32 DAY 8.5 基础复习总结
1.时钟树 在数据手册里面,有一张密密麻麻的图,正是时钟系统里的时钟树。 对于时钟,我们注意有两点。一个是系统时钟SYSCLK,一个是依赖外部晶振生成的RTC. RTC以外部低速晶振作为时钟源或者外部高速晶振128分频后作为时钟源,又或者…...

PySide6 GUI 学习笔记——常用类及控件使用方法(地址类QUrl)
文章目录 地址类QUrl主要功能URL 格式介绍常见 scheme(协议)类型QUrl 类常用方法常用方法示例典型应用场景 地址类QUrl QUrl 是 PySide6.QtCore 模块中的一个类,用于处理和操作 URL(统一资源定位符)。它可以解析、构建…...

【开发技巧指北】IDEA修改默认绑定Maven的仓库地址
【开发技巧指北】IDEA修改默认绑定Maven的仓库地址 Microsoft Windows 11 家庭中文版 IIntelliJ IDEA 2025.1.1.1 默认的IDEA是有自己捆绑的Maven的(这是修改完毕的截图) 修改默认的Maven配置,路径是IDEA安装路径下的plugins D:\Softwares\I…...

用户资产化视角下开源AI智能名片链动2+1模式S2B2C商城小程序的应用研究
摘要:在数字化时代,平台流量用户尚未完全转化为企业的数字资产,唯有将其沉淀至私域流量池并实现可控、随时触达,方能成为企业重要的数字资产。本文从用户资产化视角出发,探讨开源AI智能名片链动21模式S2B2C商城小程序在…...
数据分析的方法总结
数据分析的方法总结 一.通用性方法总结 16种常用的数据分析方法汇总-CSDN博客 人人都应该掌握的9种数据分析方法_五 九种数据类型-CSDN博客 9种最常用数据分析方法,解决90%分析难题_数据分析经典算法与案例-CSDN博客 二.行业特殊性方法总结 数据分析20大基本分…...