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,搭建一个在线教育视频课程分享网站。
相关文章
|
2月前
|
存储 分布式计算 大数据
HBase分布式数据库关键技术与实战:面试经验与必备知识点解析
【4月更文挑战第9天】本文深入剖析了HBase的核心技术,包括数据模型、分布式架构、访问模式和一致性保证,并探讨了其实战应用,如大规模数据存储、实时数据分析及与Hadoop、Spark集成。同时,分享了面试经验,对比了HBase与其他数据库的差异,提出了应对挑战的解决方案,展望了HBase的未来趋势。通过Java API代码示例,帮助读者巩固理解。全面了解和掌握HBase,能为面试和实际工作中的大数据处理提供坚实基础。
99 3
|
2月前
|
设计模式 安全 Java
【分布式技术专题】「Tomcat技术专题」 探索Tomcat技术架构设计模式的奥秘(Server和Service组件原理分析)
【分布式技术专题】「Tomcat技术专题」 探索Tomcat技术架构设计模式的奥秘(Server和Service组件原理分析)
57 0
|
2天前
|
消息中间件 NoSQL Java
Redis系列学习文章分享---第六篇(Redis实战篇--Redis分布式锁+实现思路+误删问题+原子性+lua脚本+Redisson功能介绍+可重入锁+WatchDog机制+multiLock)
Redis系列学习文章分享---第六篇(Redis实战篇--Redis分布式锁+实现思路+误删问题+原子性+lua脚本+Redisson功能介绍+可重入锁+WatchDog机制+multiLock)
9 0
|
3天前
|
NoSQL 前端开发 Java
技术笔记:springboot分布式锁组件spring
技术笔记:springboot分布式锁组件spring
|
2月前
|
监控 NoSQL 算法
探秘Redis分布式锁:实战与注意事项
本文介绍了Redis分区容错中的分布式锁概念,包括利用Watch实现乐观锁和使用setnx防止库存超卖。乐观锁通过Watch命令监控键值变化,在事务中执行修改,若键值被改变则事务失败。Java代码示例展示了具体实现。setnx命令用于库存操作,确保无超卖,通过设置锁并检查库存来更新。文章还讨论了分布式锁存在的问题,如客户端阻塞、时钟漂移和单点故障,并提出了RedLock算法来提高可靠性。Redisson作为生产环境的分布式锁实现,提供了可重入锁、读写锁等高级功能。最后,文章对比了Redis、Zookeeper和etcd的分布式锁特性。
253 16
探秘Redis分布式锁:实战与注意事项
|
2月前
|
Windows
Windows系统下安装分布式事务组件Seata
Windows系统下安装分布式事务组件Seata
|
2月前
|
缓存 监控 负载均衡
【分布式技术专题】「缓存解决方案」一文带领你好好认识一下企业级别的缓存技术解决方案的运作原理和开发实战(数据缓存不一致分析)
【分布式技术专题】「缓存解决方案」一文带领你好好认识一下企业级别的缓存技术解决方案的运作原理和开发实战(数据缓存不一致分析)
65 2
|
2月前
|
缓存 应用服务中间件 数据库
【分布式技术专题】「缓存解决方案」一文带领你好好认识一下企业级别的缓存技术解决方案的运作原理和开发实战(多级缓存设计分析)
【分布式技术专题】「缓存解决方案」一文带领你好好认识一下企业级别的缓存技术解决方案的运作原理和开发实战(多级缓存设计分析)
78 1
|
2月前
|
存储 缓存 监控
【分布式技术专题】「缓存解决方案」一文带领你好好认识一下企业级别的缓存技术解决方案的运作原理和开发实战(场景问题分析+性能影响因素)
【分布式技术专题】「缓存解决方案」一文带领你好好认识一下企业级别的缓存技术解决方案的运作原理和开发实战(场景问题分析+性能影响因素)
59 0
|
5天前
|
NoSQL Redis
redis分布式锁redisson
底层会尝试去加锁,如果加锁失败,会睡眠,自旋加锁,直到获取到锁为止。
12 1

热门文章

最新文章