Hi Greg,

the information you requested:
dumpling platform : ceph version 0.67.9 
(ba340a97c3dafc9155023da8d515eecc675c619a)

See attached the decompiled crushmap
(created today by "ceph osd getcrushmap -o crushmap_current" and crushtool -d 
crushmap_current -o crushmap_current.txt)
and the result of:
- "ceph osd crush rule dump" in order to get rule_ids
- "ceph osd dump | grep pool" in order to get pools characteristics 

The ceph commands I ran
for crushmap
        ceph osd getcrushmap -o crushmap_current
        crushtool -d crushmap_current -o crushmap_current.txt
        vi crushmap_current.txt ==> crushmap_V2.4.txt
        crushtool -c crushmap_V2.4.txt -o crushmap_V2.4
        ceph osd setcrushmap -i crushmap_V2.4
        
the file crushmap_current provided today is hence the decompilation of 
crushmap_V2.4

for pool
        rados mkpool .rgw.fastrgw
        ceph osd pool set .rgw.fastrgw crush_ruleset 50 ==> crush ruleset 50 
does not exist
        ceph osd pool set .rgw.fastrgw crush_ruleset 4 ==> set pool 47 
crush_ruleset to 4c

I notice this morning that the following command works
        rados mkpool testpool 0 50

It seems that the command ceph osd pool set <pool> crush_ruleset 
<ruleset_number> is not working correctly.

To go on my tests, I will delete the pools and recreate them using "rados 
mkpool" adding directly the right ruleset.

For the firefly platform (ceph version 0.80.1 
(a38fe1169b6d2ac98b427334c12d7cf81f809b74)),
we only checked that the behavior was identical after ingesting a rule with a 
ruleset which would not be equal to the rule_id. 

Note:
the pools and rules names have changed since I sent the message but the 
behavior remains the same
Using calamari to modify pool parameters, the GUI is listing the ruleset but it 
has no effect (no update, no error displayed)
Using Inkscope to modify pool parameters, we can force the ruleset number but 
it has no effect (no update, no error displayed)
We noticed that the ceph-rest-api returns 200 OK even if the update is not set.

Best regards

-----Message d'origine-----
De : Gregory Farnum [mailto:[email protected]] 
Envoyé : mercredi 11 juin 2014 19:03
À : CHEVALIER Ghislain IMT/OLPS
Cc : [email protected]
Objet : Re: [Ceph] Managing crushmap

That doesn't sound right. Can you supply your decompiled CRUSH map,
the exact commands you ran against the ceph cluster, and the exact
version(s) you ran the test against?
-Greg

Software Engineer #42 @ http://inktank.com | http://ceph.com


On Wed, Jun 11, 2014 at 2:17 AM,  <[email protected]> wrote:
> Hi all,
>
> Context :
> Lab Platform
> Ceph dumpling and firefly
> Ubuntu 12.04 LTS
>
> I encountered a strange behavior managing the crushmap on a dumpling and a 
> firefly ceph platform.
>
> I built a crushmap, adding 2 specific rules (fastrule and slowrule) in order 
> to experiment tiering.
> I used "ceph osd get|setcrushmap" and crushtool to extract and ingest the 
> updated crushmap in the system.
> I have to precise that I respectively associated 50 and 51 as ruleset numbers 
> for the 2 new rules.
> The ingestion was good; I checked it by "ceph osd crush rule dump"
>
> I created 2 pools (fastpool and slowpool)
> As indicated in the doc, I tried to associate fastpool to ruleset 50 by "ceph 
> osd pool set fastpool crush_ruleset 50"
> an error occurred : rule 50 doesn't exist
> As the rule_id of fastrule is 4, I did "ceph osd pool set fastpool 
> crush_ruleset 4" and it works but it's not a correct behavior.
> If a ceph admin wants to manage the crushmap, he doesn't have to check the 
> rule_id (that he cannot set) before updating the attribute crush_ruleset of 
> pools.
> The way to manage the rules if the ruleset not the rule_id.
>
> I also tested that reingesting a crushmap (after for example changing the 
> sequence of the rules in the decompiled file) causes a global update of the 
> rule_ids.
> I can't imagine the impacts on a platform.
>
> Did someone encounter this behavior?
> Did I misunderstand how to configure a crushmap?
>
> Best regards
>
>
>
>
>
> - - - - - - - - - - - - - - - - -
> Ghislain Chevalier
> ORANGE/OLNC/OLPS/ASE/DAPI/CSE
> Architecte de services de stockage
> Storage Service Architect
>  +33299124432
> [email protected]
>  Pensez à l'Environnement avant d'imprimer ce message !
>
>
> _________________________________________________________________________________________________________________________
>
> Ce message et ses pieces jointes peuvent contenir des informations 
> confidentielles ou privilegiees et ne doivent donc
> pas etre diffuses, exploites ou copies sans autorisation. Si vous avez recu 
> ce message par erreur, veuillez le signaler
> a l'expediteur et le detruire ainsi que les pieces jointes. Les messages 
> electroniques etant susceptibles d'alteration,
> Orange decline toute responsabilite si ce message a ete altere, deforme ou 
> falsifie. Merci.
>
> This message and its attachments may contain confidential or privileged 
> information that may be protected by law;
> they should not be distributed, used or copied without authorisation.
> If you have received this email in error, please notify the sender and delete 
> this message and its attachments.
> As emails may be altered, Orange is not liable for messages that have been 
> modified, changed or falsified.
> Thank you.
>

