对象存储 | 青训营

42 阅读3分钟

对象存储

一、对象存储的概念

相对于存储局域网(SAN)和网络附加存储(NAS)网络存储架构,对象存储(Object-based Storage)是一种新的网络存储架构,基于对象存储技术的设备就是对象存储设备(Object-based Storage Device)简称 OSD。总体上来讲,对象存储综合了 NAS 和 SAN 的优点,同时具有 SAN 的高速直接访问和 NAS 的分布式数据共享等优势,提供了具有高性能、高可靠性、跨平台以及安全的数据共享的存储体系结构。

二、对象存储架构

核心是将数据通路(数据读或写)和控制通路(元数据)分离,并且基于对象存储设备构建存储系统,每个对象存储设备是智能的,能够自动管理其上的数据分布。对象存储结构由对象存储设备、元数据服务器、对象存储系统的客户端三部分组成。

  • 对象存储设备 : 每个 OSD 都是一个智能设备,具有自己的存储介质、处理器、内存以及网络系统等,负责管理本地的 Object,是对象存储系统的核心。OSD 同块设备的不同不在于存储介质,而在于两者提供的访问接口。OSD 的主要功能包括数据存储和安全访问、目前国际上通常采用刀片式结构实现对象存储设备。

  • 元数据服务器 : MDS 控制 Client 与 OSD 对象的交互,为客户端提供元数据,主要是文件的逻辑视图,包括文件与目录的组织关系、每个文件所对应的 OSD 等。

  • 对象存储系统的客户端: 为了有效支持 Client 支持访问 OSD 上的对象,需要在计算节点实现对象存储系统的 Client。现有的应用对数据的访问大部分都是通过 POSIX 文件方式进行的,同时为了提高性能,也具有对数据的 Cache 功能和文件的条带功能。同时,文件系统必须维护不同客户端上 Cache 的一致性,保证文件系统的数据一致。

三、对象存储实现

计算机存储技术涵盖广泛的范畴,从存储硬件到存储网络,从操作系统到分布式系统。一个功能完备的存储系统需要考虑数据的可用性、一致性和持久性,需要具备灾备和恢复能力,并且运维友好。

1、对象存储开源项目:

基于对象的存储系统,业界有几种可用的开源解决方案,例如Ceph、MinIO、Openio.io、OpenStack Swift等等。这些项目在其功能上不尽相同,但是都有相同的设计目标——实现非结构化数据的大规模存储。

2、Ceph存储系统实现:

基于同一套存储基础设施,Ceph同时提供了文件、块、对象三种数据访问接口,

  • RADOS本身是一个完整的对象存储系统,所有存储在Ceph中的数据最终都是由这一层来存储的。Ceph的高可靠、高可扩展、高性能、高自动化等特性,本质上也是由这一层提供的;

  • LIBRADOS是对Ceph客户端与RADOS集群交互协议的封装,基于librados,我们可以创建自己的客户端;

  • RADOS GW、RBD、CEPH FS属于高层接口,它们在librados库的基础上分别提供对象存储接口、文件接口和块存储接口。