Ceph RDMA 集群部署教程
一、Ceph RDMA 介绍RDMA(Remote Direct Memory Access)是一种远程直接内存访问技术,它允许客户端系统将数据从存储服务器的内存直接复制到该客户端自己的内存中。这种内存直通技术可以提升存储带宽,降低访问时延,同时还可以减少客户端和存储的 CPU 负载。 按照 Ceph 文档给出的介绍,目前虽然 Ceph 已经支持 RDMA 功能,但是除了其功能可能处于实验阶段,并且支持的能力可能受限,参考文档 。所以我的意见是并不建议在生产环境中使用。 1.2、RDMA 环境初始化以下测试工具均基于 CentOS 8.5.2111 进行测试,不同系统类型版本对应的软件包及命令可能存在差异。 查看 RDMA 硬件及驱动信息: # RDMA 相关软件dnf install -y infiniband-diags rdma-core rdma-core-devel perftest \ librdmacm librdmacm-utils libibverbs libibverbs-utils iproute# 查看 ib 网卡信息# 来自软...
Ceph CSI 对接 K8S 指南
一、介绍1.1、Ceph CSI 介绍Ceph CSI 插件实现了支持 CSI 的容器编排器 (CO) 与 Ceph 集群之间的接口。它们支持动态配置 Ceph 卷并将其附加到工作负载。项目地址: https://github.com/ceph/ceph-csi 。该仓库包含用于 RBD、CephFS 和 Kubernetes sidecar 部署 YAML 的 Ceph 容器存储接口 (CSI) 驱动程序,以支持 CSI 功能:provisioner、attacher、resizer、driver-registrar 和 snapper。 本文基于 Ceph CSI v3.14.1 版本进行测试。 Ceph CSI 驱动与测试过的 Kubernetes 版本信息表: (参考 known-to-work-co-platforms) Ceph CSI 版本 Kubernetes 版本 v3.14.1 v1.30、v1.31、v1.32 v3.14.0 v1.30、v1.31、v1.32 v3.13.1 v1.29、v1.30、v1.31 v3.13.0 v1...
Ceph CRUSH 设计实现剖析
CRUSH(Controlled Replication Under Scalable Hashing)是 Ceph 存储系统中用于数据分布和复制的算法。关于 CRUSH 的论文解析参考: 译 - CRUSH: Controlled, Scalable, Decentralized Placement of Replicated Data 。CRUSH map 是 Ceph 集群中一个关键的配置组件,它定义了数据如何在集群的物理硬件上分布。 CRUSH 算法使得 Ceph 能够在无需中心化或者分布式元数据管理器的情况下,高效、可靠地进行数据复制和恢复。 一、CRUSH map 解析CRUSH map 包含了集群的层次结构和各种规则,这些规则定义了数据应该如何在集群中分布。 CRUSH map 主要包含以下几个部分: Tunables : 一组可用于调整 CRUSH 算法行为的参数。 Devices : 定义集群中所有可用的存储设备的列表。 Types : 定义存储层次结构中的不同层级类型。 Buckets : 组织和管理存储设备(如 OSDs )的逻辑容器。 Rules : 定...
译 - CRUSH: Controlled, Scalable, Decentralized Placement of Replicated Data
译作: 可控的、可扩展的、分布式的副本数据放置算法,论文原文 。 该论文于 2006 年 11 月发布于 SC2006 。 CRUSH 是一种用于大规模分布式存储系统的数据分布算法,它通过伪随机函数将数据对象映射到存储设备上,无需依赖中央目录。CRUSH 算法设计考虑了系统的动态性,支持在添加或移除存储设备时高效地重组数据,并最小化不必要的数据移动。此外,CRUSH 支持多种数据复制和可靠性机制,并允许根据用户定义的策略进行数据分布,这些策略能够在故障域之间有效地分离副本,增强数据安全性。 CRUSH 的核心是其层级集群图,该图描述了存储集群的物理和逻辑结构,并通过一系列规则来确定数据的放置位置。CRUSH 算法通过将数据均匀分布在加权设备上,保持存储和设备带宽资源的平衡利用。算法还考虑了设备的故障和过载情况,能够在设备发生故障或过载时重新分配数据,避免数据丢失并优化系统性能。 CRUSH 的映射性能高效,计算复杂度为 O(logn) ,适用于管理大规模(多 PB 级)的存储系统。CRUSH的设计不仅提高了系统的可扩展性和性能,还通过智能的数据分布策略提高了系统的可靠性和数据...
译 - Replication Under Scalable Hashing: A Family of Algorithms for Scalable Decentralized Data Distribution
译作: 可扩展哈希下的复制: 可扩展分散数据分布的算法家族 , 原文地址 ,该论文发表于 2004 年 4 月在新墨西哥州圣达菲举行的第 18 届国际并行和分布式处理研讨会 (IPDPS 2004) 论文集。这篇论文介绍了一系列名为 RUSH(Replication Under Scalable Hashing) 的算法,用于在去中心化的存储系统中分配和管理数据。每种 RUSH 变体都有其独特的优势和局限性,选择哪一种取决于具体的系统需求和操作环境。 算法特点: 允许在线调整特定对象的复制程度,且不受其他对象复制程度的影响。 保证数据复制的安全性,即确保同一对象的副本不会存储在同一硬盘上。 支持加权,允许将不同年份的磁盘添加到系统中。加权可以让系统充分利用最新的技术,也可以淘汰较旧的技术。 支持最佳或接近最佳的重组,当系统添加/淘汰磁盘时,会最大限度地减少需要移动的对象数量,以使系统恢复平衡。 支持在线重组,无需长时间锁定文件系统。 完全去中心化,无需中央目录,客户端可以并行计算数据位置。 极少的资源需求,算法速度非常快,并且占用的内存极少。 算法类别: R...
Ceph 集群性能测试工具详解
本文详细介绍了包括 rados bench、rbd bench、dd 、fio 、vdbench 、mdtest 、iozone、cosbench、cbt 等测试工具对于 Ceph 集群的性能压测的使用。对于每个工具都提供了压测命令参数、示例命令等使用说明,实现了对 Ceph 块存储、文件存储、对象存储、rados 对象存储等存储类别的性能压测。文中重点阐述了各命令的使用格式、基本功能和参数选择,为用户在 Ceph 环境中进行性能评估提供了实用指南。 一、rados bench以下基于 v19.2.1 版本进行测试。 用途: 测试 ceph rados 对象存储性能; 1.1、测试配置参数命令格式: rados bench $seconds $type [args...] $seconds : 压测运行时间; $type : 压测类型,可选值为 write/seq/rand (分别代表写/连续读/随机读); -p : 指定压测的目标 pool ; -b : 只有当压测类型为 write 时可用,用于设置写入 block 的大小,默认为...
Ceph 常用命令汇总
一、常用命令1.1、Pool# 查看 poolceph osd pool ls detail# 创建 poolceph osd pool create testpool 32 32ceph osd pool set testpool pg_autoscale_mode off# 调整 pool pg/pgp , 并关闭自动调整ceph osd pool set testpool pg_num 32ceph osd pool set testpool pgp_num 32ceph osd pool set testpool pg_autoscale_mode off# 设置 pool 最小副本ceph osd pool set testpool min_size 1ceph osd pool set testpool size 1 --yes-i-really-mean-it# 移除 poolceph tell mon.\* injectargs '--mon-allow-pool-delete=true'ceph osd pool delete testpoo...
ceph-ansible 集群部署运维指南
本文详细介绍了使用 ceph-ansible 部署和运维 Ceph 集群的过程,包括各版本及其依赖的 Ansible 版本的对应关系、自定义模块与任务的结构、集群部署、运维操作及相关示例。特别强调了环境配置、节点连通性验证、MDS 和 OSD 组件的管理,以及安全和性能优化注意事项。 一、项目介绍以下分析基于 ceph-ansible stable-6.0 分支代码。 1.1、版本与对应关系目前 ceph-ansible 采用不同的代码分支来支持部署不同版本的 ceph 集群,且每个代码分支需要特定的 ansible 版本支持,具体的对应关系如下(以下对应关系更新于 2025/05/23 ): ceph-ansible 分支 支持的 ceph 版本 依赖的 ansible 核心版本 依赖的 ansible 发布版本包 stable-3.0 Jewel(V10), Luminous(V12) 2.4 - stable-3.1 Luminous(V12), Mimic(V13) 2.4 - stable-3.2 Luminous(V12), M...
译 - The Google File System
《The Google File System》 是由 Google 公司开发的分布式文件系统,旨在解决存储海量数据的问题。GFS 采用了一些独特的设计,如基于大块的文件存储、多副本存储和自动故障恢复等。GFS 能够支持高并发、高吞吐量的数据访问,并且具有良好的扩展性和可靠性。GFS 的设计思想已经被广泛应用于其他分布式存储系统的开发中,是分布式存储领域的重要里程碑之一。 摘要We have designed and implemented the Google File System, a scalable distributed file system for large distributed data-intensive applications. It provides fault tolerance while running on inexpensive commodity hardware, and it delivers high aggregate performance to a large number of clients. 我们设计并实现了 ...
Redis异地多活方案杂谈
Redis 的异地多活是一种跨地域容灾、并提供低延迟访问的部署方案。业界提供了很多的构建思路,这里将对比一下这里方案,并详细介绍一下业界的设计与实现。 一、简介二、思考2.1、Redis异地多活的定位在使用 Redis 的异地多活部署方案之前,为了提供 Redis 集群的高可用,我们也会提供跨地域主从的部署方式,通过这种方式我们也能实现地域级别的容灾能力。考虑到业务在使用 Redis 前的关注点一般是:性能、延迟、可用性以及数据一致性,我们将通过这四个关键点来对比一下这两种方案的不同: 性能(高性能, QPS ): 跨地域主从:跨地域写性能较差,本地域读性能较好; 异地多活:本地域读写性能较好; 延迟(低延迟, Avg , P99 等): 跨地域主从:跨地域写延迟交高,本地域读延迟较低; 异地多活:本地域读写延迟较低; 可用性(高可用): 跨地域主从:集群间的容灾切换,存在主从切换的瞬时访问问题,满足高可用需求; 异地多活:集群内的主从故障切换,满足高可用需求; 数据一致性: 跨地域主从:提供 Redis 的主从同步的数据一致性保障,弱最终一致性(主从数据同步可能会...

