Wouldn't k=1, m=1 just be replica 2? EC will split the object into k pieces (1)... Ok, that's the whole object. And then you want to be able to lose m copies of the object (1)... Ok, that's an entire copy of that whole object. That isn't erasure coding, that is full 2 copy replication. For erasure coding to work you need to split the object into at least 2 pieces (k) and then have at least one parity copy (m). With m=0 you have no redundancy and just made a super slow raid 0.
On Thu, Apr 27, 2017, 6:49 PM Loic Dachary <loic@xxxxxxxxxxx> wrote:
On 04/27/2017 11:43 PM, Oleg Kolosov wrote:
> Hi Loic,
> Of course.
> I'm implementing a version of Pyramid Code. In Pyramid you remove one of the global parities of Reed-Solomon and add one local parity for each local group. In my version, I'd like to add local parity to the global parity (meaning that for the case the global parity = 1, it would be replicated). This way in case of a failure in the global parity, you can reconstruct it using the replicated node instead of reconstructing it will all K nodes.
>
> This is my profile:
> ceph osd erasure-code-profile set myprofile \
> plugin=lrc \
> mapping=DD_DD___ \
> layers='[
> [ "DD_DD_c_", "" ],
> [ "DDc_____", "" ],
> [ "___DDc__", "" ],
> [ "______Dc", "" ],
> ]' \
> ruleset-steps='[
> [ "chooseleaf", "osd", 8 ],
> ]'
You could test and see if commenting out the sanity check at
https://github.com/ceph/ceph/blob/master/src/erasure-code/jerasure/ErasureCodeJerasure.cc#L89
does the trick. I don't remember enough about this border case to be sure it won't work. You can also give it a try with
https://github.com/ceph/ceph/blob/master/src/test/erasure-code/ceph_erasure_code_benchmark.cc
Cheers
> Regards,
> Oleg
>
> On Fri, Apr 28, 2017 at 12:33 AM, Loic Dachary <loic@xxxxxxxxxxx <mailto:loic@xxxxxxxxxxx>> wrote:
>
> Hi Oleg,
>
> On 04/27/2017 11:23 PM, Oleg Kolosov wrote:
> > Hi,
> > I'm working on various implementation of LRC codes for study purposes. The layers implementation in the LRC module is very convenient for this, but I've came upon a problem in one of the cases.
> > I'm interested in having k=1, m=1 in one of the layers. However this gives out an error:
> > Error EINVAL: k=1 must be >= 2
> >
> > I should point out that my erasure code has additional layers which are fine, only this one has k=1, m=1.
> >
> > What was the reason for this issue?
> > Can replication be implemented in one of LRC's layers?
>
> Could you provide the code for me to reproduce this problem ? Or a description of the layers ? I implemented this restriction because it made the code simpler. And also because I could not think of a valid use case.
>
> Cheers
>
> --
> Loïc Dachary, Artisan Logiciel Libre
>
>
--
Loïc Dachary, Artisan Logiciel Libre
_______________________________________________
ceph-users mailing list
ceph-users@xxxxxxxxxxxxxx
http://lists.ceph.com/listinfo.cgi/ceph-users-ceph.com
_______________________________________________ ceph-users mailing list ceph-users@xxxxxxxxxxxxxx http://lists.ceph.com/listinfo.cgi/ceph-users-ceph.com