ceph分布式存储实战(3)——ceph内部组件

本文涉及的产品
对象存储 OSS,20GB 3个月
对象存储 OSS,恶意文件检测 1000次 1年
对象存储 OSS,内容安全 1000次 1年
简介:

一、RADOS(Reliable Autonomic Distributed Object Storage)
1、rados的意思是
    可靠、自动、分布式对象存储(可靠的自主分布式对象存储)
2、rados的作用
    1、rados是ceph集群的基础,是ceph存储系统的核心,ceph中一切都是以对象的形式存储,而rados就是负责存储这些对象,无需考虑数据是啥类型
    2、确保数据的一致性和可靠性
    3、负责数执行数据的复制、故障检测和恢复
    4、负责数据在集群节点之间的迁移和再平衡
    5、ceph所有优秀特性都是rados提供的,如:
        分布式对象存储、高可用性、高可靠性、没有单点故障、自我修复、自我管理
    6、rados就是cpeh集群中的大脑,负责决策、调度等工作
图片.png    

图片.png



二、OSD(object storage daemon)
1、osd的意思是
    对象存储设备
2、osd的作用
    1、负责存储实际用户数据(数据将会以对象的形式存储在osd中)
    2、负责响应客户端读操作请求
    
    通常一个osd守护进程仅与ceph集群中的一个磁盘绑定
图片.png

图片.png

图片.png

三、ceph monitor(MON)
1、mon的意识是
    监控
2、mon的作用
    1、通过一系列map跟踪整个集群的健康状态,监控整个集群的监控状况
    2、map是指这几个组件的map:osd/mon/pg/crush,所有的集群节点都向mon节点报告状态,并分享每一个状态变化的信息
    3、一个mon为每一个组件维护一个独立的map,mon不存储实际的数据,这是osd的工作
    
四、librados库
1、作用
    1、是一种用来简化访问rados的方法
    2、支持php,ruby,python,java,c/c++
    3、librados支持直接访问rados
    4、开发者能够创建自己的接口来访问ceph存储集群

五、RBD
1、意思
    叫做ceph块设备,或者叫rados快设备
2、作用
    1、对外提供块存储,可以被映射、格式化、向磁盘一样被挂载到服务器
    2、支持精简制备和快照的特性
    
    精简置备(thin):
        使用精简置备格式。最初,精简置备的磁盘只使用该磁盘最初所需要的数据存储空间。如果以后精简磁盘需要更多空间,则它可以增长到为其分配的最大容量。
        简单的说就是为该磁盘文件指定增长的最大空间,需要增长的时候检查是否超过限额。

图片.png


六、RGW
1、意思
    叫做ceph对象网关,或者叫rados网关
2、作用
    1、提供了一个兼容Amazon S3和OpenStack对象存储API(Swift)的restful API接口
    2、还支持多租户和openstack的keystone身份验证服务

图片.png


七、MDS
1、意思
    叫做ceph元数据服务器
2、作用
    1、跟踪文件层次结构并存储只供CephFS使用的元数据
    2、mds不直接给客户端提供数据,因此可以避免系统中的一个单点故障
3、为ceph集群部署一个mds
    在之前的部署中,已经部署好了一个ceph存储集群,如需添加mds节点,在管理节点指向以下命令:
    ceph-deploy mds create ceph-node2
    
    
八、CephFS
1、意思
    叫做ceph文件系统
2、作用
    1、提供了一个任意大小且兼容POSIX的分布式文件系统
    2、依赖mds来跟踪文件层次结构,即元数据
    
    POSIX表示可移植操作系统接口(Portable Operating System Interface of UNIX,缩写为 POSIX ),
    POSIX标准定义了操作系统应该为应用程序提供的接口标准,是IEEE为要在各种UNIX操作系统上运行的软件
    而定义的一系列API标准的总称,其正式称呼为IEEE 1003,而国际标准名称为ISO/IEC 9945。
    
    关于posix更通俗易懂的解释可以参考以下网友的博文:
        https://www.cnblogs.com/weiweishuo/archive/2013/07/29/3222995.html

