【ceph】学习笔记(三)三大存储模式简介

阅读: 评论:0

【ceph】学习笔记(三)三大存储模式简介

【ceph】学习笔记(三)三大存储模式简介

Ceph本身是一个统一存储,支持块、对象和文件等所有存储形态

在RADOS集群之上,Ceph构建了块存储、文件存储和对象存储等存储形态。由于RADOS集群本身是以对象为粒度进行数据存储的,因此上述三种存储形态,在最终存储数据的时候都划分为对象

一,Ceph的块存储

首先介绍一下底层的RADOS集群,集群从组建方面分为OSD、MON和客户端三类组件。其中OSD组件负责管理一个磁盘;MON组件形成一个集群,负责管理元数据;客户端则实现对集群的访问。对于RADOS来说,其客户端通常是一个动态库,也就是librados库。上层服务(块、对象和文件)通常依赖该动态库实现。

Ceph的块存储是基于对象存储来实现的,实现原理也非常简单。从我们普通用户的角度来看,块设备其实就是一个线性的存储空间,可以理解为一个大数组。由于是线性空间,其实这个块设备在集群层面完全可以以对象的方式存储。最简单的方式就是一个块设备对应一个对象。

但是如果一个块设备对应一个对象,那么会出现数据过于集中的情况。因此,在Ceph中将块设备切割为4MB大小的对象,并且将块数据分散在这些对象中。Ceph的处理方式也非常简单,对象名称通过块设备名称和LBA组合的方式生成,这样就可以保证对象名称的唯一性。而当用户访问块设备是,根据访问的偏移就可以定位到具体的对象。

二,Ceph的文件系统

文件系统最大的特点在于对维护文件系统的目录结构,因此在Ceph中通过一个元数据集群(MDS)实现对文件元数据的管理。

当客户端访问文件系统的时候,需要先与MDS交互。以写数据为例,首先需要与MDS交互确认文件存在,并且获得访问权,若是文件不存在,则MDS先创建文件再去访问。

同时再MDS上还维护这文件的元数据,包括文件创建时间、大小和扩展属性等等内容。

Ceph设计的时候是支持MDS多活的,并且考虑到由于热点的问题,可以实现多个MDS管理的元数据的动态迁移,这个概念称为动态子树

所谓动态子树就是将文件系统的目录分解为几个子目录,然后根据热点情况进行动态调整。动态调整就是在多个MDS之间进行迁移。

为了方便用户使用,Cephfs在客户端有多中实现形态。最常见的是在Linux内核中实现了一个客户端文件系统。该文件系统类似NFS的客户端文件系统,其位于VFS之下。普通用户可以通过挂载(mount)的方式实现对Ceph文件系统的挂载,然后就像访问本地文件系统一样访问Ceph文件系统。

除此之外,用户该可以通过动态库或者fuse实现的文件系统对Ceph文件系统进行访问

三,Ceph的对象存储

虽然RADOS本身提供的是对象存储服务,但是其提供的只是基础的对象访问能力,而且只能通过Ceph客户端访问。为了提供类似AWS的S3的特性和Swift对象存储的特性,Ceph实现了一个对象存储网关

对象存储网关(Rados Gateway,简称RGW)实际上实现的是一个接口协议的转换。通过RGW我们在客户端可以通过通用的http协议访问对象存储,而且在存储网关中实现了很多特性。

比如对象的属性、ACL和多租户等等。

四,块,文件,对象三者之间的关系

(1)简述块存储、文件存储,对象存储
块存储:如果存储设备提供给客户端的是一块裸盘,需要客户端自己分区格式化制作文件系统,则称之为块存储
特点:客户端可定制性强,可以自己制作文件系统,然后挂载使用,或者直接把操作系统安装在块存储里
用途:主要用于VM的本地硬盘

