前言
在Ozone中,众所周知,它最开始设计仿照的原型即是S3语义的存储模式:基于volume, bucket, key三层的存储模型,底层的key是实际存储的对象文件。至于里面对于volume, bucket, key级别的API操作,基本也是实现了S3现有支持的API操作。不过Ozone作为同样Hadoop生态圈内的一个项目,它需要与现有别的系统框架能够很好地协调工作。因此,Ozone内部实现了Ozone FS的语义,意思是说,外部别的框架可以使用文件系统API的方式来使用Ozone。简单来说,就是client可以对Ozone调用执行createFile,mkdir, listFile等等这样文件系统的API操作。至于这个里面Ozone是如何做FS API和实际底层Ozone bucket, key的存储,那是另外的原理实现了。OK,本文笔者要聊的重点是这里提到的Ozone内部的S3语义和FS语义。
Ozone的S3语义和FS语义
光看标题的术语,可能很多人不太能够理解,这里笔者给出具体的例子来说明。
S3语义,就是仿照S3存储/volume/bucket/key级别的存储模式,其中这里的key名称是可以不带任何限制的,比如key里可以带有 … 和 / 这种特殊的字符。
比如说是S3语义下,用户可以存入一个比较偏的key名称如下:
Key名称:/dir1dir2//…//dir3///file1
全路径:/volume/bucket/dir1dir2//…//dir3///file1
但是在FS语义下,我们就要对key的名称做标准化处理了&