stores RGW bucket index in distributed KV(foundationdb)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi, all,

We(@liuchang0812 & @Leeshine) are currently working on implementing a
new  bucket index in the Ceph RGW (called FDBIndex). The key points of
FDBIndex are as below:

1. likes tail objects, we make head objects immutable too.
2. stores raw_rgw_key into FDB;  uses `rgw_obj_key::parse_raw_oid` to
get corresponding head object name
3. uses FDB's transaction to atomicly update a) object id b) object
meta info c) bucket usage.

currently we uploads some RGW objects. RGW will create some rados objects as :

    0c4d3ad9-8ff1-45da-9e58-20b5e3766b6d.4158.1__head_ceph.confEMLK8gcVFNgi3O0YpZi7ldQPV_PtyBC
    0c4d3ad9-8ff1-45da-9e58-20b5e3766b6d.4158.1__head_unittest_workqueuebqvuHn7qym69q2JHNURjOUgc0YHlx4l
    0c4d3ad9-8ff1-45da-9e58-20b5e3766b6d.4158.1__shadow_unittest_workqueuebqvuHn7qym69q2JHNURjOUgc0YHlx4l.1_1

We have implemented a prototype already. The new bucket index bucket
supports almost core APIs:

1. put object
2. put multi-part object
3. get object
4. delete object
5. list objects
6. head object

==== testing result

Test cluster is consists of 36 FDB processes(3machines) and 84 OSDs(7 machines).

The bucket which used FDBIndex is expected to store unlimited number
of objects, besides this, as long as the FDB cluster is writable, the
bucket is writable. In order to test this feature, I first uploaded
almost 700W objects into a FDBIndex bucket and ran a backgroud task to
upload objects continuously,  When I killed a FDB process or rebooted
a FDB machine, thae backgroud task was not blocked(i.e. the bucket is
always writable).

Upload 10MB file 100 times, FDB index bucket takes 50.814s, but normal
index bucket takes 53.447s.

I created a bucket with 100 subdirectories and 9999 files under each
subdirectory.  It takes 0.8s to list root directory.

Thanks, comments are appreciated!

1. foundationdb: https://github.com/apple/foundationdb



[Index of Archives]     [CEPH Users]     [Ceph Large]     [Information on CEPH]     [Linux BTRFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux