Ceph 是什么?
在讲 Ceph 之前,先了解一下 ,软件定义存储
软件定义存储(SDS
)是一个软件层
,在物理存储设备和数据请求之间提供个抽象层,实现存储虚拟化
功能,将底层存储设备和服务器汇集到虚拟存储空间中。这些虚拟空间通过各种冗余
方式,提供恢复能力和容错能力
。软件定义存储解决方案可以按照业务或基础设施的发展速度进行扩展,使用通用硬件,基于分布式环境构建存储。
虽然 Linux 下 提供了 LVM
,也可以实现,物理设备和数据访问的抽象层,化整为零,按需分配,但它并不是一种 SDS
,本质上是一种文件系统
.
具体来说,SDS 是通过虚拟化技术
将多个存储设备
整合为一个逻辑存储池
,然后使用软件来管理这个存储池(化零为整,动态分配)。这使得存储可以更加容易地扩展和管理,并且可以根据需求进行动态调整。同时,SDS 还支持多种不同的存储协议,包括文件、块和对象存储,以满足不同应用场景和需求。
SDS 与传统存储架构相比,有以下优点:
- 灵活性:SDS 可以在不同的硬件环境下运行,并且可以轻松地进行配置和管理。
- 可扩展性:SDS 支持更多存储节点的添加,以扩大存储容量并提高性能。
- 低成本:SDS 可以使用通用硬件,因此可以降低成本。
- 可靠性:SDS 提供了更好的数据保护和灾难恢复功能,从而提高了数据的可靠性。
目前市场上有很多软件定义存储(SDS)产品可供选择。以下是一些常见的 SDS 产品:
GlusterFS
:GlusterFS 是一种开源的分布式文件系统,可以将多个存储节点整合为一个逻辑存储池,并提供了 NFS 和 SMB 等协议进行访问。OpenIO
:OpenIO 是一个开源的对象存储平台,具有高度可伸缩性和容错性,特别适合大规模存储和数据分析应用。SwiftStack
:SwiftStack 是一个商业化的对象存储解决方案,它基于 OpenStack Swift 平台构建,并提供了易于使用的管理工具。Red Hat Storage
:Red Hat Storage 是一个基于 Ceph 和 GlusterFS 的 SDS 解决方案,提供了多种存储功能,包括块、文件和对象存储等。
我们今天要讲的 Ceph
也是其中的一种。
用最简单的话讲,Ceph
是一个软件定义存储(SDS)产品,开源的分布式存储系统
,它提供了 对象存储、块存储和文件存储
的功能,支持多种数据保护方案
发展历程
Ceph 最初由 Sage Weil
在 2004 年创建
创立和早期开发(2004-2010)
:Sage Weil 开始研究分布式文件系统,并于 2004 年创建了 Ceph 项目。早期版本的 Ceph 主要关注于对象存储
,并在 2006 年切换到基于 RADOS
的架构。
改进和商业化(2010-2014)
:Ceph 在 2010 年成为 Linux 基金会的一个子项目,随后引入了块存储和文件存储等新功能。然后 SUSE 公司开始将 Ceph 用于其企业级存储产品,这标志着 Ceph 开始商业化。
完善和社区增长(2014-2017)
:Ceph 在此时已经成为大规模存储领域主要的开源解决方案之一。与此同时,Ceph 社区也不断扩大,包括了来自多个公司和组织的贡献者。Ceph 还加入了 OpenStack 等重要的开源项目,使得 Ceph 在云计算领域得到了广泛应用。
BlueStore 和 Nautilus 发布(2017-2020)
:Ceph 在此期间推出了 BlueStore 存储后端,为 Ceph 存储集群带来了更好的性能和可靠性。此外,Ceph 也推出了 Nautilus 版本,引入了许多新特性和改进,包括 iSCSI、NFS Ganesha、TLS 加密等。
O版和P版的发布(2020-2022)
:在次期间,Ceph 发布了两个版本,Octopus,和 Pacific,对应 15.x 和 16.x ,引入了 cephadm管理工具、BlueStore压缩等新特性,并对CephFS进行改进,P 版中引入了 RGW RESTful API V3、支持NVMe over Fabrics(NoF)和Zoned Namespace(ZNS) SSD等新功能
Quincy 和未来(2022-至今)
:当前 Ceph 最新版本是 Quincy ,2022-04-19
发布,Quincy 是 Ceph 的第 17 个稳定版本。它以鱿鱼命名 来自海绵宝宝的昆西触手。
Ceph 在过去数年中得到了快速发展和广泛应用,并成为了开源存储领域重要的解决方案之一。未来,Ceph 还将继续发展壮大,并为用户提供更加稳定、高效、灵活的分布式存储服务。
Ceph 可以在普通硬件
上运行,并且可以扩展到数百个节点。使用 CRUSH
算法来实现 数据分布和数据恢复
,这使得 Ceph 具有高度可扩展性和高可用性
。
在 Ceph
中,数据被分成对象
,每个对象都有一个唯一的标识符。对象存储
是 Ceph 的主要存储方式,它可以存储大量的非结构化数据,例如图像、视频和音频文件。
Ceph 还提供了 块存储和文件存储
的功能,这使得它可以存储 结构化数据
,例如数据库和虚拟机镜像。
不管是那种存储方式,都依赖其 对象存储后端
,称为 RADOS
(Reliable Autonomic Distributed Object Store 可靠的自主分布式对象存储)
ceph 的架构可以简单描述为 RADOS
和 与RADOS 交互的多种访问方式
对象存储
、块存储
和文件存储
的区别?
对象存储、块存储和文件存储是三种不同类型的数据存储系统
。
对象存储
对象存储
是一种将数据存储为对象
的存储类型,或者叫将数据划分为对象,每个对象包含 数据、元数据和唯一标识符
。
对象存储非常适合存储大量的非结构化数据
,例如图像、视频和音频文件。
在对象存储中,数据存储在一个平面地址空间
中,这意味着每个对象存储在一个单一位置
。这使得访问和管理大量数据变得容易。对象存储也具有高度可扩展性,因此可以轻松处理大量数据
。
用通俗的话讲,对象存储,即从面向对象的角度理解,不管是什么类型的数据,一切皆对象,存储的数据不存在结构关系,位于同一平面,通过唯一标识符和你可以获取元数据,和数据。
块存储
块存储
是一种将数据存储为 块
的存储类型,每个块包含 数据和唯一标识符
。数据被划分为相同大小的块,并使用唯一标识符(例如 LBA)来访问每个块。类似 dd
命令的操作一样
块存储非常适合存储 结构化数据
,例如 数据库
和 虚拟机镜像
。
在块存储中,数据存储在 分层地址空间
中,这意味着每个块存储在 特定位置
。这使得访问和管理 结构化数据
变得容易。
文件存储
文件存储
是一种将数据存储为文件
的存储类型。文件存储非常适合存储大量
的结构化和非结构化数据,例如文本文件、图像、视频和音频文件。
将数据组织成文件和目录层次结构
,并使用 POSIX
文件系统接口进行访问。它通常用于传统 IT 环境中的文件共享服务,包括网络文件共享、备份和恢复等任务。
在文件存储中,数据存储在文件系统
中,这意味着每个文件存储在特定位置
。这使得访问和管理数据变得容易。
三者的区别
对象存储、块存储和文件存储之间的主要区别在于数据存储的方式
。
- 对象存储将数据存储为对象, 适合存储
非结构化数据
- 块存储将数据存储为块,适合存储
结构化数据
- 文件存储将数据存储为文件,适合存储
大量
的结构化和非结构化数据
另一个区别是数据访问
的方式:
对象存储
:对象存储通常使用 HTTP RESTful API 或 S3 API 进行访问。使用这些接口可以上传、下载、查看和删除对象。由于对象存储中每个对象都有一个唯一的标识符(如 URL 或键),因此可以方便地在应用程序之间共享数据。块存储
:块存储通过块设备协议(如 iSCSI)或卷管理器 API 进行访问。它提供了一个虚拟的块设备,可以像访问本地磁盘一样访问存储设备。与对象存储不同,块存储没有文件系统层,因此需要在客户端上手动创建文件系统才能使用。文件存储
:文件存储通常使用 NFS、CIFS 或 SMB 等网络文件系统协议进行访问。使用这些协议可以将远程文件系统挂载到本地操作系统中,并可以像访问本地文件系统一样读取和写入文件。与块存储相比,文件存储还提供了目录结构和权限控制等额外功能。
块存储和文件存储的区别
块存储
和 文件存储
有些类似,但是是两种不同的数据存储方式,它们之间有以下区别:
存储方式
不同:块存储将数据存储在块设备(例如硬盘、SSD
等)上,每个逻辑块都是一个独立的物理块。而文件存储则将数据存储在文件系统
中,可以跨越多个硬件设备或分布式环境
。数据处理方式
不同:块存储通常直接提供给应用程序处理,而文件存储需要先在操作系统中挂载文件系统才能访问。读写方式
不同:块存储以块为单位进行读写操作,主要用于提供低延迟和高吞吐量的随机访问。而文件存储则以文件为单位进行读写操作,主要用于顺序读取和写入大量数据。
博文部分内容参考
© 文中涉及参考链接内容版权归原作者所有,如有侵权请告知,这是一个开源项目,如果你认可它,不要吝啬星星哦 :)
https://docs.ceph.com