一、存储类型
块存储(SAN) Storage Area Network:本质是硬盘(由多个块block组成,使用前需要格式化建立文件系统),给服务器提供一块硬盘和本机上的物理硬盘没有区别,只不过不在服务器内部,是通过外部网络连接进来的,优点:提供更多容量,冗余灾备。
文件存储(NAS): 在硬盘上创建文件系统(格式化),然后通过网络提供文件共享服务。这样,多个用户和设备就可以通过网络访问、读取和写入存储在NAS中的文件,实现数据的集中管理和共享。存储非结构化数据,以目录树结构存储 file文件
对象存储(OBJ):存储的文件被称为对象,所有数据都存储在一个bucket 存储桶里(扁平化存储,所有文件都是同一层级的),可以存储各种类型的文件,如视频、文本、图片等,每个存储的Object对象都有object ID(身份证)、data数据本身、Metadata元数据,用户访问必须要知道ID号,
- 元数据是关于数据的数据,它提供了有关对象的额外信息,但并不包括对象本身的内容。例如,元数据可以包括对象的创建时间、最后修改时间、内容类型(如图片、视频等)、访问权限、标签等信息。元数据对于对象存储系统的高效运作至关重要,因为它允许系统更好地管理和检索数据,同时也为用户提供了更多关于对象的信息和控制。
对象存储(Object Storage)是一种高度灵活且可扩展的数据存储方式,它特别适合处理大量的非结构化数据。在对象存储中,所有的数据都被视为“对象”,并且存储在一个称为“存储桶”(Bucket)的容器中。这种存储方式的特点是扁平化,意味着所有的对象都位于同一层级,没有文件夹或子目录的概念,从而简化了数据的管理和访问。
每个对象由三个基本部分组成:
- Object ID(对象标识符):
- 这是对象的唯一标识,类似于身份证号码。它用于精确地定位和访问对象存储中的特定对象。
- Data(数据本身):
这是对象存储的核心,即用户实际存储的内容,可以是文本、图片、视频或任何其他类型的文件。
Metadata(元数据):
元数据是关于数据的额外信息,如创建时间、内容类型、大小等。它可以帮助用户更好地管理和检索对象,也可以用于实现各种策略,如缓存控制、数据备份和数据生命周期管理。
二、相关组件
组件 | 概念 |
Monitor | 一个Ceph集群需要多个Monitor组成的小集群,它们通过Paxos同步数据,用来保存OSD的元数据 |
OSD | OSD负责相应客户端请求返回具体数据的进程,一个Ceph集群一般都有很多个OSD |
MSD | MSD 全称Cepg Metadata Service,是CephFs服务依赖的元数据服务 |
Object | Ceph最底层的存储单位是Object对象,每个Object包含元数据和原始数据 |
PG | PG全称Placement Groups,是一个逻辑的概念,一个PG包含多个OSD。引入PG这一层其实是为了更好的分配数据和定位数据 |
RADOS | 是Ceph集群的精华,为用户实现数据分配,Failover等集群操作 |
Libradio | Libradio是Rados提供库,因为RADOS是协议很难直接访问,因此上层的RBD、RGW和CephFs都是通过librados访问的目前提供PHP、Ruby、Java、Python等支持 |
CRUSH | CRUSH是Ceph使用的数据分布算法,类似一致性哈希,让数据分配到预期的地方。 |
RBD | RBD全称RADOS block device,是Ceph对外提供的块设备服务 |
Image | RBD image是简单的块设备,可以直接被mount到主机,成为一个device,用户可以直接写入二进制数据。image的数据被保存为若干个RADOS对象存储中的对象;image的数据空间是thin provision的,意味着Ceph不预分配空间,而是等到实际写入数据时按照object分配空间;每个data object被保存为多份。pool将RBD镜像的ID和name等基本信息保存在rbd_directory中,这样rbd ls命令就可以快速返回一个pool中所有的RBD镜像了 |
RGW | RGW全称RADOS gateway,是Ceph对外提供的对象存储服务,接口与S3和Swift兼容 |
CephFs | CephFs全称Ceph File System,是Ceph对外提供的文件系统服务 |
Pool | pool 是Ceph存储时的逻辑分区,它起到namespace的作用 |