Re: Large number of misplaced PGs but little backfill going on

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

 



First try "ceph osd down 89"

> On Mar 25, 2024, at 15:37, Alexander E. Patrakov <patrakov@xxxxxxxxx> wrote:
> 
> On Mon, Mar 25, 2024 at 7:37 PM Torkil Svensgaard <torkil@xxxxxxxx> wrote:
>> 
>> 
>> 
>> On 24/03/2024 01:14, Torkil Svensgaard wrote:
>>> On 24-03-2024 00:31, Alexander E. Patrakov wrote:
>>>> Hi Torkil,
>>> 
>>> Hi Alexander
>>> 
>>>> Thanks for the update. Even though the improvement is small, it is
>>>> still an improvement, consistent with the osd_max_backfills value, and
>>>> it proves that there are still unsolved peering issues.
>>>> 
>>>> I have looked at both the old and the new state of the PG, but could
>>>> not find anything else interesting.
>>>> 
>>>> I also looked again at the state of PG 37.1. It is known what blocks
>>>> the backfill of this PG; please search for "blocked_by." However, this
>>>> is just one data point, which is insufficient for any conclusions. Try
>>>> looking at other PGs. Is there anything too common in the non-empty
>>>> "blocked_by" blocks?
>>> 
>>> I'll take a look at that tomorrow, perhaps we can script something
>>> meaningful.
>> 
>> Hi Alexander
>> 
>> While working on a script querying all PGs and making a list of all OSDs
>> found in a blocked_by list, and how many times for each, I discovered
>> something odd about pool 38:
>> 
>> "
>> [root@lazy blocked_by]# sh blocked_by.sh 38 |tee pool38
>> OSDs blocking other OSDs:
> <snip>
> 
>> All PGs in the pool are active+clean so why are there any blocked_by at
>> all? One example attached.
> 
> I don't know. In any case, it doesn't match the "one OSD blocks them
> all" scenario that I was looking for. I think this is something bogus
> that can probably be cleared in your example by restarting osd.89
> (i.e, the one being blocked).
> 
>> 
>> Mvh.
>> 
>> Torkil
>> 
>>>> I think we have to look for patterns in other ways, too. One tool that
>>>> produces good visualizations is TheJJ balancer. Although it is called
>>>> a "balancer," it can also visualize the ongoing backfills.
>>>> 
>>>> The tool is available at
>>>> https://raw.githubusercontent.com/TheJJ/ceph-balancer/master/placementoptimizer.py
>>>> 
>>>> Run it as follows:
>>>> 
>>>> ./placementoptimizer.py showremapped --by-osd | tee remapped.txt
>>> 
>>> Output attached.
>>> 
>>> Thanks again.
>>> 
>>> Mvh.
>>> 
>>> Torkil
>>> 
>>>> On Sun, Mar 24, 2024 at 5:50 AM Torkil Svensgaard <torkil@xxxxxxxx>
>>>> wrote:
>>>>> 
>>>>> Hi Alex
>>>>> 
>>>>> New query output attached after restarting both OSDs. OSD 237 is no
>>>>> longer mentioned but it unfortunately made no difference for the number
>>>>> of backfills which went 59->62->62.
>>>>> 
>>>>> Mvh.
>>>>> 
>>>>> Torkil
>>>>> 
>>>>> On 23-03-2024 22:26, Alexander E. Patrakov wrote:
>>>>>> Hi Torkil,
>>>>>> 
>>>>>> I have looked at the files that you attached. They were helpful: pool
>>>>>> 11 is problematic, it complains about degraded objects for no obvious
>>>>>> reason. I think that is the blocker.
>>>>>> 
>>>>>> I also noted that you mentioned peering problems, and I suspect that
>>>>>> they are not completely resolved. As a somewhat-irrational move, to
>>>>>> confirm this theory, you can restart osd.237 (it is mentioned at the
>>>>>> end of query.11.fff.txt, although I don't understand why it is there)
>>>>>> and then osd.298 (it is the primary for that pg) and see if any
>>>>>> additional backfills are unblocked after that. Also, please re-query
>>>>>> that PG again after the OSD restart.
>>>>>> 
>>>>>> On Sun, Mar 24, 2024 at 4:56 AM Torkil Svensgaard <torkil@xxxxxxxx>
>>>>>> wrote:
>>>>>>> 
>>>>>>> 
>>>>>>> 
>>>>>>> On 23-03-2024 21:19, Alexander E. Patrakov wrote:
>>>>>>>> Hi Torkil,
>>>>>>> 
>>>>>>> Hi Alexander
>>>>>>> 
>>>>>>>> I have looked at the CRUSH rules, and the equivalent rules work on my
>>>>>>>> test cluster. So this cannot be the cause of the blockage.
>>>>>>> 
>>>>>>> Thank you for taking the time =)
>>>>>>> 
>>>>>>>> What happens if you increase the osd_max_backfills setting
>>>>>>>> temporarily?
>>>>>>> 
>>>>>>> We already had the mclock override option in place and I re-enabled
>>>>>>> our
>>>>>>> babysitter script which sets osd_max_backfills pr OSD to 1-3 depending
>>>>>>> on how full they are. Active backfills went from 16 to 53 which is
>>>>>>> probably because default osd_max_backfills for mclock is 1.
>>>>>>> 
>>>>>>> I think 53 is still a low number of active backfills given the large
>>>>>>> percentage misplaced.
>>>>>>> 
>>>>>>>> It may be a good idea to investigate a few of the stalled PGs. Please
>>>>>>>> run commands similar to this one:
>>>>>>>> 
>>>>>>>> ceph pg 37.0 query > query.37.0.txt
>>>>>>>> ceph pg 37.1 query > query.37.1.txt
>>>>>>>> ...
>>>>>>>> and the same for the other affected pools.
>>>>>>> 
>>>>>>> A few samples attached.
>>>>>>> 
>>>>>>>> Still, I must say that some of your rules are actually unsafe.
>>>>>>>> 
>>>>>>>> The 4+2 rule as used by rbd_ec_data will not survive a
>>>>>>>> datacenter-offline incident. Namely, for each PG, it chooses OSDs
>>>>>>>> from
>>>>>>>> two hosts in each datacenter, so 6 OSDs total. When a datacenter is
>>>>>>>> offline, you will, therefore, have only 4 OSDs up, which is exactly
>>>>>>>> the number of data chunks. However, the pool requires min_size 5, so
>>>>>>>> all PGs will be inactive (to prevent data corruption) and will stay
>>>>>>>> inactive until the datacenter comes up again. However, please don't
>>>>>>>> set min_size to 4 - then, any additional incident (like a defective
>>>>>>>> disk) will lead to data loss, and the shards in the datacenter which
>>>>>>>> went offline would be useless because they do not correspond to the
>>>>>>>> updated shards written by the clients.
>>>>>>> 
>>>>>>> Thanks for the explanation. This is an old pool predating the 3 DC
>>>>>>> setup
>>>>>>> and we'll migrate the data to a 4+5 pool when we can.
>>>>>>> 
>>>>>>>> The 4+5 rule as used by cephfs.hdd.data has min_size equal to the
>>>>>>>> number of data chunks. See above why it is bad. Please set
>>>>>>>> min_size to
>>>>>>>> 5.
>>>>>>> 
>>>>>>> Thanks, that was a leftover for getting the PGs to peer (stuck at
>>>>>>> creating+incomplete) when we created the pool. It's back to 5 now.
>>>>>>> 
>>>>>>>> The rbd.ssd.data pool seems to be OK - and, by the way, its PGs are
>>>>>>>> 100% active+clean.
>>>>>>> 
>>>>>>> There is very little data in this pool, that is probably the main
>>>>>>> reason.
>>>>>>> 
>>>>>>>> Regarding the mon_max_pg_per_osd setting, you have a few OSDs that
>>>>>>>> have 300+ PGs, the observed maximum is 347. Please set it to 400.
>>>>>>> 
>>>>>>> Copy that. Didn't seem to make a difference though, and we have
>>>>>>> osd_max_pg_per_osd_hard_ratio set to 5.000000.
>>>>>>> 
>>>>>>> Mvh.
>>>>>>> 
>>>>>>> Torkil
>>>>>>> 
>>>>>>>> On Sun, Mar 24, 2024 at 3:16 AM Torkil Svensgaard
>>>>>>>> <torkil@xxxxxxxx> wrote:
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>> On 23-03-2024 19:05, Alexander E. Patrakov wrote:
>>>>>>>>>> Sorry for replying to myself, but "ceph osd pool ls detail" by
>>>>>>>>>> itself
>>>>>>>>>> is insufficient. For every erasure code profile mentioned in the
>>>>>>>>>> output, please also run something like this:
>>>>>>>>>> 
>>>>>>>>>> ceph osd erasure-code-profile get prf-for-ec-data
>>>>>>>>>> 
>>>>>>>>>> ...where "prf-for-ec-data" is the name that appears after the words
>>>>>>>>>> "erasure profile" in the "ceph osd pool ls detail" output.
>>>>>>>>> 
>>>>>>>>> [root@lazy ~]# ceph osd pool ls detail | grep erasure
>>>>>>>>> pool 11 'rbd_ec_data' erasure profile DRCMR_k4m2 size 6 min_size 5
>>>>>>>>> crush_rule 0 object_hash rjenkins pg_num 4096 pgp_num 4096
>>>>>>>>> autoscale_mode off last_change 2257933 lfor 0/1291190/1755101 flags
>>>>>>>>> hashpspool,ec_overwrites,selfmanaged_snaps,bulk stripe_width 16384
>>>>>>>>> fast_read 1 compression_algorithm snappy compression_mode aggressive
>>>>>>>>> application rbd
>>>>>>>>> pool 37 'cephfs.hdd.data' erasure profile
>>>>>>>>> DRCMR_k4m5_datacenter_hdd size
>>>>>>>>> 9 min_size 4 crush_rule 7 object_hash rjenkins pg_num 2048
>>>>>>>>> pgp_num 2048
>>>>>>>>> autoscale_mode off last_change 2257933 lfor 0/0/2139486 flags
>>>>>>>>> hashpspool,ec_overwrites,bulk stripe_width 16384 fast_read 1
>>>>>>>>> compression_algorithm zstd compression_mode aggressive
>>>>>>>>> application cephfs
>>>>>>>>> pool 38 'rbd.ssd.data' erasure profile DRCMR_k4m5_datacenter_ssd
>>>>>>>>> size 9
>>>>>>>>> min_size 5 crush_rule 8 object_hash rjenkins pg_num 32 pgp_num 32
>>>>>>>>> autoscale_mode warn last_change 2198930 lfor 0/2198930/2198928 flags
>>>>>>>>> hashpspool,ec_overwrites,selfmanaged_snaps stripe_width 16384
>>>>>>>>> compression_algorithm zstd compression_mode aggressive
>>>>>>>>> application rbd
>>>>>>>>> 
>>>>>>>>> [root@lazy ~]# ceph osd erasure-code-profile get DRCMR_k4m2
>>>>>>>>> crush-device-class=hdd
>>>>>>>>> crush-failure-domain=host
>>>>>>>>> crush-root=default
>>>>>>>>> jerasure-per-chunk-alignment=false
>>>>>>>>> k=4
>>>>>>>>> m=2
>>>>>>>>> plugin=jerasure
>>>>>>>>> technique=reed_sol_van
>>>>>>>>> w=8
>>>>>>>>> [root@lazy ~]# ceph osd erasure-code-profile get
>>>>>>>>> DRCMR_k4m5_datacenter_hdd
>>>>>>>>> crush-device-class=hdd
>>>>>>>>> crush-failure-domain=datacenter
>>>>>>>>> crush-root=default
>>>>>>>>> jerasure-per-chunk-alignment=false
>>>>>>>>> k=4
>>>>>>>>> m=5
>>>>>>>>> plugin=jerasure
>>>>>>>>> technique=reed_sol_van
>>>>>>>>> w=8
>>>>>>>>> [root@lazy ~]# ceph osd erasure-code-profile get
>>>>>>>>> DRCMR_k4m5_datacenter_ssd
>>>>>>>>> crush-device-class=ssd
>>>>>>>>> crush-failure-domain=datacenter
>>>>>>>>> crush-root=default
>>>>>>>>> jerasure-per-chunk-alignment=false
>>>>>>>>> k=4
>>>>>>>>> m=5
>>>>>>>>> plugin=jerasure
>>>>>>>>> technique=reed_sol_van
>>>>>>>>> w=8
>>>>>>>>> 
>>>>>>>>> But as I understand it those profiles are only used to create the
>>>>>>>>> initial crush rule for the pool, and we have manually edited
>>>>>>>>> those along
>>>>>>>>> the way. Here are the 3 rules in use for the 3 EC pools:
>>>>>>>>> 
>>>>>>>>> rule rbd_ec_data {
>>>>>>>>>            id 0
>>>>>>>>>            type erasure
>>>>>>>>>            step set_chooseleaf_tries 5
>>>>>>>>>            step set_choose_tries 100
>>>>>>>>>            step take default class hdd
>>>>>>>>>            step choose indep 0 type datacenter
>>>>>>>>>            step chooseleaf indep 2 type host
>>>>>>>>>            step emit
>>>>>>>>> }
>>>>>>>>> rule cephfs.hdd.data {
>>>>>>>>>            id 7
>>>>>>>>>            type erasure
>>>>>>>>>            step set_chooseleaf_tries 5
>>>>>>>>>            step set_choose_tries 100
>>>>>>>>>            step take default class hdd
>>>>>>>>>            step choose indep 0 type datacenter
>>>>>>>>>            step chooseleaf indep 3 type host
>>>>>>>>>            step emit
>>>>>>>>> }
>>>>>>>>> rule rbd.ssd.data {
>>>>>>>>>            id 8
>>>>>>>>>            type erasure
>>>>>>>>>            step set_chooseleaf_tries 5
>>>>>>>>>            step set_choose_tries 100
>>>>>>>>>            step take default class ssd
>>>>>>>>>            step choose indep 0 type datacenter
>>>>>>>>>            step chooseleaf indep 3 type host
>>>>>>>>>            step emit
>>>>>>>>> }
>>>>>>>>> 
>>>>>>>>> Which should first pick all 3 datacenters in the choose step and
>>>>>>>>> then
>>>>>>>>> either 2 or 3 hosts in the chooseleaf step, matching EC 4+2 and 4+5
>>>>>>>>> respectively.
>>>>>>>>> 
>>>>>>>>> Mvh.
>>>>>>>>> 
>>>>>>>>> Torkil
>>>>>>>>> 
>>>>>>>>>> On Sun, Mar 24, 2024 at 1:56 AM Alexander E. Patrakov
>>>>>>>>>> <patrakov@xxxxxxxxx> wrote:
>>>>>>>>>>> 
>>>>>>>>>>> Hi Torkil,
>>>>>>>>>>> 
>>>>>>>>>>> I take my previous response back.
>>>>>>>>>>> 
>>>>>>>>>>> You have an erasure-coded pool with nine shards but only three
>>>>>>>>>>> datacenters. This, in general, cannot work. You need either nine
>>>>>>>>>>> datacenters or a very custom CRUSH rule. The second option may
>>>>>>>>>>> not be
>>>>>>>>>>> available if the current EC setup is already incompatible, as
>>>>>>>>>>> there is
>>>>>>>>>>> no way to change the EC parameters.
>>>>>>>>>>> 
>>>>>>>>>>> It would help if you provided the output of "ceph osd pool ls
>>>>>>>>>>> detail".
>>>>>>>>>>> 
>>>>>>>>>>> On Sun, Mar 24, 2024 at 1:43 AM Alexander E. Patrakov
>>>>>>>>>>> <patrakov@xxxxxxxxx> wrote:
>>>>>>>>>>>> 
>>>>>>>>>>>> Hi Torkil,
>>>>>>>>>>>> 
>>>>>>>>>>>> Unfortunately, your files contain nothing obviously bad or
>>>>>>>>>>>> suspicious,
>>>>>>>>>>>> except for two things: more PGs than usual and bad balance.
>>>>>>>>>>>> 
>>>>>>>>>>>> What's your "mon max pg per osd" setting?
>>>>>>>>>>>> 
>>>>>>>>>>>> On Sun, Mar 24, 2024 at 1:08 AM Torkil Svensgaard
>>>>>>>>>>>> <torkil@xxxxxxxx> wrote:
>>>>>>>>>>>>> 
>>>>>>>>>>>>> On 2024-03-23 17:54, Kai Stian Olstad wrote:
>>>>>>>>>>>>>> On Sat, Mar 23, 2024 at 12:09:29PM +0100, Torkil Svensgaard
>>>>>>>>>>>>>> wrote:
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> The other output is too big for pastebin and I'm not
>>>>>>>>>>>>>>> familiar with
>>>>>>>>>>>>>>> paste services, any suggestion for a preferred way to share
>>>>>>>>>>>>>>> such
>>>>>>>>>>>>>>> output?
>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> You can attached files to the mail here on the list.
>>>>>>>>>>>>> 
>>>>>>>>>>>>> Doh, for some reason I was sure attachments would be
>>>>>>>>>>>>> stripped. Thanks,
>>>>>>>>>>>>> attached.
>>>>>>>>>>>>> 
>>>>>>>>>>>>> Mvh.
>>>>>>>>>>>>> 
>>>>>>>>>>>>> Torkil
>>>>>>>>>>>> 
>>>>>>>>>>>> 
>>>>>>>>>>>> 
>>>>>>>>>>>> --
>>>>>>>>>>>> Alexander E. Patrakov
>>>>>>>>>>> 
>>>>>>>>>>> 
>>>>>>>>>>> 
>>>>>>>>>>> --
>>>>>>>>>>> Alexander E. Patrakov
>>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>> --
>>>>>>>>> Torkil Svensgaard
>>>>>>>>> Systems Administrator
>>>>>>>>> Danish Research Centre for Magnetic Resonance DRCMR, Section 714
>>>>>>>>> Copenhagen University Hospital Amager and Hvidovre
>>>>>>>>> Kettegaard Allé 30, 2650 Hvidovre, Denmark
>>>>>>>>> 
>>>>>>>> 
>>>>>>>> 
>>>>>>> 
>>>>>>> --
>>>>>>> Torkil Svensgaard
>>>>>>> Systems Administrator
>>>>>>> Danish Research Centre for Magnetic Resonance DRCMR, Section 714
>>>>>>> Copenhagen University Hospital Amager and Hvidovre
>>>>>>> Kettegaard Allé 30, 2650 Hvidovre, Denmark
>>>>>> 
>>>>>> 
>>>>>> 
>>>>> 
>>>>> --
>>>>> Torkil Svensgaard
>>>>> Systems Administrator
>>>>> Danish Research Centre for Magnetic Resonance DRCMR, Section 714
>>>>> Copenhagen University Hospital Amager and Hvidovre
>>>>> Kettegaard Allé 30, 2650 Hvidovre, Denmark
>>>> 
>>>> 
>>>> 
>>> 
>> 
>> --
>> Torkil Svensgaard
>> Sysadmin
>> MR-Forskningssektionen, afs. 714
>> DRCMR, Danish Research Centre for Magnetic Resonance
>> Hvidovre Hospital
>> Kettegård Allé 30
>> DK-2650 Hvidovre
>> Denmark
>> Tel: +45 386 22828
>> E-mail: torkil@xxxxxxxx
> 
> 
> 
> -- 
> Alexander E. Patrakov
> _______________________________________________
> 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