Re: Replication (k=1) in LRC

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

 



You can't have different EC profiles in the same pool either.  You have to create the pool as either a specific EC profile or as Replica.  If you choose EC you can't even change the EC profile later, however you can change the amount of copies a Replica pool has.  An EC pool of 1:1 doesn't do anything.  It's worse than a Replica 2 pool because you could never change it to have more copies of the data.  I'm guessing this is why it isn't possible to do.

If you meant to say that you can't have EC and Replica pools in the same cluster on the same disks, then that isn't correct.  That is very common and done regularly.

On Fri, Apr 28, 2017 at 9:27 AM Loic Dachary <loic@xxxxxxxxxxx> wrote:


On 04/28/2017 02:48 PM, David Turner wrote:
> Wouldn't k=1, m=1 just be replica 2?

Well yes. But Ceph does not support mixing replication and erasure code in the same pool.

> EC will split the object into k pieces (1)... Ok, that's the whole object.

I was just wondering if jerasure tolerates this degraded use case. Even though it's not useful in general it would solve Oleg issue.

> 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.

:-D

>
>
> On Thu, Apr 27, 2017, 6:49 PM Loic Dachary <loic@xxxxxxxxxxx <mailto: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> <mailto: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 <mailto:ceph-users@xxxxxxxxxxxxxx>
>     http://lists.ceph.com/listinfo.cgi/ceph-users-ceph.com
>

--
Loïc Dachary, Artisan Logiciel Libre
_______________________________________________
ceph-users mailing list
ceph-users@xxxxxxxxxxxxxx
http://lists.ceph.com/listinfo.cgi/ceph-users-ceph.com

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


  Powered by Linux