_________________________________________________________________________________________________________________________

Ce message et ses pieces jointes peuvent contenir des informations 
confidentielles ou privilegiees et ne doivent donc
pas etre diffuses, exploites ou copies sans autorisation. Si vous avez recu ce 
message par erreur, veuillez le signaler
a l'expediteur et le detruire ainsi que les pieces jointes. Les messages 
electroniques etant susceptibles d'alteration,
Orange decline toute responsabilite si ce message a ete altere, deforme ou 
falsifie. Merci.

This message and its attachments may contain confidential or privileged 
information that may be protected by law;
they should not be distributed, used or copied without authorisation.
If you have received this email in error, please notify the sender and delete 
this message and its attachments.
As emails may be altered, Orange is not liable for messages that have been 
modified, changed or falsified.
Thank you.

# begin crush map
tunable choose_local_tries 0
tunable choose_local_fallback_tries 0
tunable choose_total_tries 50
tunable chooseleaf_descend_once 1

# devices
device 0 osd.0
device 1 osd.1
device 2 osd.2
device 3 osd.3
device 4 osd.4
device 5 osd.5
device 6 osd.6
device 7 osd.7
device 8 osd.8
device 9 osd.9

# types
type 0 osd
type 1 host
type 2 platform
type 3 datacenter
type 4 root
type 5 appclient
type 10 diskclass
type 50 appclass

# buckets
host p-sbceph13 {
        id -13          # do not change unnecessarily
        # weight 0.020
        alg straw
        hash 0  # rjenkins1
        item osd.0 weight 0.010
        item osd.5 weight 0.010
}
host p-sbceph14 {
        id -14          # do not change unnecessarily
        # weight 0.020
        alg straw
        hash 0  # rjenkins1
        item osd.1 weight 0.010
        item osd.6 weight 0.010
}
host p-sbceph15 {
        id -15          # do not change unnecessarily
        # weight 0.020
        alg straw
        hash 0  # rjenkins1
        item osd.2 weight 0.010
        item osd.7 weight 0.010
}
host p-sbceph12 {
        id -12          # do not change unnecessarily
        # weight 0.020
        alg straw
        hash 0  # rjenkins1
        item osd.3 weight 0.010
        item osd.8 weight 0.010
}
host p-sbceph11 {
        id -11          # do not change unnecessarily
        # weight 0.020
        alg straw
        hash 0  # rjenkins1
        item osd.4 weight 0.010
        item osd.9 weight 0.010
}
platform sandbox {
        id -3           # do not change unnecessarily
        # weight 0.100
        alg straw
        hash 0  # rjenkins1
        item p-sbceph13 weight 0.020
        item p-sbceph14 weight 0.020
        item p-sbceph15 weight 0.020
        item p-sbceph12 weight 0.020
        item p-sbceph11 weight 0.020
}
datacenter nanterre {
        id -2           # do not change unnecessarily
        # weight 0.100
        alg straw
        hash 0  # rjenkins1
        item sandbox weight 0.100
}
root default {
        id -1           # do not change unnecessarily
        # weight 0.100
        alg straw
        hash 0  # rjenkins1
        item nanterre weight 0.100
}
appclass fastrgw {
        id -501         # do not change unnecessarily
        # weight 0.050
        alg straw
        hash 0  # rjenkins1
        item osd.0 weight 0.010
        item osd.1 weight 0.010
        item osd.2 weight 0.010
        item osd.3 weight 0.010
        item osd.4 weight 0.010
}
appclass slowrgw {
        id -502         # do not change unnecessarily
        # weight 0.050
        alg straw
        hash 0  # rjenkins1
        item osd.5 weight 0.010
        item osd.6 weight 0.010
        item osd.7 weight 0.010
        item osd.8 weight 0.010
        item osd.9 weight 0.010
}
appclient apprgw {
        id -50          # do not change unnecessarily
        # weight 0.100
        alg straw
        hash 0  # rjenkins1
        item fastrgw weight 0.050
        item slowrgw weight 0.050
}
appclass faststd {
        id -511         # do not change unnecessarily
        # weight 0.050
        alg straw
        hash 0  # rjenkins1
        item osd.0 weight 0.010
        item osd.1 weight 0.010
        item osd.2 weight 0.010
        item osd.3 weight 0.010
        item osd.4 weight 0.010
}
appclass slowstd {
        id -512         # do not change unnecessarily
        # weight 0.050
        alg straw
        hash 0  # rjenkins1
        item osd.5 weight 0.010
        item osd.6 weight 0.010
        item osd.7 weight 0.010
        item osd.8 weight 0.010
        item osd.9 weight 0.010
}
appclient appstd {
        id -51          # do not change unnecessarily
        # weight 0.100
        alg straw
        hash 0  # rjenkins1
        item faststd weight 0.050
        item slowstd weight 0.050
}
root approot {
        id -5           # do not change unnecessarily
        # weight 0.200
        alg straw
        hash 0  # rjenkins1
        item apprgw weight 0.100
        item appstd weight 0.100
}
diskclass fastsata {
        id -110         # do not change unnecessarily
        # weight 0.050
        alg straw
        hash 0  # rjenkins1
        item osd.0 weight 0.010
        item osd.1 weight 0.010
        item osd.2 weight 0.010
        item osd.3 weight 0.010
        item osd.4 weight 0.010
}
diskclass slowsata {
        id -120         # do not change unnecessarily
        # weight 0.050
        alg straw
        hash 0  # rjenkins1
        item osd.5 weight 0.010
        item osd.6 weight 0.010
        item osd.7 weight 0.010
        item osd.8 weight 0.010
        item osd.9 weight 0.010
}
root diskroot {
        id -100         # do not change unnecessarily
        # weight 0.100
        alg straw
        hash 0  # rjenkins1
        item fastsata weight 0.050
        item slowsata weight 0.050
}