图片.png

 
九、CRUSH算法
    CRUSH全称Controlled Replication Under Scalable Hashing,是一种数据分发算法,类似于哈希和一致性哈希。哈希的问题在于数据增长时不能动态加Bucket,
    一致性哈希的问题在于加Bucket时数据迁移量比较大,其他数据分发算法依赖中心的Metadata服务器来存储元数据效率较低,CRUSH则是通过计算、接受多维参数的
    来解决动态数据分发的场景
    1、过去的存储机制
        过去的存储机制是,在存储数据时,首先要保存一份元数据,这个元数据存储的信息是数据存储在哪个节点和磁盘阵列的位置等信息
        每一次有新的数据存储时,最先更新的是元数据的信息,之后才是实际的数据存储
        
        这样的机制存在的缺点:
        1、不适合超大容量级别的数据存储,pb和zb级别的容量
        2、存在单点故障,万一丢失存储的元数据,面临的是丢失所有数据
        3、总而言之,防止核心元数据丢失是非常重要的,元数据管理太复杂,因此成为存储系统的瓶颈
        
    2、ceph的存储机制
        cursh算法,称:可扩展散列下的受控复制算法
        ceph的数据分发机制就是采用这个算法,也是cpeh数据存储的核心
        
        优点:
        1、crush算法准确的计算数据的写入位置和从哪个位置读取
        2、按需计算元数据,而不是存储元数据,消除了传统的元数据存储方法中的限制
        
        crush工作机制:
        1、元数据计算的负载是分布式的,仅在需要的时候执行(元数据计算的过程也叫做crush查找)
        2、crush的查找是在ceph客户端上执行,从而占用很少的ceph集群资源,性能更好
        
        crush查找步骤
        1、往ceph存储集群发起读或写的请求时,首先联系mon获取集群map副本
        2、mon向客户端返回集群map信息,包含:集群状态、配置等信息
        3、使用对象名称和池名称或者池ID将数据转换为对象
        4、将对象和PG数量一起经过散列来生成其在ceph池中最终存放的那个pg
        5、通过计算好的pg执行crush查找,计算出存储或获取数据的那个主OSD,计算完主OSD后得到OSD ID和辅OSD ID
        6、客户端直接联系那个OSD来存储或者读取数据
        
        crush是公平公正的
        1、crush会均匀的在整个集群的osd上写数据,
        2、强制集群中的所有OSD都要参与其中,这提高了性能和可靠性,同等的利用
        3、如果有的磁盘性能较好,如有的是SSD盘,有的是机械盘,那么crush可以为每个osd分配权重
            如基于机械盘的osd容量大,可以权重分配高一点,权重越高,crush将会写入更多的数据


图片.png



本文转自 TtrToby 51CTO博客,原文链接:http://blog.51cto.com/freshair/2057723

