omap header and all other omap attributes was destroyed. I copied another index over the destroyed one to get a somewhat valid header and it seems intact. After a 'check --fix':
# rados -p .rgw.buckets getomapheader .dir.4470.1 header (49 bytes) : 0000 : 03 02 2b 00 00 00 01 00 00 00 01 02 02 18 00 00 : ..+............. 0010 : 00 7d 7a 3f 6e 01 00 00 00 00 d0 00 7e 01 00 00 : .}z?n.......~... 0020 : 00 bb f5 01 00 00 00 00 00 00 00 00 00 00 00 00 : ................ 0030 : 00 : . Rados shows objects are there: # rados ls -p .rgw.buckets |grep 4470.1_data/avatars 4470.1_data/avatars/11047/11047823_20101211154308.jpg 4470.1_data/avatars/106/106976-orig 4470.1_data/avatars/492/492923.jpg 4470.1_data/avatars/275/275479.jpg ... And i am able to GET them $ s3cmd get s3://imgiz/data/avatars/492/492923.jpg s3://imgiz/data/avatars/492/492923.jpg -> ./492923.jpg [1 of 1] 3587 of 3587 100% in 0s 93.40 kB/s done But unable to list them $ s3cmd ls s3://imgiz/data/avatars <NOTHING> My initial expectation was that 'bucket check --fix --check-objects' will actually read the files like 'rados ls' does and would recreate the missing omapkeys but it doesn't seem to do that. Now a simple check says # radosgw-admin bucket check -b imgiz { "existing_header": { "usage": { "rgw.main": { "size_kb": 6000607, "size_kb_actual": 6258740, "num_objects": 128443}}}, "calculated_header": { "usage": { "rgw.main": { "size_kb": 6000607, "size_kb_actual": 6258740, "num_objects": 128443}}}} But i know we have more than 128k objects. On Mon, Apr 8, 2013 at 7:17 PM, Yehuda Sadeh <yeh...@inktank.com> wrote: > We'll need to have more info about the current state. Was just the > omap header destroyed, or does it still exist? What does the header > contain now? Are you able to actually access objects in that bucket, > but just fail to list them? > > On Mon, Apr 8, 2013 at 8:34 AM, Erdem Agaoglu <erdem.agao...@gmail.com> > wrote: > > Hi again, > > > > I managed to change the file with some other bucket's index. > --check-objects > > --fix worked but my hopes have failed as it didn't actually read through > the > > files or fixed anything. Any suggestions? > > > > > > On Thu, Apr 4, 2013 at 5:56 PM, Erdem Agaoglu <erdem.agao...@gmail.com> > > wrote: > >> > >> Hi all, > >> > >> After a major failure, and getting our cluster health back OK (with some > >> help from inktank folks, thanks), we found out that we have managed to > >> corrupt one of our bucket indices. As far as i can track it, we are > missing > >> the omapheader on that specific index, so we're unable to use > radosgw-admin > >> tools to fix it. > >> > >> While a healthy (smaller) bucket answers > >> # radosgw-admin bucket check -b imgdoviz > >> { "existing_header": { "usage": { "rgw.main": { "size_kb": 4140, > >> "size_kb_actual": 4484, > >> "num_objects": 157}}}, > >> "calculated_header": { "usage": { "rgw.main": { "size_kb": 4140, > >> "size_kb_actual": 4484, > >> "num_objects": 157}}}} > >> > >> The faulty one fails with > >> # radosgw-admin bucket check -b imgiz > >> failed to list objects in bucket=imgiz(@.rgw.buckets[4470.1]) err=(22) > >> Invalid argument > >> failed to check index err=(22) Invalid argument > >> > >> When i push further > >> # radosgw-admin bucket check -b imgiz --check-objects --fix > >> failed to list objects in bucket=imgiz(@.rgw.buckets[4470.1]) err=(22) > >> Invalid argument > >> Checking objects, decreasing bucket 2-phase commit timeout. > >> ** Note that timeout will reset only when operation completes > successfully > >> ** > >> ERROR: failed operation r=-22 > >> ERROR: failed operation r=-22 > >> .. > >> last line keeps repeating without any progress. > >> > >> I checked the file omapheaders and while the healty bucket has: > >> # rados -p .rgw.buckets getomapheader .dir.6912.3 > >> header (49 bytes) : > >> 0000 : 03 02 2b 00 00 00 01 00 00 00 01 02 02 18 00 00 : > ..+............. > >> 0010 : 00 a8 af 40 00 00 00 00 00 00 10 46 00 00 00 00 : > ...@.......F.... > >> 0020 : 00 9d 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : > ................ > >> 0030 : 00 : . > >> > >> the faulty one is missing it > >> # rados -p .rgw.buckets getomapheader .dir.4470.1 > >> header (0 bytes) : > >> > >> > >> I'm currently in the process of understanding how to create a readable > >> header. My hopes are even while its wrong, radosgw-admin will be able to > >> read through objects and fix the necessary parts. But i'm not sure how > to > >> set the new-header. It seems there is a setomapheader counterpart for > >> getomapheader but it only accepts values from commandline so i don't > know > >> how to push a rgw-readable binary with it. > >> > >> Is this somewhat possible? > >> > >> Thanks in advance. > >> > >> -- > >> erdem agaoglu > > > > > > > > > > -- > > erdem agaoglu > > > > _______________________________________________ > > ceph-users mailing list > > ceph-users@lists.ceph.com > > http://lists.ceph.com/listinfo.cgi/ceph-users-ceph.com > > > -- erdem agaoglu
_______________________________________________ ceph-users mailing list ceph-users@lists.ceph.com http://lists.ceph.com/listinfo.cgi/ceph-users-ceph.com