热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

ceph存储原理_第二讲,Ceph存储架构

大家好!在上一节给大家讲了关于Ceph存储系统的简单介绍。也简单介绍了Raid方式的一些瓶颈,我们首先比较一下Raid的瓶颈与Ceph如何解决它的瓶颈问

大家好!在上一节给大家讲了关于Ceph存储系统的简单介绍。也简单介绍了Raid方式的一些瓶颈,我们首先比较一下Raid的瓶颈与Ceph如何解决它的瓶颈问题后,再深入了解其工作原理,大家可以在简单的对比之间了解Ceph为什么称为“未来的存储”。

13cc6f9a6b9e0d0cd5830345ff48948d.png
容量比较

Raid:一台服务器做Raid的最大容量就是取决于一开始做Raid单块硬盘的容量×(盘位-1),例如一共有8个盘位的服务器都满上硬盘,每块4TB大小,其中一块是校验盘,不做热备盘的情况下,最大容量就是4*7=28TB

Ceph:它不是以单台服务器计算容量,它是一个集群,它的容量是多台服务器的硬盘总和,而且支持横向和纵向扩展,盘位插满不要紧,加服务器就可以了,也就是只要你有足够的资金和地方是可以无限扩展容量的。

硬件要求

Raid:要求每块硬盘容量要相等,转速要相等,最好是同一个品牌和型号的磁盘,这个对于企业级的用户来说可是很要命,一般服务器都是用10年,甚至20年都有可能,没什么事情谁也不想动服务器,毕竟服务器重要的不是硬件,而是里面的业务系统和数据,数据丢失可是严重信息安全事故。所以一开始做Raid就要考虑这一点,基本上都是满上硬盘,如果资金充足的企业会选择满上当时最大容量的磁盘,因为随着信息技术的快速发展谁也不知道未来还能不能买回一模一样的磁盘,也就是说一开始就决定了该服务器的最大容量,而且随着时间的发展,风险就越大。注意:同一个Raid使用不同类型的磁盘将可能给你带来致命的数据安全问题。

Ceph:服务器磁盘首先不需要做Raid,也就是说不需要相同的硬盘,每增加一个硬盘可增加一个OSD,OSD是Ceph存储对象的地方,每个OSD没有要求一定要相同,也就是说10年前最大容量的磁盘是1TB,现在有8TB的,我可以插一块8TB的进去,那总的容量就增加8TB,当然转速最好相同,不然会影响I/O操作。

单点故障

Raid:Raid5可允许一块磁盘损坏,Raid6可允许两块磁盘损坏。Raid是以磁盘级别来做保护的。

Ceph:以集群形式出现,至少3台主机做一个集群,以副本形式存储数据,只要不是两台主机同时损坏不能用都不会影响集群里面的业务系统和数据。

高可用性

Raid:服务器的网络中断会让企业立马访问不了这台服务器的业务系统,服务器其他硬件故障导致无法正常启动也会使得业务中断,对于企业来说,不管大中小型的企业都不希望在工作过程中被中断业务系统,而且往往服务器出故障仅仅是重启也要等不少时间,更别说是修复或更换硬件。

Ceph:以集群和副本形式出现,只要业务系统的副本≥2,那么任意一台服务器出故障也不会影响到业务系统正常使用,所谓的故障包括网络和硬件。在故障服务器上的虚拟机会自动切换到正常服务器上继续运行,注意:切换过程需要看系统是否支持不中断切换,小编测试过几款系统在切换过程虚拟机需要有一次重启动作,因为涉及到内存,CPU是否也做分布式计算问题,就不仅仅是存储上的功能问题。但是虚拟机的重启总比整台服务器重启时间要快多了,至少有足够时间给你维修故障服务器。

以上四点对于企业数据的安全性和业务系统的可靠性是非常重要的。

下面简单讲述Ceph的架构

Ceph存储架构
98d6502cf1f2d9b850945e186baa1e63.png

Ceph存储集群由几个不同的软件守护进程组成,每个守护进程负责Ceph的一个独特功能并将值添加到相应的组件中。每个守护进程是彼此独立的。

