Well, it was pasted from a local cluster, meant as a guide not to be run 
literally.

> On Sep 20, 2024, at 12:48 PM, Dave Hall <kdh...@binghamton.edu> wrote:
> 
> Stefan, Anthony,
> 
> Anthony's sequence of commands to reclassify the root failed with errors. so 
> I have tried to look a little deeper.
> 
> I can now see the extra root via 'ceph osd crush tree --show-shadow'.  
> Looking at the decompiled crush tree, I can also see the extra root:

> 
> root default {
>         id -1           # do not change unnecessarily
>         id -2 class hdd         # do not change unnecessarily
>         # weight 361.90518
>         alg straw2
>         hash 0  # rjenkins1
>         item ceph00 weight 90.51434
>         item ceph01 weight 90.29265
>         item ceph09 weight 90.80554
>         item ceph02 weight 90.29265
> }
> 
> Based on the hints given in the link provided by Stefan, it would appear that 
> the correct solution might be to get rid of 'id -2' and change id -1 to class 
> hdd, 
> 
> root default {
>         id -1 class hdd         # do not change unnecessarily
>         # weight 361.90518
>         alg straw2
>         hash 0  # rjenkins1
>         item ceph00 weight 90.51434
>         item ceph01 weight 90.29265
>         item ceph09 weight 90.80554
>         item ceph02 weight 90.29265
> }
> 
> but I'm no expert and anxious about losing data.  
> 
> The rest of the rules in my crush map are:
> 
> # rules
> rule replicated_rule {
> id 0
> type replicated
> step take default                   # missing device class
> step chooseleaf firstn 0 type host
> step emit
> }
> rule block-1 {
> id 1
> type erasure
> step set_chooseleaf_tries 5
> step set_choose_tries 100
> step take default class hdd
> step choose indep 0 type osd
> step emit
> }
> rule default.rgw.buckets.data {
> id 2
> type erasure
> step set_chooseleaf_tries 5
> step set_choose_tries 100
> step take default class hdd
> step choose indep 0 type osd
> step emit
> }
> rule ceph-block {
> id 3
> type erasure
> step set_chooseleaf_tries 5
> step set_choose_tries 100
> step take default class hdd
> step choose indep 0 type osd
> step emit
> }
> rule replicated-hdd {
> id 4
> type replicated
> step take default class hdd
> step choose firstn 0 type osd
> step emit
> }
> 
> # end crush map
> 
> Of these, the last - id 4 - is one that I added while trying to figure this 
> out.  What this tells me is that the 'take' step in rule id 0 should probably 
> change to 'step take default class hdd'.
> 
> I also notice that each of my host stanzas (buckets) has what looks like two 
> roots.  For example
> 
> host ceph00 {
> id -3 # do not change unnecessarily
> id -4 class hdd # do not change unnecessarily
> # weight 90.51434
> alg straw2
> hash 0 # rjenkins1
> item osd.0 weight 11.35069
> item osd.1 weight 11.35069
> item osd.2 weight 11.35069
> item osd.3 weight 11.35069
> item osd.4 weight 11.27789
> item osd.5 weight 11.27789
> item osd.6 weight 11.27789
> item osd.7 weight 11.27789
> }
> 
> I assume I may need to clean this up somehow, or perhaps this is the real 
> problem.
> 
> Please advise.
> 
> Thanks.
> 
> -Dave
> 
> --
> Dave Hall
> Binghamton University
> kdh...@binghamton.edu <mailto:kdh...@binghamton.edu>
> 
> On Thu, Sep 19, 2024 at 3:56 AM Stefan Kooman <ste...@bit.nl 
> <mailto:ste...@bit.nl>> wrote:
>> On 19-09-2024 05:10, Anthony D'Atri wrote:
>> > 
>> > 
>> >>
>> >> Anthony,
>> >>
>> >> So it sounds like I need to make a new crush rule for replicated pools 
>> >> that specifies default-hdd and the device class?  (Or should I go the 
>> >> other way around?  I think I'd rather change the replicated pools even 
>> >> though there's more of them.)
>> > 
>> > I think it would be best to edit the CRUSH rules in-situ so that each 
>> > specifies the device class, that way if you do get different media in the 
>> > future, you'll be ready.  Rather than messing around with new rules and 
>> > modifying pools, this is arguably one of the few times when one would 
>> > decompile, edit, recompile, and inject the CRUSH map in toto.
>> > 
>> > I haven't tried this myself, but maybe something like the below, to avoid 
>> > the PITA and potential for error of edting the decompiled text file by 
>> > hand.
>> > 
>> > 
>> > ceph osd getcrushmap -o original.crush
>> > crushtool -d original.crush -o original.txt
>> > crushtool -i original.crush --reclassify --reclassify-root default hdd 
>> > --set-subtree-class default hdd -o adjusted.crush
>> > crushtool -d adjusted.crush -o adjusted.txt
>> > crushtool -i original.crush --compare adjusted.crush
>> > ceph osd setcrushmap -i adjusted.crush
>> 
>> This might be of use as well (if a lot of data would move): 
>> https://blog.widodh.nl/2019/02/comparing-two-ceph-crush-maps/
>> 
>> Gr. Stefan

_______________________________________________
ceph-users mailing list -- ceph-users@ceph.io
To unsubscribe send an email to ceph-users-le...@ceph.io

Reply via email to