On Sun, Aug 26, 2012 at 10:09 AM, Noah Watkins <jayhawk@xxxxxxxxxxx> wrote: > Would anyone mind giving a short overview of the difference between > tmap, omap, and xattrs, and the physical layout of these with respect > to the object payload? xattrs are (usually — caveat below) stored in the filesystem attached to the object. Their physical layout varies quite a bit — in btrfs you can usually count on them being in-line with the inode IIRC; in xfs they'll start out in-line but tend to overflow into separate blocks unless you set it to use large xattrs; in ext4...I have no idea. tmap is an old system in which the actual object is used to store key-value pairs sequentially — so it *is* the object payload. There's nothing special about it as far as the filesystem is concerned, and the OSD only knows it's different from a regular object if you access it with the tmap ops (you can also use get and put on the object, and it'll work if your client recognizes the tmap interface). Generally speaking though, you should consider this deprecated in favor of... omaps are put in a per-osd leveldb store, carefully keyed so they can be associated with the correct object. The on-disk layout for these is more complicated (read about leveldb if you're interested) and has no relation to the object payload's layout. But they're generally pretty quick to access since leveldb is so well optimized. Additionally, there's an OSD flag filestore_xattr_use_omap, which will use leveldb instead of xattrs for all xattrs over a certain size (filestore_max_inline_xattr_size) or if you have more than a certain number of xattrs associated with an object (filestore_max_inline_xattrs). This option defaults to false but the OSD will enable it automatically if you are using ext4. -- To unsubscribe from this list: send the line "unsubscribe ceph-devel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html