Ceph中的一切都以对象的形式存储,而RADOS就负责存储这些对象,而不考虑它们的数据类型。RADOS层确保数据一致性和可靠性。对于数据一致性,它执行数据复制、故障检测和恢复,还包括数据在集群节点间的迁移和再平衡。

一旦应用程序访问Ceph集群执行写操作,数据将会以对象的形式存储在Ceph对象存储设备OSD中,这是Ceph集群中存储实际用户数据并响应客户端读操作请求的唯一组件。通过,一个OSD守护进程与集群的一个物理磁盘绑定。

Ceph Monitor(MON)组件

通过一系列的map来跟踪整个集群的健康状态,map的组件有:OSD,MON,PG,和CRUSH。所有节点都想monitor节点报告状态,monitor本身不存放实际数据。

librados库

是一种用来简化访问RADOS的方法,它目前支持PHP,Rudy,java,python,C和C++语言。它提供了Ceph存储集群的一个本地接口RADOS,并且是其他服务的基础,以及为CephFS提供POSIX接口。librados API支持直接访问RADOS,使得开发者能够创建自己的接口来访问Ceph集群存储。

Ceph块设备

原来叫RADOS块设备(RBD),它对外提供块存储,它可以被映射、格式化进而像其他磁盘一样挂载到服务器。

Ceph对象网关

RADOS网关(RGW),它提供一个兼容Amazon S3和OpenStack对象存储API(Swift)的restful API接口。RGW还支持多租户和OpenStack的Keystone身份验证服务。

Ceph元数据服务器(MDS)

负责跟踪文件层次结构并存储只供CephFS使用的元数据。Ceph块设备和RADOS网关不需要元数据。

Ceph文件系统(CephFS)

提供一个任意大小且兼容POSIX的分布式文件系统。CephFS依赖Ceph MDS来跟踪文件层次结构,即元数据。

Ceph RADOS

RADOS是Ceph存储系统的核心,也称为Ceph存储集群。Ceph所有优秀特性都是由RADOS提供的,包括分布式对象存储、高可用性、高可靠性、没有单点故障、自我修复以及自我管理等。Ceph的数据访问方法(如RBD、CephFS、RADOSGW和librados)的所有操作都是在RADOS层之上构建的。

当Ceph集群接收到来自客户端的写请求时,CRUSH算法首先计算出存储位置,以此决定应该将数据写入什么地方。然后这些信息传递到RADOS层进行进一步处理。最后,这些对象存储在OSD中。

Ceph OSD

Ceph的OSD是Ceph集群中最重要的一个基础组件,它负责将实际的数据以对象形式存储在每一个集群节点的物理磁盘中。Ceph集群包含多个OSD,对于任何读写操作,客户端首先向monitor请求集群的map,然后,它们就可以无须monitor的干预直接与OSD进行I/O操作。

Ceph的核心特性都始于OSD,根据配置的副本数,Ceph通过跨集群节点复制每个对象多次来提供可靠性,同时提供高可用性和容错性。OSD上的每个对象都有一个主副本和几个辅副本,辅副本分散在其他OSD上。在磁盘发生故障的时候,Ceph的OSD守护进程会自动与其他OSD通信,从而开始执行恢复操作。

关于Ceph存储架构先介绍到这里,感谢大家阅读,后面将继续为大家介绍Ceph存储系统的其他特性和功能,敬请关注下一期。谢谢!



