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

容量比较

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存储架构

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

文档更新时间: 2020-07-07 10:22   作者:月影鹏鹏