Re: CephFS metdata inconsistent PG Repair Problem

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

 



> Op 19 december 2016 om 18:14 schreef Sean Redmond <sean.redmond1@xxxxxxxxx>:
> 
> 
> Hi Ceph-Users,
> 
> I have been running into a few issue with cephFS metadata pool corruption
> over the last few weeks, For background please see
> tracker.ceph.com/issues/17177
> 
> # ceph -v
> ceph version 10.2.5 (c461ee19ecbc0c5c330aca20f7392c9a00730367)
> 
> I am currently facing a side effect of this issue that is making repairing
> an inconsistent PG in the metadata pool (pool 5) difficult and I could use
> some pointers
> 
> The PG I am having the issue with is 5.c0:
> 
> 0# ceph health detail
> HEALTH_ERR 1 pgs inconsistent; 1 scrub errors;
> noout,sortbitwise,require_jewel_osds flag(s) set
> pg 5.c0 is active+clean+inconsistent, acting [38,10,29]
> 1 scrub errors
> noout,sortbitwise,require_jewel_osds flag(s) set
> #
> 
> ceph pg 5.c0 query = http://pastebin.com/9yqrArTg
> 
> rados list-inconsistent-obj 5.c0 | python -m json.tool =
> http://pastebin.com/iZV1TfxE
> 
> I have looked at the error log and it reports:
> 
> 2016-12-19 16:43:36.944457 osd.38 172.27.175.12:6800/194902 10 : cluster
> [ERR] 5.c0 shard 38: soid 5:035881fa:::10002639cb6.00000000:head
> omap_digest 0xc54c7
> 938 != best guess omap_digest 0xb6531260 from auth shard 10
> 
> If I attempted to repair this using 'ceph pg repair 5.c0' the cluster
> health returns to OK, but if I force a deep scrub using 'ceph pg deep-scrub
> 5.c0' the same error is reported with exactly the same omap_digest values.
> 
> To understand the differences between the three osd's I performed the below
> steps on each of the osd's 38,10,29
> 
> -Stop the osd
> -ceph-objectstore-tool --op list --pgid 5.c0 --data-path
> /var/lib/ceph/osd/ceph-$OSDID | grep 10002639cb6 (The output is used in the
> next command)
> - ceph-objectstore-tool --data-path /var/lib/ceph/osd/ceph-$OSDID
> '["5.c0",{"oid":"10002639cb6.00000000","key":"","snapid":-2,"hash":1602296512,"max":0,"pool":5,"namespace":"","max":0}]'
> list-omap
> 
> Taking the output of the above I ran a diff and found that osd.38 has the
> below difference:
> 
> # diff osd10-5.c0.txt osd38-5.c0.txt
> 4405a4406
> > B6492C5C-A917-A77F-5F301516EC6448F5.jpg_head
> #
> 
> I assumed the above is a file name, using a find on the file system I
> confirmed the file did not exist So I must assume it was deleted and that
> is expected, so I am happy to try and correct this difference.
> 
> As the 'ceph pg repair 5.c0' was not working next I tried following
> http://ceph.com/planet/ceph-manually-repair-object/ to remove the object
> from the file system. Upon doing a deep-scrub before a repair it reports
> the object as missing, after running the repair the object is copied back
> into the osd.38, a further deep-scrub however returns exactly the
> same omap_digest values with osd.38 having a difference (
> http://pastebin.com/iZV1TfxE)
> 
> I assume it is because this omap data is stored inside levelDB and not just
> as extended attributes
> 
> getfattr -d
> /var/lib/ceph/osd/ceph-38/current/5.60_head/DIR_0/DIR_6/DIR_C/DIR_A/100008ad724.00000000__head_CD74AC60__5
> = http://pastebin.com/4Mc2mNNj
> 
> I tried to dig further into this by looking at the value of the opmap key
> using
> 
> ceph-objectstore-tool --data-path /var/lib/ceph/osd/ceph-38
> '["5.c0",{"oid":"10002639cb6.00000000","key":"","snapid":-2,"hash":1602296512,"max":0,"pool":5,"namespace":"","max":0}]'
> get-omap B6492C5C-A917-A77F-5F301516EC6448F5.jpg_head
> output = http://pastebin.com/vVUmw9Qi
> 
> I also tried this on osd.29 and found it strange the value existed using
> the below, but the key ' B6492C5C-A917-A77F-5F301516EC6448F5.jpg_head' is
> not listed in the output of omap-list
> 
> ceph-objectstore-tool --data-path /var/lib/ceph/osd/ceph-29
> '["5.c0",{"oid":"10002639cb6.00000000","key":"","snapid":-2,"hash":1602296512,"max":0,"pool":5,"namespace":"","max":0}]'
> get-omap B6492C5C-A917-A77F-5F301516EC6448F5.jpg_head
> 
> I maybe walking down the wrong track, but if anyone has any pointers that
> could help with repairing this PG or anything else I should be looking at
> to investigate further that would be very helpful.
> 

Thinking out loud, what about using ceph-objectstore-tool to export the PG from a healthy OSD (you have to start it for a moment) and importing it with the same tool into osd.38?

1. Stop osd.38
2. Stop osd.10
3. Export on osd.10
4. Import on osd.38
5. Start osd.10
6. Wait 5 min for PG peering and recovery
7. Start osd.38

Haven't tried this on a system, but something that popped up in my mind.

Wido

> Thanks
> _______________________________________________
> ceph-users mailing list
> ceph-users@xxxxxxxxxxxxxx
> http://lists.ceph.com/listinfo.cgi/ceph-users-ceph.com
_______________________________________________
ceph-users mailing list
ceph-users@xxxxxxxxxxxxxx
http://lists.ceph.com/listinfo.cgi/ceph-users-ceph.com



[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