Hi,

I've released v0.9:

  * The mds exherts memory pressure on clients.  This prevents clients 
from pinning too much memory on the server.
  * a few critical crush bugfixes
  * improved metadata to eventually aid in disaster recovery
  * kclient: fixed snap vs truncate bug
  * kclient: readdir fixes
  * osd recovery fixes
  * lots of bug fixes
  * initial version of librados

The main item in this release, aside from the usual bug and 
performance fixes, is an initial version of librados, which defines a 
simple API for accessing RADOS, the distributed object storage layer of 
Ceph.  It's this distributed object store ("cloud," if you prefer the 
buzzword of the day) that provides the reliable, scalable storage library 
that the Ceph file system relies on.  (There's also a fancy MDS and 
client to build a POSIX file system on top of that.)

The simple librados API goes something like this:

        int rados_open_pool(const char *name, rados_pool_t *pool);
        int rados_close_pool(rados_pool_t pool);

(Pools are separate object namespaces, analogous to S3's buckets.)

        int rados_write(rados_pool_t pool, const char *oid, off_t off, const 
char 
                *buf, size_t len);
        int rados_read(rados_pool_t pool, const char *oid, off_t off, char 
*buf, 
                size_t len);
        int rados_remove(rados_pool_t pool, const char *oid);

There's a similar API for doing async IO.  

RADOS also supports snapshots, taken with per-pool granularity.  (There is 
infrastructure to allow finer granularity, but it requires the API user to 
do a lot of the work of coordination clients.)

A command line tool ('rados') let's you do most of the basic operations: 
listing pools, usage stats, fetching and storing objects, listing objects, 
creating and removing snapshots, etc.

The final item that makes rados interesting as a storage platform is the 
ability to dynamically load object 'classes' into the storage cluster that 
define new 'methods' to access or manipulate objects.  Normally you can do 
simple things like read/write extent, truncate, remove, and append.  With 
object classes, you can write new operations to do things like rotate or 
resize an image (say by linking in libjpeg), encrypt or decrypt a file 
(libcrypto), and make some other query or update to a structured object. 
Generally speaking, this allows for more efficient queries or updates by 
avoiding lots of data transfer over the network, especially for 
read/modify/write cycles.  We're currently in the process, for example, of 
using this functionality for the MDS so that it can make directory updates 
without a full directory read/modify/write.

We're currently ramping up the scale of our internal testing, working out 
scalability and reliablity bugs along the way.  The main priorities for 
the next release are

 * refining the librados interface
 * repair -- recovery from data corruption bugs as we come across them
 * performance testing at scale
 * resolve pending btrfs performance, reliability issues

Cheers-
sage


------------------------------------------------------------------------------
Are you an open source citizen? Join us for the Open Source Bridge conference!
Portland, OR, June 17-19. Two days of sessions, one day of unconference: $250.
Need another reason to go? 24-hour hacker lounge. Register today!
http://ad.doubleclick.net/clk;215844324;13503038;v?http://opensourcebridge.org
_______________________________________________
Ceph-devel mailing list
Ceph-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/ceph-devel

Reply via email to