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的元数据信息,效果如下
文章来源:https://www.toymoban.com/news/detail-851838.html
由于这种方式是基于文件系统映射的方式来实现 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 机制。
文章来源地址https://www.toymoban.com/news/detail-851838.html
1.3 小结
到了这里,关于Ceph学习 -5.存储原理的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!