前言
Ozone作为正在快速迭代开发中的存储系统,相比于HDFS来说,其内部能支持更大规模量级的文件对象存储。不过作为存储系统来说,它同样面临一些数据如何来存储的问题,比如数据存几副本备份,数据replication的策略是什么,数据存储的载体介质是什么等等。本文我们来聊聊Ozone对于这块内容的抽象设计。为什么笔者提到的是抽象设计呢,因为这个功能设计还处在社区讨论中,还未开发完成。
存储类别(策略)抽象提炼的意义
首先一个核心的问题:关于存储类别或者说叫存储策略的抽象化到底有什么意义呢?它能对数据的实际存储能够带来什么帮助呢?
当存储系统完善到一定程度,支持越来越复杂的数据存储形式时,它就需要有这么一层存储类别的抽象化,来帮助外部用户更方便,直观的写入他们的数据到存储系统中去。一个简单的例子,比如用户不需要去主动设置多少副本参数来保证其数据的高可用性,又或者用户想要其数据访问变得更快,让他写入的数据落在拥有SSD盘的机器上等等。
像上述这些存储的要求已经算是比较底层的存储细节了,一个成熟的存储系统能够支持上述的存储要求,但是这里的问题在于它不应该让用户来设置如此底层的存储细节要求。毕竟不是每个使用用户都是底层存储专家,用户关心的无非是它的数据读写够不够快,数据可用性高不高,会不会丢数据。因此这里需要有另外一层更上层的存储抽象来开放给用户做设置,这里笔者简单称之为存储类别(Storage Class)。
HDFS的Storage Policy
HDFS内部实现了类似Storage Class的功能