文件存储:如果存储设备提供给你的是一个文件夹,你自己直接操作文件,则称之为文件存储
特点:1、客户端定制性差,不能自己制作文件系统,文件系统是在存储设备中制作好的,客户端使用的就是一个文件夹。2、文件检索与存储设备中完成的,意味着随着客端数目的增多,存储设备的压力会越来越大,所以文件存储会限制集群的扩展规模
用途:
中小规模集群的多服务器之间共享数据,并且保证一致

如果你只需要提供文件的元数据与真实数据,存储设备负责帮你生成文件,然后存到硬盘中,这就称之为对象存储
特点:1、没有文件检索的压力,服务端不会随着客端数目的增多压力成倍增大

(2)块存储、文件存储、对象存储的关系
块存储是最低级,最直接的,如果多个客户端共用一个块存储,客户端会把数据先缓存在本地,然后再写入块存储(详见6.3),这就会导致多个客户端数据不一致的问题,所以,通常一个块存储只给一个客户端用

为了让多个客户端共享数据、并保证一致,于是诞生了文件存储,例如nfs,客户端挂载的都是服务端的同一个文件夹,数据是完全一致的,但是随着客户端数量越来越多,nfs服务器检索文件信息的压力会越来越大,最后不堪重负,一旦挂掉,则影响整个集群的工作,所以nfs严重影响了集群的扩展

为了能够满足无限扩展的需求,诞生了对象存储,客户端无需操作文件,而是只需要提供文件相关的各部分信息即可,这些信息称之为一个个的对象,存储设备接收到对象后负责完成后续操作

(3)细说块存储、文件存储、对象存储
块存储:
1客户端主要操作对象是磁盘,客户端可以自己格式化制作文件系统
2、块存储设备中划分出的是一块裸磁盘空间映射给客户端主机使用
3、例如SCSI
4、可应用于虚拟机的本地硬盘

以SCSI为例,主要接口有Read/dite/Read Capacity/Inquiry等等。FCiscsI,也是块存储协议。和文件存储相比,没有文件和目录树的概念,一般协议也不会定义磁盘的创建和删除操作。协议更注重传输控制。

文件存储:
1、客户端主要操作的是文件和文件夹,客户端无法格式化制作自己的文件系统,使用的是现成的文件系统。
2、文件储中已经做好了文件系统然后共享给客户端主机使用
3、例如NFS

文件存储支持 POSIX协议,以 NFS 为例,文件相关的接口包括:LOOKUP/ACCESS/READ/WRITE/CREATE/REMOVE/RENAME等等,文件夹相关的接口包括:MKDIR/RMDIR/READDIR等等。同时也会有FSSTAT/FSINFO 等接口用于提供文件系统级别的信息。 POSIX,SAMBA 等也是文件存储协议。协议更注重接口的灵活,以及访问权限控制。

对象存储:
1、客户端主要操作对象是对象(Object)
2、对象存储使用一个统一的底层存储系统,把文件和底层介质的组织结构都管理好,然后给每个文件一个唯一的标识,客户端需要访问某个文件,直接提供文件的标识就可以了。此时存储系统可以用更高效的数据组织方式来管理这些标识以及其对应的存储介质上的块。
当然对干不同的软件系统来说一次访问需要获取的不一定是单个我们传统意义上的文件,根据不同的需要可能只是一个/组值,某个文件的一部分,也可能是多个文件的组合,甚至是某个块设备,统称为对象。这就是对象存储。
3、例如S3

以S3为例,主要接口有 PUT/GET/DELETE等。和对象储相比,没有随机读写的接口。和文件存储相比没有目录树的概念。协议更注重简洁。

总结
块存储:是和主机打交道的,如插一块硬盘 文件存储: NAS, 网络存储,用于多主机共享数据
对象存储:跟你自己开发的应用程序打交道如网盘它们的层级是越来越高的

参考ceph课程(一)ceph组件与原理_givenchy_yzl的博客-CSDN博客

本文发布于:2024-02-01 00:51:06,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170671986732636.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

上一篇:Dite
下一篇:day03笔记
标签:三大   学习笔记   模式   简介   ceph
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23