Re: cephadm custom crush location hooks

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

 



Yeah, now that you mention it, I recall figuring that out also at some point. I think I did it originally when I was debugging the problem without the container.

________________________________
From: Eugen Block <eblock@xxxxxx>
Sent: Friday, May 3, 2024 8:37 AM
To: Wyll Ingersoll <wyllys.ingersoll@xxxxxxxxxxxxxx>
Cc: ceph-users@xxxxxxx <ceph-users@xxxxxxx>
Subject: Re:  cephadm custom crush location hooks

Hm, I wonder why the symlink is required, the OSDs map / to /rootfs
anyway (excerpt of unit.run file):

-v /:/rootfs

So I removed the symlink and just added /rootfs to the crush location hook:

ceph config set osd.0 crush_location_hook
/rootfs/usr/local/bin/custom_crush_location

After OSD restart the OSD finds its correct location. So I actually
only need to update the location path, nothing else, it seems.

Zitat von Eugen Block <eblock@xxxxxx>:

> I found your (open) tracker issue:
>
> https://tracker.ceph.com/issues/53562
>
> Your workaround works great, I tried it in a test cluster
> successfully. I will adopt it to our production cluster as well.
>
> Thanks!
> Eugen
>
> Zitat von Eugen Block <eblock@xxxxxx>:
>
>> Thank you very much for the quick response! I will take a look
>> first thing tomorrow and try that in a test cluster. But I agree,
>> it would be helpful to have a way with cephadm to apply these hooks
>> without these workarounds. I'll check if there's a tracker issue
>> for that, and create one if necessary.
>>
>> Thanks!
>> Eugen
>>
>> Zitat von Wyll Ingersoll <wyllys.ingersoll@xxxxxxxxxxxxxx>:
>>
>>> I've found the crush location hook script code to be problematic
>>> in the containerized/cephadm world.
>>>
>>> Our workaround is to place the script in a common place on each
>>> OSD node, such as /etc/crush/crushhook.sh, and then make a link
>>> from /rootfs -> /, and set the configuration value so that the
>>> path to the hook script starts with /rootfs.  The container that
>>> the OSDs run in has access to /rootfs and this hack allows them to
>>> all view the crush script without having to manually modify unit
>>> files.
>>>
>>> For example:
>>>
>>> 1.
>>> put crushhook script on the host OS in /etc/crush/crushhook.sh
>>> 2.
>>> make a link on the host os:   $ cd /; sudo ln -s / /rootfs
>>> 3.
>>> ceph config set osd crush_location_hook /rootfs/etc/crush/crushhook.sh
>>>
>>>
>>> The containers see "/rootfs" and will then be able to access your
>>> script.  Be aware though that if your script requires any sort of
>>> elevated access, it may fail because the hook runs as ceph:ceph in
>>> a minimal container so not all functions are available.  I had to
>>> add lots of debug output and logging in mine (it's rather
>>> complicated) to figure out what was going on when it was running.
>>>
>>> I would love to see the "crush_location_hook" script be something
>>> that can be stored in the config entirely instead of as a link,
>>> similar to how the ssl certificates for RGW or the dashboard are
>>> stored (ceph config-key set ...).   The current situation is not
>>> ideal.
>>>
>>>
>>>
>>>
>>> ________________________________
>>> From: Eugen Block <eblock@xxxxxx>
>>> Sent: Thursday, May 2, 2024 10:23 AM
>>> To: ceph-users@xxxxxxx <ceph-users@xxxxxxx>
>>> Subject:  cephadm custom crush location hooks
>>>
>>> Hi,
>>>
>>> we've been using custom crush location hooks for some OSDs [1] for
>>> years. Since we moved to cephadm, we always have to manually edit the
>>> unit.run file of those OSDs because the path to the script is not
>>> mapped into the containers. I don't want to define custom location
>>> hooks for all OSDs globally in the OSD spec, even if those are limited
>>> to two hosts only in our case. But I'm not aware of a method to target
>>> only specific OSDs to have some files mapped into the container [2].
>>> Is my assumption correct that we'll have to live with the manual
>>> intervention until we reorganize our osd tree? Or did I miss something?
>>>
>>> Thanks!
>>> Eugen
>>>
>>> [1]
>>> https://docs.ceph.com/en/latest/rados/operations/crush-map/#custom-location-hooks
>>> [2]
>>> https://docs.ceph.com/en/latest/cephadm/services/#mounting-files-with-extra-container-arguments
>>> _______________________________________________
>>> ceph-users mailing list -- ceph-users@xxxxxxx
>>> To unsubscribe send an email to ceph-users-leave@xxxxxxx



_______________________________________________
ceph-users mailing list -- ceph-users@xxxxxxx
To unsubscribe send an email to ceph-users-leave@xxxxxxx



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


  Powered by Linux