知识卡片
xattr与omap按大小热度分工存储元数据
内容
对象的元数据有两条落盘路径:xattr 存在文件的扩展属性里,读写快但受本地文件系统限制(有些文件系统不支持,支持的也常对单个属性大小和总大小有上限);omap 存在独立的本地 KV 存储(如 leveldb/rocksdb)里,几乎没有容量限制但写性能不如读性能。因此约定俗成的用法是:小而访问频繁的信息(如 [[RADOS对象的三段式结构|object_info_t]])放 xattr,大而不常访问的数据放 omap。这是”给同一类需求(存元数据)配两条路径,按访问模式而不是按数据类型来分流”的设计,读写模式的差异比数据本身的语义更能决定该用哪种存储机制。
参考来源
《Ceph源码分析》第7章《本地对象存储》