文章目录
- 1.存储简介
- 1.1 存储类型
- 1.1.1 储备知识
- 1.1.2 三种存储
- 1.1.3 块存储
- 1.1.4 文件存储
- 1.1.5 对象存储
- 1.1.6 三种存储之间的关系
- 1.1.7 总结
- 1.2 Ceph简介
- 1.2.1 官方介绍
- 1.2.2 软件特点
- 1.2.3 基本结构
- 1.2.4 应用场景
- 1.3 小结
1.存储简介
学习目标:这一节,我们从存储类型、ceph简介、小结三个方面来学习。
1.1 存储类型
1.1.1 储备知识
我们来了解一下块级与文件级,然后再介绍块存储与文件存储、对象存储,就能很好地理解他们内部的原理
块级
- 磁盘的最小读写单位为扇区,1个或多个连续的扇区组成一个block块,也叫物理块。
- 可以通过下述命令查看设备block块大小:blockdev --getbsz /dev/sda1
文件级
- 文件是文件系统提供的功能,单个文件可能由于一个或多个逻辑块组成,且逻辑块之间是不连续分布。
- 逻辑块大于或等于物理块整数倍。
物理块与文件系统之间的映射关系为:扇区 → 物理块 → 逻辑块 → 文件系统
注意:这么多层转换,肯定是需要耗费效率的,如果操作的是对象,则可以直接省去这么多层映射关系,效率自然是高
1.1.2 三种存储
1.1.3 块存储
如果存储设备提供的是一块裸盘,需要你自己分区格式化制作文件系统,则称之为块存储。
块存储是将裸磁盘空间整个映射给主机使用的,主机层面操作系统识别出硬盘,与我们服务器内置的硬盘没有什么差异,可以自由的进行磁盘进行分区、格式化。
块存储不仅仅是直接使用物理设备,间接使用物理设备的也叫块设备,比如虚拟机创建虚拟磁盘、虚拟机磁盘格式包括raw、qcow2等。
常见的解决方案:
ABS(Azure Block Storage)、GBS(Google Block Storage)、EBS(Elastic Block Storage)、Cinder、Ceph RBD、sheepdog
详细分析:
1.客户端主要操作对象是磁盘,客户端可以自己格式化制作文件系统;
2.块存储设备中划分出的是一块裸磁盘空间映射给客户端主机使用;
3.例如:SCSI
以 SCSI 为例,主要接口有 Read/Write/Read Capacity/Inquiry 等等。
FC,iSCSI,也是块存储协议。
和文件存储相比,没有文件和目录树的概念,一般协议也不会定义磁盘的创建和删除操作。
协议更注重 传输控制。
1.1.4 文件存储
如果存储设备提供的是一个文件夹,可以直接操作文件,则称之为文件存储。
最常见、最容易、最经典实现的一种存储接口。它可以直接以文件系统挂载的方式,为主机提供存储空间资源。它有别于块存储的特点就在于,可以实现共享效果,但是有可能受网络因素限制导致速度较慢。
常见的解决方案:
AFS(Azure File Storage)、GFS(Google File Storage)、EFS(Elastic File Storage)、Swift、CephFS、HDFS、NFS、CIFS、Samba、FTP
详细分析:
1.客户端主要操作的是文件和文件夹,客户端无法格式化制作自己的文件系统,使用的是现成的文件系统;
2.文件存储中已经做好了文件系统,然后共享给客户端主机使用;
3.例如:NFS
文件存储支持 POSIX 协议,以 NFS 为例,文件相关的接口包括:LOOKUP/ACCESS/READ/WRITE/CREATE/REMOVE/RENAME 等等。
文件夹相关的接口包括:MKDIR/RMDIR/READDIR 等等。
同时也会有 FSSTAT/FSINFO 等接口用于提供文件系统级别的信息。
POSIX,SAMBA 等也是文件存储协议。
协议更注重接口的灵活,以及访问权限控制。
1.1.5 对象存储
如果只需要提供文件的元数据与真实数据,存储设备负责帮助生成文件,然后存到硬盘中,则称之为对象存储,操作的内容都称之为对象。
其核心是将 数据读或写 和 元数据 分离,并且基于对象存储设备(Object-based Storage Device,OSD)构建存储系统,然后借助于对象存储设备的管理功能,自动管理该设备上的数据分布。
对象存储主要包括四部分:
- 对象
- 对象存储设备
- 元数据服务器
- 对象存储系统的客户端
简单地说,
- 块存储读写快,不利于共享
- 文件存储读写慢,利于共享
- 对象存储综合了两者的优点
常见的解决方案:
AS(Azure Storage)、GCS(Google Cloud Storage)、S3(Simple Storage Service)、Swift、Ceph OSD
详细分析:
1.客户端主要操作对象是对象(Object);
2.对象存储使用一个统一的底层存储系统,把文件和底层介质的组织结构都管理好,然后给每一个文件一个唯一的标识,客户端需要访问某个文件,直接提供文件的标识就可以了。此时存储系统可以用更高效的数据组织方式来管理这些标识以及其对应的存储介质上的块;
当然,对于不同的软件系统来说,一次访问需要获取的不一定是单个我们传统意义上的文件,根据不同的需要可能是一个/组值,某个文件的一部分,也可能是多个文件的组合,甚至是某个块设备,统称为对象,这就是对象存储;
3. 例如:S3
以 S3 为例,主要接口有 PUT/GET/DELETE 等。
和块存储相比,没有随机读写的接口。
和文件存储相比,没有目录树的概念。
协议更注重简洁。
1.1.6 三种存储之间的关系
块存储是最低级,最直接的,如果多个客户端共用一个块存储,客户端会把数据先缓存在本地,然后再写入块存储,这就会导致多个客户端数据不一致的问题,所以,通常一个块存储只给一个客户端使用。
为了让多个客户端共享数据、并保证一致(块存储无法保证),于是诞生了文件存储,例如:nfs,客户端挂载的都是服务端的同一个文件夹,数据是完全一致的,但是随着客户端数量越来越多,nfs服务器检索文件信息的压力会越来越大,最后不堪重负,一旦挂掉,则影响整个集群的工作,所以nfs严重影响了集群的扩展。
为了能够满足无限扩展的需求,诞生了对象存储,客户端无需操作文件,而是只需要提供文件相关的部分信息即可,这些信息称之为一个个的对象,存储设备接收到对象后负责完成后续操作。
1.1.7 总结
块存储(SAN):是和主机打交道的,如插拔一块硬盘。
文件存储(NAS):网络存储,用于多主机共享数据。
对象存储(OBJ):跟你自己开发的应用程序打交道,如网盘,它们的层级是越来越高的。
关于Ceph的块存储、文件存储、对象存储:
- Block(块):支持精简配置、快照、克隆。
- File(文件系统):Posix接口,支持快照。
- Object(对象):有原生的API,而且也兼容Swift和S3的API。
1.2 Ceph简介
1.2.1 官方介绍
来源:
Ceph项目最早起源于Sage就读博士期间的工作(最早的成果于2004年发表,论文发表于2006年),并随后共享给开源社区。在经过了数年的发展之后,目前已得到众多云计算厂商的支持并被广泛应用。RedHat及OpenStack都可与Ceph整合以支持虚拟机镜像的后端存储。
Ceph is the future of storage; where traditional(传统的) systems fail to deliver, Ceph is designed to excel(出色). Leverage(利用) your data for better business(业务) decisions(决策) and achieve(实现) operational(运营) excellence(卓越) through scalable, intelligent(智能), reliable(可靠) and highly available(高可用) storage software. Ceph supports object, block and file storage, all in one unified(统一) storage system.
Ceph是存储的未来;在传统系统无法实现的地方,Ceph被设计为出类拔萃。利用您的数据做出更好的业务决策,并通过可扩展、智能、可靠和高可用的存储软件实现卓越的运营。Ceph支持对象、块和文件存储,所有这些都在一个统一的存储系统中。
Ceph是一个统一的、分布式的存储系统,设计初衷是提供较好的性能、可靠性和可扩展性。
- 统一的:意味着我们可以仅凭Ceph这一套存储系统,同时提供对象存储、块存储和文件系统存储三种功能,这极大地简化了不同应用需求下的部署和运维工作。
- 分布式:Ceph实现了真正的去中心化,理论上可以无限扩展集群系统的规模。
参考资料:
官方地址:https://ceph.com/en/
官方文档:https://docs.ceph.com/en/latest/
Github地址:https://github.com/ceph/ceph
最新版本:https://docs.ceph.com/en/latest/releases/
- Reef-18.2.2(2023-08-07)
- Quincy-17.2.7(2022-04-19)
- Pacific-16.2.15(2021-03-31)
版本命名规则,第二个数字表示:
- x.0.x:开发版
- x.1.x:候选版
- x.2.x:稳定、修正版,建议都是用稳定版本进行
系统支持:
全系列最好的系统支持是Ubuntu
Ceph的发展对于Centos系列和Redhat系列不友好,新版本不支持旧版本系统。
活动版本:积极维护,并定期接收向后移植和安全修复
存档版本:不再维护
发布时间表:项目版本发布时间
1.2.2 软件特点
为什么很多人用Ceph?
1. 创新,Ceph能够同时提供对象存储、块存储和文件存储三种存储服务的统一存储架构。
2. 算法,Ceph得以摒弃了传统的集中式存储元数据寻址方案,通过Crush算法的寻址操作,有相当强大的扩展性。
3. 可靠,Ceph中的数据副本数量可以由管理员自行定义,并可以通过Crush算法指定副本的物理存储位置以分割故障域,支持数据强一致性的特性也使Ceph具有了高可靠性,可以忍受多种故障场景并自动尝试并行修复。
Ceph本身确实具有较为突出的优势,Ceph追求用最廉价的设备做最牛的存储。
其先进的核心设计思想,概括为八个字 - - “无需查表,算算就好”。
详细地讲,可以总结为以下四点:
高性能
- 摒弃了传统的集中式存储元数据寻址的方案,采用 CRUSH 算法,数据分布均衡,并行度高。
- 考虑了容灾域的隔离,能够实现各类负载的副本放置规则,例如跨机房、机架感知等。
- 能够支持上千个存储节点的规模,支持 TB 到 PB 级的数据。
高可用性
- 副本数可以灵活控制。
- 支持故障域分隔,数据强一致性。
- 多种故障场景自动进行修复自愈。
- 没有单点故障,自动管理。
高可扩展性
- 去中心化。
- 扩展灵活。
- 随着节点增加而线性增长。
特性丰富
- 支持三种存储接口:块存储、文件存储、对象存储。
- 支持自定义接口,支持多种语言驱动。
1.2.3 基本结构
Ceph是一个多版本存储系统,它把每一个待管理的数据流(例如一个文件)切分为一到多个固定大小的对象数据,并以其为原子单元完成数据存取。
对象数据的底层存储服务是由多个主机(host)组成的存储集群,该集群也被称之为 RADOS(Reliable Automatic Distributed Object Store)存储集群,即可靠、自动化、分布式对象存储系统。
librados是RADOS存储集群的API,它支持C、C++、Java、Python、Ruby和PHP等编程语言。
1.2.4 应用场景
Ceph delivers object, block, and file storage in one unified system.
Ceph在一个统一的系统中提供对象、块和文件存储。
RadosGW、RBD和CephFS都是RADOS存储服务的客户端,它们把RADOS的存储服务接口(librados)分别从不同的角度做了进一步抽象,因而各自适应于不同的应用场景。
也就是说,Ceph将三种存储类型统一在一个平台中,从而实现了更强大的适用性。
自下而上,可以将Ceph系统分为四个层次:
1.基础存储系统:RADOS(Reliable, Autonomous, Distributed Object Store, 即可靠的、自动化的、分布式的对象存储)
2.基础库:LIBRADOS
- 通过自编程方式实现数据的存储能力
3.高层应用接口:包括了三个部分
- 对象存储接口(Object):RADOS GW (RADOS Gateway),有原生的 API,而且也兼容 Swift 和 S3 的 API。
- 通过标准的RESTful接口,提供一种云存储服务。
- 块存储接口(Block):RBD (Reliable Block Device),支持精简配置、快照、克隆。
- 将Ceph提供的空间,模拟出来一个一个的独立块设备使用。而且Ceph环境部署完毕后,服务端就准备好了rbd接口。
- 文件存储接口(File):Ceph FS (Ceph File System),Posix 接口,支持快照。
- 通过一个标准的文件系统接口来进行数据的存储。
4.应用层:基于高层接口或者基础库librados开发出来的各种APP,或者主机,VM等诸多客户端
官方参考图例链接:https://docs.ceph.com/en/reef/_images/stack.png
类型 | 典型设备 | 优点 | 缺点 | 使用场景 |
---|---|---|---|---|
CephFS | FTP、NFS服务器 为了克服块存储文件无法共享的问题,所以有了文件存储。 在服务器上架设FTP与NFS服务就是文件存储。 | 1.造价低 2.方便文件共享 | 1.读写速率低 2.传输速率慢 | 1.日志存储 2.有目录结构的文件存储 |
RBD | 磁盘阵列,硬盘 主要是将裸磁盘空间映射给主机使用 | 1.通过Raid与LVM等手段,对数据提供了保护。 2.多块廉价的硬盘组合起来,提高容量。 3.多块磁盘组合出来的逻辑盘,提升读写效率。 | 1.采用SAN架构组网时,光纤交换机,造价成本高。 2.主机之间无法共享数据。 | 1.docker容器、虚拟机磁盘存储分配。 2.日志存储 3.文件存储 |
RGW | 内置大容量硬盘的分布式服务器(swift,s3) 多台服务器内置大容量硬盘,安装上对象存储管理软件,对外提供读写访问功能。 | 1.具备块存储的读写高速。 2.具备文件存储的共享等特性。 | (适合更新变动较少的数据) 1.图片存储 2.视频存储 |
1.3 小结