The addition of erasure code in Ceph started in april 2013 and was discussed during the first Ceph Developer Summit. The implementation reached an important milestone a few days ago and it is now ready for alpha testing.
For the record, here is the simplest way to store and retrieve an object in an erasure coded pool as of today:
parameters="erasure-code-k=2 erasure-code-m=1" ./ceph osd crush rule create-erasure ecruleset \ $parameters \ erasure-code-ruleset-failure-domain=osd ./ceph osd pool create ecpool 12 12 erasure \ crush_ruleset=ecruleset \ $parameters ./rados --pool ecpool put SOMETHING /etc/group ./rados --pool ecpool get SOMETHING /tmp/group $ tail -3 /tmp/group postfix:x:133: postdrop:x:134: _cvsadmin:x:135:
The chunks are stored in three objects and it can be reconstructed if any of them are lost.
find dev | grep SOMETHING dev/osd4/current/3.7s0_head/SOMETHING__head_847441D7__3_ffffffffffffffff_0 dev/osd6/current/3.7s1_head/SOMETHING__head_847441D7__3_ffffffffffffffff_1 dev/osd9/current/3.7s2_head/SOMETHING__head_847441D7__3_ffffffffffffffff_2