rados(reliable, autonomic、distributed object store)是ceph系统的基础,这一层本身就是一个完整的对象存储系统,包括cehp的基础服务(mds,osd,monitor),所有存储在ceph系统中的用户数据事实上最终都是由这一层来存储的。而ceph的高可靠、高可扩展、高性能、高自动化等等特性本质上也是由这一层所提供的。
rados在物理形态上由大量的存储设备节点组成,每个节点拥有自己的硬件资源(cpu、内存、硬盘、网络),并运行着操作系统和文件系统。基础库librados是对rados进行抽象和封装,并向上层提供不同api,以便直接基于rados进行原生对象或上层对象、块和文件应用开发。特别要注意的是,rados是一个对象存储系统,因此,基于librados实现的api也只是针对对象存储功能的。
rados所提供的原生librados api包括c和c++两种。librados在部署上和基于其上开发的应用位于同一台机器。应用调用本机上的librados api,再由后者通过socket与rados集群中的节点通信并完成各种操作。
这一层包括了rados gw(rados gateway)、 rbd(reliable block device)和ceph fs(ceph file system)三个高层存储应用接口,其作用是在librados库的基础上提供抽象层次更高、更便于应用或客户端使用的上层接口。
rados gw是一个提供与amazon s3和swift兼容的restful api的gateway,以供相应的对象存储应用开发使用。rados gw提供的api抽象层次更高,但功能则不如librados强大。因此,开发者应针对自己的需求选择使用。
rbd则提供了一个标准的块设备接口,常用于在虚拟化的场景下为虚拟机创建volume。如前所述,red hat已经将rbd驱动集成在kvm/qemu中,以提高虚拟机访问性能。
cephfs是一个posix兼容的分布式文件系统。目前还处在开发状态,因而ceph官网并不推荐将其用于生产环境中。
ceph client是基于fuse层(user space)和vfs文件系统开发,兼容posix接口标准。在ceph存储系统中,ceph metadata daemon 提供了元数据服务器,而ceph object storage daemon 提供了数据和元数据的实际存储。ceph对dfs、block和object数据写入和读取,都需client利用crush算法(负责集群中的数据放置和检索的算法)完成存储位置计算和数据组装。
gluster fs系统架构
gluster fs由brick server、client和nas网关组成(用来访问存储服务,但是client只支持linux,其他系统需要nas网关提供存储服务),三者可以部署到同一个物理服务器上。nas网关通过启动glfs client提供存储服务。
每个文件通过一定策略分不到不同的brick server上,每个brick server通过运行不同进程处理数据请求,文件以原始格式以ext、xfs和zfs文件系统的保存在本地。
卷(block)通过位于client或nas网关上的卷管理器来提供服务,由卷管理器管理集群中的多个brick server。存储节点(brick server)对外提供的服务目录称作brick,一个brick对应一个本地文件系统,gluster fs以brick为单位管理存储。glusterfs采用模块化、堆栈式的架构,可通过灵活的配置支持高度定制化的应用环境,比如大文件存储、海量小文件存储、云存储、多传输协议应用等。每个功能以模块形式实现,然后以积木方式
glusterfs和ceph对比
glusterfs和ceph是两个灵活的存储系统,有着相似的数据分布能力,在云环境中表现非常出色。在尝试了解glusterfs与ceph架构之后,我们来看看两者之间的简单对比。
纵向扩展和横向扩展:在云环境中,必须可以很容易地向服务器添加更多存储空间以及扩展可用存储池。ceph和glusterfs都可以通过将新存储设备集成到现有存储产品中,满足扩充性能和容量的要求。
高可用性:glusterfs和ceph的复制是同时将数据写入不同的存储节点。这样做的结果是,访问时间增加,数据可用性也提高。在ceph中,默认情况下将数据复制到三个不同的节点,以此确保备份始终可用性。
商品化硬件:glusterfs和ceph是在linux操作系统之上开发的。因此,对硬件唯一的要求是这些产品具有能够运行linux的硬件。任何商品化硬件都可以运行linux操作系统,结果是使用这些技术的公司可以大大减少在硬件上的投资——如果他们这样做的话。然而,实际上,许多公司正在投资专门用于运行glusterfs或ceph的硬件,因为更快的硬件可以更快地访问存储。
去中心化:在云环境中,永远不应该有中心点故障。对于存储,这意味着不应该用一个中央位置存储元数据。glusterfs和ceph实现了元数据访问去中心化的解决方案,从而降低了存储访问的可用性和冗余性。
现在再来谈谈glusterfs与ceph的差异。顾名思义,glusterfs是来自linux世界的文件系统,并且遵守所有portable operating system interface标准。尽管你可以将glusterfs轻松集成到面向linux的环境中,但在windows环境中集成glusterfs很难。
ceph是一种全新的存储方法,对应于swift对象存储。在对象存储中,应用程序不会写入文件系统,而是使用存储中的直接api访问写入存储。因此,应用程序能够绕过操作系统的功能和限制。如果已经开发了一个应用程序来写入ceph存储,那么使用哪个操作系统无关紧要。结果表明ceph存储在windows环境中像在linux环境中一样容易集成。
基于api的存储访问并不是应用程序可以访问ceph的唯一方式。为了最佳的集成,还有一个ceph块设备,它可以在linux环境中用作常规块设备,使你可以像访问常规linux硬盘一样来使用ceph。ceph还有cephfs,它是针对linux环境编写的ceph文件系统。
最近suse添加了一个iscsi接口,使得运行iscsi客户端的
ceph和gluster是red hat旗下的成熟的开源存储产品,ceph与gluster在原理上有着本质上的不同。ceph基于一个名为rados的对象存储系统,使用一系列api将数据以块(block)、文件(file)和对象(object)的形式展现。ceph存储系统的拓扑结构围绕着副本与信息分布,这使得该系统能够有效保障数据的完整性。(来源:开发者公众号大全)











