热门标签 | 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存储系统的其他特性和功能,敬请关注下一期。谢谢!



推荐阅读
  • 恶意软件分析的最佳编程语言及其应用
    本文介绍了学习恶意软件分析和逆向工程领域时最适合的编程语言,并重点讨论了Python的优点。Python是一种解释型、多用途的语言,具有可读性高、可快速开发、易于学习的特点。作者分享了在本地恶意软件分析中使用Python的经验,包括快速复制恶意软件组件以更好地理解其工作。此外,作者还提到了Python的跨平台优势,使得在不同操作系统上运行代码变得更加方便。 ... [详细]
  • 本文介绍了Python爬虫技术基础篇面向对象高级编程(中)中的多重继承概念。通过继承,子类可以扩展父类的功能。文章以动物类层次的设计为例,讨论了按照不同分类方式设计类层次的复杂性和多重继承的优势。最后给出了哺乳动物和鸟类的设计示例,以及能跑、能飞、宠物类和非宠物类的增加对类数量的影响。 ... [详细]
  • 一句话解决高并发的核心原则
    本文介绍了解决高并发的核心原则,即将用户访问请求尽量往前推,避免访问CDN、静态服务器、动态服务器、数据库和存储,从而实现高性能、高并发、高可扩展的网站架构。同时提到了Google的成功案例,以及适用于千万级别PV站和亿级PV网站的架构层次。 ... [详细]
  • 本文介绍了OpenStack的逻辑概念以及其构成简介,包括了软件开源项目、基础设施资源管理平台、三大核心组件等内容。同时还介绍了Horizon(UI模块)等相关信息。 ... [详细]
  • Java和JavaScript是什么关系?java跟javaScript都是编程语言,只是java跟javaScript没有什么太大关系,一个是脚本语言(前端语言),一个是面向对象 ... [详细]
  • 云原生应用最佳开发实践之十二原则(12factor)
    目录简介一、基准代码二、依赖三、配置四、后端配置五、构建、发布、运行六、进程七、端口绑定八、并发九、易处理十、开发与线上环境等价十一、日志十二、进程管理当 ... [详细]
  • ejava,刘聪dejava
    本文目录一览:1、什么是Java?2、java ... [详细]
  • {moduleinfo:{card_count:[{count_phone:1,count:1}],search_count:[{count_phone:4 ... [详细]
  • 本文介绍了如何使用python从列表中删除所有的零,并将结果以列表形式输出,同时提供了示例格式。 ... [详细]
  • SpringBoot整合SpringSecurity+JWT实现单点登录
    SpringBoot整合SpringSecurity+JWT实现单点登录,Go语言社区,Golang程序员人脉社 ... [详细]
  • Centos下安装memcached+memcached教程
    本文介绍了在Centos下安装memcached和使用memcached的教程,详细解释了memcached的工作原理,包括缓存数据和对象、减少数据库读取次数、提高网站速度等。同时,还对memcached的快速和高效率进行了解释,与传统的文件型数据库相比,memcached作为一个内存型数据库,具有更高的读取速度。 ... [详细]
  • OpenMap教程4 – 图层概述
    本文介绍了OpenMap教程4中关于地图图层的内容,包括将ShapeLayer添加到MapBean中的方法,OpenMap支持的图层类型以及使用BufferedLayer创建图像的MapBean。此外,还介绍了Layer背景标志的作用和OMGraphicHandlerLayer的基础层类。 ... [详细]
  • Sleuth+zipkin链路追踪SpringCloud微服务的解决方案
    在庞大的微服务群中,随着业务扩展,微服务个数增多,系统调用链路复杂化。Sleuth+zipkin是解决SpringCloud微服务定位和追踪的方案。通过TraceId将不同服务调用的日志串联起来,实现请求链路跟踪。通过Feign调用和Request传递TraceId,将整个调用链路的服务日志归组合并,提供定位和追踪的功能。 ... [详细]
  • ElasticSerach初探第一篇认识ES+环境搭建+简单MySQL数据同步+SpringBoot整合ES
    一、认识ElasticSearch是一个基于Lucene的开源搜索引擎,通过简单的RESTfulAPI来隐藏Lucene的复杂性。全文搜索,分析系统&# ... [详细]
  • 本文讨论了在使用Git进行版本控制时,如何提供类似CVS中自动增加版本号的功能。作者介绍了Git中的其他版本表示方式,如git describe命令,并提供了使用这些表示方式来确定文件更新情况的示例。此外,文章还介绍了启用$Id:$功能的方法,并讨论了一些开发者在使用Git时的需求和使用场景。 ... [详细]
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社区 版权所有