推荐阅读
  • 如何撰写适应变化的高效代码:策略与实践
    编写高质量且适应变化的代码是每位程序员的追求。优质代码的关键在于其可维护性和可扩展性。本文将从面向对象编程的角度出发,探讨实现这一目标的具体策略与实践方法,帮助开发者提升代码效率和灵活性。 ... [详细]
  • Web开发框架概览:Java与JavaScript技术及框架综述
    Web开发涉及服务器端和客户端的协同工作。在服务器端,Java是一种优秀的编程语言,适用于构建各种功能模块,如通过Servlet实现特定服务。客户端则主要依赖HTML进行内容展示,同时借助JavaScript增强交互性和动态效果。此外,现代Web开发还广泛使用各种框架和库,如Spring Boot、React和Vue.js,以提高开发效率和应用性能。 ... [详细]
  • 本文推荐了六款高效的Java Web应用开发工具,并详细介绍了它们的实用功能。其中,分布式敏捷开发系统架构“zheng”项目,基于Spring、Spring MVC和MyBatis技术栈,提供了完整的分布式敏捷开发解决方案,支持快速构建高性能的企业级应用。此外,该工具还集成了多种中间件和服务,进一步提升了开发效率和系统的可维护性。 ... [详细]
  • 本文详细介绍了Java代码分层的基本概念和常见分层模式,特别是MVC模式。同时探讨了不同项目需求下的分层策略,帮助读者更好地理解和应用Java分层思想。 ... [详细]
  • 操作系统如何通过进程控制块管理进程
    本文详细介绍了操作系统如何通过进程控制块(PCB)来管理和控制进程。PCB是操作系统感知进程存在的重要数据结构,包含了进程的标识符、状态、资源清单等关键信息。 ... [详细]
  • Ansible:自动化运维工具详解
    Ansible 是一款新兴的自动化运维工具,基于 Python 开发,集成了多种运维工具(如 Puppet、CFEngine、Chef、Func 和 Fabric)的优点,实现了批量系统配置、程序部署和命令执行等功能。本文将详细介绍 Ansible 的架构、特性和优势。 ... [详细]
  • 在《Cocos2d-x学习笔记:基础概念解析与内存管理机制深入探讨》中,详细介绍了Cocos2d-x的基础概念,并深入分析了其内存管理机制。特别是针对Boost库引入的智能指针管理方法进行了详细的讲解,例如在处理鱼的运动过程中,可以通过编写自定义函数来动态计算角度变化,利用CallFunc回调机制实现高效的游戏逻辑控制。此外,文章还探讨了如何通过智能指针优化资源管理和避免内存泄漏,为开发者提供了实用的编程技巧和最佳实践。 ... [详细]
  • 浏览器作为我们日常不可或缺的软件工具,其背后的运作机制却鲜为人知。本文将深入探讨浏览器内核及其版本的演变历程,帮助读者更好地理解这一关键技术组件,揭示其内部运作的奥秘。 ... [详细]
  • Visual Studio Code (VSCode) 是一款功能强大的源代码编辑器,支持多种编程语言,具备丰富的扩展生态。本文将详细介绍如何在 macOS 上安装、配置并使用 VSCode。 ... [详细]
  • MySQL 5.7 学习指南:SQLyog 中的主键、列属性和数据类型
    本文介绍了 MySQL 5.7 中主键(Primary Key)和自增(Auto-Increment)的概念,以及如何在 SQLyog 中设置这些属性。同时,还探讨了数据类型的分类和选择,以及列属性的设置方法。 ... [详细]
  • 本文详细介绍了 PHP 中对象的生命周期、内存管理和魔术方法的使用,包括对象的自动销毁、析构函数的作用以及各种魔术方法的具体应用场景。 ... [详细]
  • 单元测试:使用mocha和should.js搭建nodejs的单元测试
    2019独角兽企业重金招聘Python工程师标准BDD测试利器:mochashould.js众所周知对于任何一个项目来说,做好单元测试都是必不可少 ... [详细]
  • 在Windows系统中安装TensorFlow GPU版的详细指南与常见问题解决
    在Windows系统中安装TensorFlow GPU版是许多深度学习初学者面临的挑战。本文详细介绍了安装过程中的每一个步骤,并针对常见的问题提供了有效的解决方案。通过本文的指导,读者可以顺利地完成安装并避免常见的陷阱。 ... [详细]
  • ccFlow新增属性:流程发起限制条件优化与扩展
    在ccFlow最新版本中,新增了流程发起限制条件的优化与扩展功能。这一改进不仅增强了系统的灵活性和安全性,还为开发者提供了更加精细的控制选项,确保流程启动时的数据准确性和合规性。通过合理配置这些限制条件,可以有效避免因不当操作导致的数据混乱和流程错误,提升整体业务流程的管理水平。 ... [详细]
  • 如何撰写初级和高级前端开发者的专业简历
    如何撰写初级和高级前端开发者的专业简历 ... [详细]
author-avatar
手机用户2502915601
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有