# rules
rule data {
        ruleset 0
        type replicated
        min_size 1
        max_size 10
        step take slowstd
        step chooseleaf firstn 0 type osd
        step emit
}
rule metadata {
        ruleset 1
        type replicated
        min_size 1
        max_size 10
        step take slowstd
        step chooseleaf firstn 0 type osd
        step emit
}
rule rbd {
        ruleset 2
        type replicated
        min_size 1
        max_size 10
        step take faststd
        step chooseleaf firstn 0 type osd
        step emit
}
rule test {
        ruleset 30
        type replicated
        min_size 1
        max_size 10
        step take fastsata
        step chooseleaf firstn 0 type osd
        step emit
}
rule fastrgw {
        ruleset 50
        type replicated
        min_size 1
        max_size 10
        step take fastrgw
        step chooseleaf firstn 0 type osd
        step emit
}
rule slowrgw {
        ruleset 51
        type replicated
        min_size 1
        max_size 10
        step take slowrgw
        step chooseleaf firstn 0 type osd
        step emit
}

# end crush map
[
    { "rule_id": 0,
      "rule_name": "data",
      "ruleset": 0,
      "type": 1,
      "min_size": 1,
      "max_size": 10,
      "steps": [
            { "op": "take",
              "item": -512},
            { "op": "chooseleaf_firstn",
              "num": 0,
              "type": "osd"},
            { "op": "emit"}]},
    { "rule_id": 1,
      "rule_name": "metadata",
      "ruleset": 1,
      "type": 1,
      "min_size": 1,
      "max_size": 10,
      "steps": [
            { "op": "take",
              "item": -512},
            { "op": "chooseleaf_firstn",
              "num": 0,
              "type": "osd"},
            { "op": "emit"}]},
    { "rule_id": 2,
      "rule_name": "rbd",
      "ruleset": 2,
      "type": 1,
      "min_size": 1,
      "max_size": 10,
      "steps": [
            { "op": "take",
              "item": -511},
            { "op": "chooseleaf_firstn",
              "num": 0,
              "type": "osd"},
            { "op": "emit"}]},
    { "rule_id": 3,
      "rule_name": "test",
      "ruleset": 30,
      "type": 1,
      "min_size": 1,
      "max_size": 10,
      "steps": [
            { "op": "take",
              "item": -110},
            { "op": "chooseleaf_firstn",
              "num": 0,
              "type": "osd"},
            { "op": "emit"}]},
    { "rule_id": 4,
      "rule_name": "fastrgw",
      "ruleset": 50,
      "type": 1,
      "min_size": 1,
      "max_size": 10,
      "steps": [
            { "op": "take",
              "item": -501},
            { "op": "chooseleaf_firstn",
              "num": 0,
              "type": "osd"},
            { "op": "emit"}]},
    { "rule_id": 5,
      "rule_name": "slowrgw",
      "ruleset": 51,
      "type": 1,
      "min_size": 1,
      "max_size": 10,
      "steps": [
            { "op": "take",
              "item": -502},
            { "op": "chooseleaf_firstn",
              "num": 0,
              "type": "osd"},
            { "op": "emit"}]}]
