Re: OSD repair: on disk size does not match object info size

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

 



On Tue, 10 Sep 2013, Chris Dunlop wrote:
> G'day,
> 
> On 0.56.7-1~bpo70+1 I'm getting:
> 
> # ceph pg dump | grep inconsistent
> 013-09-10-08:39:59 2.bc        2776    0       0       0       11521799680     162063  162063  active+clean+inconsistent       2013-09-10 08:38:38.482302      20512'699877    20360'13461026  [6,0]   [6,0]   20512'699877    2013-09-10 08:38:38.482264      20512'699877     2013-09-10 08:38:38.482264
> 
> # ceph pg repair 2.bc
> instructing pg 2.bc on osd.6 to repair
> 
> # tail /var/log/ceph/ceph-osd.6.log
> 2013-09-10 08:17:25.557926 7fef09c14700  0 log [ERR] : repair 2.bc 89ebebc/rbd_data.13a0c74b0dc51.00000000000107ec/head//2 on disk size (4194304) does not match object info size (4104192)
> 2013-09-10 08:17:27.316112 7fef09c14700  0 log [ERR] : 2.bc repair 1 errors, 0 fixed
> 
> # ls -l 'ceph-6/current/2.bc_head/DIR_C/DIR_B/DIR_E/rbd\udata.13a0c74b0dc51.00000000000107ec__head_089EBEBC__2'
> -rw-r--r-- 1 root root 4194304 Sep  8 21:01 ceph-6/current/2.bc_head/DIR_C/DIR_B/DIR_E/rbd\udata.13a0c74b0dc51.00000000000107ec__head_089EBEBC__2
> # ls -l 'ceph-0/current/2.bc_head/DIR_C/DIR_B/DIR_E/rbd\udata.13a0c74b0dc51.00000000000107ec__head_089EBEBC__2'
> -rw-r--r-- 1 root root 4194304 Sep  8 21:01 ceph-0/current/2.bc_head/DIR_C/DIR_B/DIR_E/rbd\udata.13a0c74b0dc51.00000000000107ec__head_089EBEBC__2
> 
> One possible solution would be to simply truncate the objects down to the
> object info size, as recommended in this case:
> 
> http://www.spinics.net/lists/ceph-users/msg00793.html
> 
> However I'm a little concerned about that solution as the on-disk size is
> exactly 4MB, which I think is the expected size of these objects, and matches
> the size of all the other objects in the same directory, and the "extra" data
> looks a little interesting, with "FILE0" blocks in there (what are those?):
> 
> # cd /var/lib/ceph/osd/ceph-6/current/2.bc_head/DIR_C/DIR_B/DIR_E/
> # dd if='rbd\udata.13a0c74b0dc51.00000000000107ec__head_089EBEBC__2' bs=1024 skip=4008 | od -c
> 0000000   F   I   L   E   0  \0 003  \0 312   j   o   o  \0  \0  \0  \0
> 0000020 001  \0 001  \0   8  \0 001  \0   X 001  \0  \0  \0 004  \0  \0
> 0000040  \0  \0  \0  \0  \0  \0  \0  \0 006  \0  \0  \0 310   p 017  \0
> 0000060 002  \0  \0  \0  \0  \0  \0  \0 020  \0  \0  \0   `  \0  \0  \0
> ...
> 0002000   F   I   L   E   0  \0 003  \0 002   k   o   o  \0  \0  \0  \0
> 0002020 001  \0 001  \0   8  \0 001  \0   X 001  \0  \0  \0 004  \0  \0
> 0002040  \0  \0  \0  \0  \0  \0  \0  \0 006  \0  \0  \0 311   p 017  \0
> 0002060 002  \0  \0  \0  \0  \0  \0  \0 020  \0  \0  \0   `  \0  \0  \0
> ...
> 0004000   F   I   L   E   0  \0 003  \0 023   r   o   o  \0  \0  \0  \0
> 0004020 001  \0 001  \0   8  \0 001  \0   X 001  \0  \0  \0 004  \0  \0
> 0004040  \0  \0  \0  \0  \0  \0  \0  \0 006  \0  \0  \0 312   p 017  \0
> 0004060 002  \0  \0  \0  \0  \0  \0  \0 020  \0  \0  \0   `  \0  \0  \0
> 
> Is it safe to simply truncate this object, or what other solutions might
> be applicable?

The alternative is to edit the xattr.  That's harder, but better.  You'll 
want grab the user.ceph._ xattr, change the the one instance of 4104192 to 
4194304, and then reset it.  You can use

 ceph-dencoder type object_info_t import /tmp/xattrfile decode dump_json

to verify that it decodes properly before and after you make the edit.  I 
like the 'attr' tool for getting/setting xattrs.

Is this still bobtail?  We haven't seen this sort of corruption since 
then.

Thanks!
sage
--
To unsubscribe from this list: send the line "unsubscribe ceph-devel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [CEPH Users]     [Ceph Large]     [Information on CEPH]     [Linux BTRFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]
  Powered by Linux