在存储文件时,Ceph 会将文件切割成多个对象,除了最后一个之外,大部分对象大小相同(文件大小可能不是对象大小的倍数)。
我从Ceph官网知道,对象大小不是固定的,而是可以通过某个参数来确定的,那么决定对象大小的参数是什么?
Ceph 文件系统建立在 RADOS 对象存储系统之上。也就是说,文件中的字节存储在一个或多个对象中。文件中的字节映射到对象的方式称为条带化策略。例如,在具有固定 1 MB 对象的条带化策略中,文件中偏移处的字节[0, 2**20)
可能存储在 object.0 中,第二兆字节[2**20, 2**21)
存储在 object.1 中,依此类推。还有其他方法可以将线性字节流映射到对象上。这里有更多信息:
http://ceph.com/docs/master/cephfs/file-layouts/
并且您可以在使用 libcephfs 时以编程方式更改条带化策略:
https://github.com/ceph/ceph/blob/master/src/include/cephfs/libcephfs.h#L738
请注意,此映射意味着固定的对象大小。但是,RADOS 本身对对象大小没有限制(可配置的最大大小除外)。因此,如果您使用 RADOS 对象 API 来存储数据,则没有固定大小。