CEPH filesystem development
 help / color / mirror / Atom feed
From: Loic Dachary <loic@dachary.org>
To: "Lluís Pàmies i Juárez" <llpamies@pamies.cat>,
	"Michael Nelson" <mn+ceph-users@tnld.net>
Cc: Ceph Development <ceph-devel@vger.kernel.org>
Subject: Re: [ceph-users] EC pool errors with some k/m combinations
Date: Wed, 18 Jun 2014 17:27:32 +0200	[thread overview]
Message-ID: <53A1AFE4.2080708@dachary.org> (raw)
In-Reply-To: <CAKD2hyEhMvMQDcSUmyxtBaOOREk9FS51msRwG0kLyu6PQA6RyQ@mail.gmail.com>

[-- Attachment #1: Type: text/plain, Size: 4344 bytes --]

Hi Lluís,

Here is a minimal test that verifies your patch works (and will prevent regression). It fails without your patch. Feel free to cherry-pick it in your pull request.

erasure-code: verify that rados put enforces alignment

http://tracker.ceph.com/issues/8622 refs: #8622

Signed-off-by: Loic Dachary <loic@dachary.org>
---
 src/test/erasure-code/test-erasure-code.sh | 11 +++++++++++
 1 file changed, 11 insertions(+)

diff --git a/src/test/erasure-code/test-erasure-code.sh b/src/test/erasure-code/test-erasure-code.sh
index b779f68..ba0d43a 100755
--- a/src/test/erasure-code/test-erasure-code.sh
+++ b/src/test/erasure-code/test-erasure-code.sh
@@ -60,6 +60,17 @@ function TEST_rados_put() {
     diff $dir/ORIGINAL $dir/COPY || return 1
 
     rm $dir/ORIGINAL $dir/COPY
+
+    # 
+    # Verify that the rados command enforces alignment constraints
+    # imposed by the stripe width
+    # See http://tracker.ceph.com/issues/8622
+    #
+    local stripe_width=$(./ceph-conf --show-config-value osd_pool_erasure_code_stripe_width)
+    local block_size=$((stripe_width - 1))
+    dd if=/dev/zero of=$dir/ORIGINAL bs=$block_size count=2
+    ./rados --block-size=$block_size \
+        --pool ecpool put UNALIGNED $dir/ORIGINAL || return 1
 }
 
 main test-erasure-code

Cheers

On 17/06/2014 20:23, Lluís Pàmies i Juárez wrote:
> Michael, Loic,
> 
> I'm having similar issues with certain (k,m) combinations when storing
> objects larger than 4MB. Since this thread is relatively old I was
> wondering if anyone had fixed it or at least has identified this bug.
> Any news?
> 
> Lluis
> 
> On Mon, Mar 31, 2014 at 5:08 PM, Michael Nelson <mn+ceph-users@tnld.net> wrote:
>>
>>
>> On Mon, 31 Mar 2014, Michael Nelson wrote:
>>
>>> Hi Loic,
>>>
>>> On Sun, 30 Mar 2014, Loic Dachary wrote:
>>>
>>>> Hi Michael,
>>>>
>>>> I'm trying to reproduce the problem from sources (today's instead of
>>>> yesterday's but there is no difference that could explain the behaviour you
>>>> have):
>>>>
>>>> cd src
>>>> rm -fr /tmp/dev /tmp/out ;  mkdir -p /tmp/dev ; CEPH_DIR=/tmp LC_ALL=C
>>>> MON=1 OSD=6 bash -x ./vstart.sh -d -n -X -l mon osd
>>>> ceph osd erasure-code-profile set profile33 ruleset-failure-domain=osd
>>>> k=3 m=3
>>>> ceph osd crush rule create-erasure ecruleset33 profile33
>>>> ceph osd pool create testec-33 20 20 erasure profile33 ecruleset33
>>>> ./rados --pool testec-33 put SOMETHING  /etc/group
>>>>
>>>> but it succeeds. Could you please script a minimal set of commands I
>>>> could run to repeat the problem you're seeing ?
>>>
>>>
>>> The file that I put into the pool was 15MB in size and the error occurred
>>> after the first 4MB chunk. That might be the difference.
>>>
>>> I will try to come up with a list of commands in case that doesn't trigger
>>> it for you.
>>
>>
>> Here is a concise version of what I am deploying with (limited to 6 OSDs in
>> this example).
>>
>> ceph-deploy new c1 c2 c3
>> pdsh -wc[1-3] yum -y install ceph
>> ceph-deploy mon create c1 c2 c3
>> sleep 30
>>
>> cd /etc/ceph
>> ceph-deploy gatherkeys c1 c2 c3
>>
>> machines=(c1 c2 c3)
>>
>> for machine in ${machines[@]}; do
>>         for n in {1..2}; do
>>                 ssh root@$machine 'rm -rf /data$n/osd$n && mkdir -p
>> /data$n/osd$n'
>>                 ssh root@$machine 'rm -rf /journals/journal-osd$n'
>>                 ceph-deploy osd prepare
>> $machine:/data$n/osd$n:/journals/journal-osd$n
>>                 ceph-deploy osd activate
>> $machine:/data$n/osd$n:/journals/journal-osd$n
>>         done
>> done
>>
>> # Wait for OSDs to settle
>> sleep 60
>>
>>
>> ceph osd erasure-code-profile set profile33 ruleset-failure-domain=osd k=3
>> m=3
>> ceph osd crush rule create-erasure ecruleset33 profile33
>> ceph osd pool create ectest-33 20 20 erasure profile33 ecruleset33
>>
>> root@c1:~/ceph# rados -p ectest-33 put xyz sampledata
>> error putting ectest-33/xyz: Operation not supported
>>
>> root@c1:~/ceph# du -h sampledata
>> 15M     sampledata
>>
>>
>> _______________________________________________
>> ceph-users mailing list
>> ceph-users@lists.ceph.com
>> http://lists.ceph.com/listinfo.cgi/ceph-users-ceph.com
> 
> 
> 

-- 
Loïc Dachary, Artisan Logiciel Libre


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 263 bytes --]

       reply	other threads:[~2014-06-18 15:30 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <alpine.LFD.2.03.1403292258150.8259@tnld.net>
     [not found] ` <5337FFD7.4080102@dachary.org>
     [not found]   ` <alpine.LFD.2.03.1403310103050.11536@tnld.net>
     [not found]     ` <alpine.LFD.2.03.1404010004450.13251@tnld.net>
     [not found]       ` <CAKD2hyEhMvMQDcSUmyxtBaOOREk9FS51msRwG0kLyu6PQA6RyQ@mail.gmail.com>
2014-06-18 15:27         ` Loic Dachary [this message]
2014-06-18 15:30         ` [ceph-users] EC pool errors with some k/m combinations Loic Dachary

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=53A1AFE4.2080708@dachary.org \
    --to=loic@dachary.org \
    --cc=ceph-devel@vger.kernel.org \
    --cc=llpamies@pamies.cat \
    --cc=mn+ceph-users@tnld.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox