On Fri, Dec 29, 2017 at 01:01:25PM +0800, Jeegn Chen wrote: > Hi Robin > > > Rough implementation: > > - For writes, the RGW zone data describes which pool maps to each > > storage class. > > (corner case: multipart uploads might need each part in a consistent pool) > [Jeegn]: Do you mean mean different placement polices are > corresponding to STORAGE CLASSes? Yes, placement_pools are already most of the way to storage class behavior, but they seemingly were modeled after Swift rather than S3. > > - The bucket-index data already describes the RADOS POOL to _read_ from > > (corner case: old buckets/objects don't have this set) > [Jeegn]: Are you referring to the tail_bucket in the RGWObjManifest, > which is somewhat a copy of placement rule? Currently, it seems to > support the copy across buckets with the same data pool and I have not > found the logic to deal with different pools. But yes, maybe we can > reuse it instead of add additional xattr to track the tail pools. I haven't confirmed exactly where in the codebase it is, but visible in the 'radosgw-admin bi get/list' output is the pool ID. In the following snippet, look at entry.ver.pool. That's the ID for my .rgw.data.1 pool. $ sudo radosgw-admin --bucket CENSORED bi list --object .bash_profile [ { "type": "plain", "idx": ".bash_profile", "entry": { "name": ".bash_profile", "instance": "", "ver": { "pool": 5, "epoch": 100414 }, "locator": ".bash_profile", "exists": "true", "meta": { "category": 1, "size": 81, "mtime": "2015-07-02 15:31:59.000000Z", "etag": "8040ef233daa49c60b93cb3a45617e19", "owner": "CENSORED", "owner_display_name": "CENSORED", "content_type": "application\/octet-stream", "accounted_size": 81, "user_data": "" }, "tag": "default.136713729.262057859", "flags": 0, "pending_map": [], "versioned_epoch": 0 } } ] > > - radosgw-admin already contains bucket/object rewrite functionality, > > that would effectively copy from an old pool into the new pool. > > (note: I don't think is well-documented at all) > [Jeegn]: Are you talking about "radosgw-admin bucket rewrite"? But per > check through RGWRados::rewrite_obj() and check_min_obj_stripe_size() > in the master branch, the functionality is used to migrate from > explicit-obj implementation to manifest implementation. Or you mean > some command else or some implementation wip? I think this functionality is close enough for slight modifications to get what we want, of a manifest-to-manifest rewrite. -- Robin Hugh Johnson Gentoo Linux: Dev, Infra Lead, Foundation Treasurer E-Mail : robbat2@xxxxxxxxxx GnuPG FP : 11ACBA4F 4778E3F6 E4EDF38E B27B944E 34884E85 GnuPG FP : 7D0B3CEB E9B85B1F 825BCECF EE05E6F6 A48F6136
Attachment:
signature.asc
Description: Digital signature