相关实践学习
借助OSS搭建在线教育视频课程分享网站
本教程介绍如何基于云服务器ECS和对象存储OSS,搭建一个在线教育视频课程分享网站。
相关文章
|
3月前
|
数据管理 API 调度
鸿蒙HarmonyOS应用开发 | 探索 HarmonyOS Next-从开发到实战掌握 HarmonyOS Next 的分布式能力
HarmonyOS Next 是华为新一代操作系统,专注于分布式技术的深度应用与生态融合。本文通过技术特点、应用场景及实战案例,全面解析其核心技术架构与开发流程。重点介绍分布式软总线2.0、数据管理、任务调度等升级特性,并提供基于 ArkTS 的原生开发支持。通过开发跨设备协同音乐播放应用,展示分布式能力的实际应用,涵盖项目配置、主界面设计、分布式服务实现及部署调试步骤。此外,深入分析分布式数据同步原理、任务调度优化及常见问题解决方案,帮助开发者掌握 HarmonyOS Next 的核心技术和实战技巧。
329 76
鸿蒙HarmonyOS应用开发 | 探索 HarmonyOS Next-从开发到实战掌握 HarmonyOS Next 的分布式能力
|
11天前
|
机器学习/深度学习 分布式计算 API
Python 高级编程与实战:深入理解并发编程与分布式系统
在前几篇文章中,我们探讨了 Python 的基础语法、面向对象编程、函数式编程、元编程、性能优化、调试技巧、数据科学、机器学习、Web 开发、API 设计、网络编程和异步IO。本文将深入探讨 Python 在并发编程和分布式系统中的应用,并通过实战项目帮助你掌握这些技术。
|
8天前
|
消息中间件 分布式计算 并行计算
Python 高级编程与实战:构建分布式系统
本文深入探讨了 Python 中的分布式系统,介绍了 ZeroMQ、Celery 和 Dask 等工具的使用方法,并通过实战项目帮助读者掌握这些技术。ZeroMQ 是高性能异步消息库,支持多种通信模式;Celery 是分布式任务队列,支持异步任务执行;Dask 是并行计算库,适用于大规模数据处理。文章结合具体代码示例,帮助读者理解如何使用这些工具构建分布式系统。
|
13天前
|
人工智能 Kubernetes 异构计算
大道至简-基于ACK的Deepseek满血版分布式推理部署实战
大道至简-基于ACK的Deepseek满血版分布式推理部署实战
|
1月前
|
人工智能 Kubernetes 异构计算
大道至简-基于ACK的Deepseek满血版分布式推理部署实战
本教程演示如何在ACK中多机分布式部署DeepSeek R1满血版。
|
2月前
|
存储 缓存 Java
Java中的分布式缓存与Memcached集成实战
通过在Java项目中集成Memcached,可以显著提升系统的性能和响应速度。合理的缓存策略、分布式架构设计和异常处理机制是实现高效缓存的关键。希望本文提供的实战示例和优化建议能够帮助开发者更好地应用Memcached,实现高性能的分布式缓存解决方案。
50 9
|
3月前
|
物联网 调度 vr&ar
鸿蒙HarmonyOS应用开发 |鸿蒙技术分享HarmonyOS Next 深度解析:分布式能力与跨设备协作实战
鸿蒙技术分享:HarmonyOS Next 深度解析 随着万物互联时代的到来,华为发布的 HarmonyOS Next 在技术架构和生态体验上实现了重大升级。本文从技术架构、生态优势和开发实践三方面深入探讨其特点,并通过跨设备笔记应用实战案例,展示其强大的分布式能力和多设备协作功能。核心亮点包括新一代微内核架构、统一开发语言 ArkTS 和多模态交互支持。开发者可借助 DevEco Studio 4.0 快速上手,体验高效、灵活的开发过程。 239个字符
268 13
鸿蒙HarmonyOS应用开发 |鸿蒙技术分享HarmonyOS Next 深度解析:分布式能力与跨设备协作实战
|
23天前
|
NoSQL Java 中间件
【📕分布式锁通关指南 02】基于Redis实现的分布式锁
本文介绍了从单机锁到分布式锁的演变,重点探讨了使用Redis实现分布式锁的方法。分布式锁用于控制分布式系统中多个实例对共享资源的同步访问,需满足互斥性、可重入性、锁超时防死锁和锁释放正确防误删等特性。文章通过具体示例展示了如何利用Redis的`setnx`命令实现加锁,并分析了简化版分布式锁存在的问题,如锁超时和误删。为了解决这些问题,文中提出了设置锁过期时间和在解锁前验证持有锁的线程身份的优化方案。最后指出,尽管当前设计已解决部分问题,但仍存在进一步优化的空间,将在后续章节继续探讨。
468 131
【📕分布式锁通关指南 02】基于Redis实现的分布式锁
|
26天前
|
NoSQL Java Redis
Springboot使用Redis实现分布式锁
通过这些步骤和示例,您可以系统地了解如何在Spring Boot中使用Redis实现分布式锁,并在实际项目中应用。希望这些内容对您的学习和工作有所帮助。
158 83
|
5月前
|
NoSQL Java Redis
太惨痛: Redis 分布式锁 5个大坑,又大又深, 如何才能 避开 ?
Redis分布式锁在高并发场景下是重要的技术手段,但其实现过程中常遇到五大深坑:**原子性问题**、**连接耗尽问题**、**锁过期问题**、**锁失效问题**以及**锁分段问题**。这些问题不仅影响系统的稳定性和性能,还可能导致数据不一致。尼恩在实际项目中总结了这些坑,并提供了详细的解决方案,包括使用Lua脚本保证原子性、设置合理的锁过期时间和使用看门狗机制、以及通过锁分段提升性能。这些经验和技巧对面试和实际开发都有很大帮助,值得深入学习和实践。
太惨痛: Redis 分布式锁 5个大坑,又大又深, 如何才能 避开 ?

热门文章

最新文章