Ceph学习 -5.存储原理

1.存储原理

学习目标:这一节,我们从存储解读、案例解读、小结三个方面来学习。

1.1 存储解读

存储数据

Ceph 存储集群从 Ceph 客户端接收数据,无论是通过 Ceph 块设备、Ceph 对象存储、Ceph 文件系统还是使用 librados 创建的自定义实现,这些数据存储为 RADOS 对象,每个对象都存储在一个对象存储设备上。
Ceph OSD 守护进程处理存储驱动器上的读、写和复制操作。它主要基于两种文件方式实现:
	- FileStore方式,每个 RADOS 对象都作为一个单独的文件存储在传统文件系统(通常是 XFS)上。
	- BlueStore方式,对象以类似整体数据库的方式存储,这是最新版本 Ceph 默认的存储方式。

注意:在 Ceph 中,每一个文件都会被拆分为多个独立的 Object,然后按照上面的逻辑进行持久化。

在这里插入图片描述

Ceph OSD 守护进程将 “数据” 作为对象存储在平面命名空间中,该对象包括如下部分:
	- 标识符:在内存中唯一查找的标识
	- 二进制数据:每个对象的真实数据
	- 属性数据:由一组名称/值对组成的元数据,语义完全取决于 Ceph 客户端。
例如,CephFS 使用元数据来存储文件属性,例如文件所有者、创建日期、上次修改日期等。

注意:对象 ID 在整个集群中是唯一的,而不仅仅是本地文件系统。

在这里插入图片描述

1.2 案例解读

1.2.1 存储示例

存储一个大小为16M的文件,存储的时候,需要首先进行切割,假设每个对象(object)大小为4M,然后通过hash方式将object存储到对应的PG上,然后通过CRUSH策略将对应的数据关联到不同的hosts上。
	这个时候遇到一个问题:OSD是一个磁盘设备,那么如何来进行存储数据

常见的处理措施主要有两种:
	第一种:将OSD格式化为文件系统,然后挂载到对应目录,然后就可以使用了
	第二种:OSD有自己的守护进程,那么直接在守护进程空间中实现数据的处理

1.2.2 方法1 - FileStore

在这里插入图片描述

这个时候,OSD就变成一个文件系统中的文件(目录)了。
	因此,OSD需要维护object的对象属性信息,object的元数据保存到 OSD(文件系统)的元数据区。
	但是文件系统的元数据区只能存放文件的 属主、属组、权限、时间戳等信息。对于Ceph来说,object的元数据信息却包含很多相关信息,那么这些数据保存到哪里?
那么为了保存文件系统默认能够保存的数据之外的元数据(object对象的其他元数据信息),我们就需要将OSD做成一个XFS文件系统,在这个文件系统中,需要有一个单独的数据库(LevelDB),来维护Ceph的元数据信息,效果如下

在这里插入图片描述

由于这种方式是基于文件系统映射的方式来实现 Ceph 的属性存储,所以我们把这种文件的存储方式称为:FileStore
劣势:
	由于我们的object本来已经称为对象了,而在FileStore中,我们需要将其转换为文件方式来进行数据属性的存储,所以效率有些慢。

附注:
	- XFS是被开发用于高容量磁盘以及高性能文件系统之用的。主要规划为三个部分:
		- 资料区(data section):粗出包括 inode、block、superblock等数据
		- 文件系统活动登录区(log section):用来记录文件系统的变化
		- 实时运作(realtime section):数据真正存储的地方

1.2.3 方法2 - BlueStore

因为OSD对象是由一个ceph-osd守护进程来实现存储数据、处理数据复制、恢复、重新平衡等管理操作的。所以新版的Ceph的OSD进程中,维护了一个RocksDB用于存储objects的元数据属性信息。
RocksDB为了实现数据的存储还需要一个文件系统,所以Ceph就为它开发了一个文件系统BlueFS。
	
RocksDB + BlueFS 共同实现了objects的元数据的存储,所以我们把这种存储方式称为BlueStore。新版的Ceph的存储机制,默认采用的就是 BlueStore 机制。

在这里插入图片描述

1.3 小结


相关推荐

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-09 12:22:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-09 12:22:02       100 阅读
  3. 在Django里面运行非项目文件

    2024-04-09 12:22:02       82 阅读
  4. Python语言-面向对象

    2024-04-09 12:22:02       91 阅读

热门阅读

  1. 7.网络编程-安全

    2024-04-09 12:22:02       36 阅读
  2. Ubuntu安装Opencv + opencv_contrib(v4.9.0)

    2024-04-09 12:22:02       37 阅读
  3. node.js常用命令

    2024-04-09 12:22:02       27 阅读
  4. 在 Linux 上使用 Git LFS

    2024-04-09 12:22:02       31 阅读
  5. x264 8x8 水平预测汇编分析

    2024-04-09 12:22:02       39 阅读
  6. 【已解决】解决前端模块与Node.js版本不兼容问题

    2024-04-09 12:22:02       36 阅读
  7. elasticsearch常见面试题

    2024-04-09 12:22:02       29 阅读
  8. 推荐系统学习记录——BERT、SBERT

    2024-04-09 12:22:02       32 阅读