pool 0 'data' rep size 2 min_size 1 crush_ruleset 0 object_hash rjenkins pg_num 
512 pgp_num 64 last_change 8174 owner 0 crash_replay_interval 45
pool 1 'metadata' rep size 2 min_size 1 crush_ruleset 1 object_hash rjenkins 
pg_num 64 pgp_num 64 last_change 1 owner 0
pool 2 'rbd' rep size 3 min_size 1 crush_ruleset 2 object_hash rjenkins pg_num 
64 pgp_num 64 last_change 8169 owner 0
pool 3 '.rgw.root' rep size 2 min_size 1 crush_ruleset 0 object_hash rjenkins 
pg_num 8 pgp_num 8 last_change 429 owner 0
pool 4 '.rgw.control' rep size 2 min_size 1 crush_ruleset 0 object_hash 
rjenkins pg_num 8 pgp_num 8 last_change 431 owner 0
pool 5 '.rgw' rep size 2 min_size 1 crush_ruleset 0 object_hash rjenkins pg_num 
8 pgp_num 8 last_change 433 owner 0
pool 6 '.rgw.gc' rep size 2 min_size 1 crush_ruleset 0 object_hash rjenkins 
pg_num 8 pgp_num 8 last_change 434 owner 0
pool 7 '.log' rep size 2 min_size 1 crush_ruleset 0 object_hash rjenkins pg_num 
8 pgp_num 8 last_change 2930 owner 0
pool 8 '.intent-log' rep size 2 min_size 1 crush_ruleset 0 object_hash rjenkins 
pg_num 8 pgp_num 8 last_change 866 owner 0
pool 9 '.usage' rep size 2 min_size 1 crush_ruleset 0 object_hash rjenkins 
pg_num 8 pgp_num 8 last_change 868 owner 0
pool 10 '.users' rep size 2 min_size 1 crush_ruleset 0 object_hash rjenkins 
pg_num 8 pgp_num 8 last_change 870 owner 0
pool 11 '.users.email' rep size 2 min_size 1 crush_ruleset 0 object_hash 
rjenkins pg_num 8 pgp_num 8 last_change 872 owner 0
pool 12 '.users.swift' rep size 2 min_size 1 crush_ruleset 0 object_hash 
rjenkins pg_num 8 pgp_num 8 last_change 874 owner 0
pool 13 '.users.uid' rep size 2 min_size 1 crush_ruleset 0 object_hash rjenkins 
pg_num 8 pgp_num 8 last_change 876 owner 0
pool 15 '.rgw.buckets.index' rep size 2 min_size 1 crush_ruleset 0 object_hash 
rjenkins pg_num 8 pgp_num 8 last_change 891 owner 0
pool 16 '.rgw.buckets' rep size 2 min_size 1 crush_ruleset 0 object_hash 
rjenkins pg_num 8 pgp_num 8 last_change 893 owner 0
pool 30 '.log150000' rep size 2 min_size 1 crush_ruleset 0 object_hash rjenkins 
pg_num 64 pgp_num 64 last_change 2935 owner 0
pool 44 'yar58' rep size 2 min_size 1 crush_ruleset 0 object_hash rjenkins 
pg_num 200 pgp_num 200 last_change 6852 owner 0
pool 45 'test.rules' rep size 2 min_size 2 crush_ruleset 0 object_hash rjenkins 
pg_num 256 pgp_num 256 last_change 8171 owner 0
pool 47 '.rgw.fastrgw' rep size 3 min_size 1 crush_ruleset 4 object_hash 
rjenkins pg_num 167 pgp_num 167 last_change 8210 owner 0
pool 48 '.rgw.slowrgw' rep size 2 min_size 1 crush_ruleset 0 object_hash 
rjenkins pg_num 250 pgp_num 250 last_change 8149 owner 0
pool 49 '.rgw.fastrgw.index' rep size 3 min_size 1 crush_ruleset 4 object_hash 
rjenkins pg_num 167 pgp_num 167 last_change 8184 owner 0
pool 50 '.rgw.slowrgw.index' rep size 2 min_size 1 crush_ruleset 0 object_hash 
rjenkins pg_num 250 pgp_num 250 last_change 8155 owner 0

Reply via email to