OSD startup failure

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

 



I'm running into a problem starting ceph-osd. Admittedly, it was caused by
me (I do believe I know exactly what caused the problem), but I have no
idea how (or even if) it can be fixed. The problem I have running into is
that on start. ceph-osd throws the below error and stack trace:

2014-06-01 01:47:05.548685 7f831fe807a0 -1 osd/PG.cc: In function 'static
epoch_t PG::peek_map_epoch(ObjectStore*, coll_t, hobject_t&,
ceph::bufferlist*)' thread 7f831fe807a0 time 2014-06-01 01:47:05.548055
osd/PG.cc: 2576: FAILED assert(values.size() == 1)

 ceph version 0.80.1 (a38fe1169b6d2ac98b427334c12d7cf81f809b74)
 1: (PG::peek_map_epoch(ObjectStore*, coll_t, hobject_t&,
ceph::buffer::list*)+0x4ea) [0x7535fa]
 2: (OSD::load_pgs()+0x18f1) [0x568b71]
 3: (OSD::init()+0x22b0) [0x5814e0]
 4: (main()+0x3597) [0x525747]
 5: (__libc_start_main()+0xfd) [0x7f831db06d1d]
 6: /usr/bin/ceph-osd() [0x521df9]
 NOTE: a copy of the executable, or `objdump -rdS <executable>` is needed
to interpret this.

Now for how I think it was caused, which I hope might help resolve it. This
system was originally running Archlinux, but due to difficulties when
updating it since I don't update often enough, I decided to switch to
CentOS. That part isn't the important piece, though. Archlinux used leveldb
1.14, while CentOS came with leveldb-1.7. After getting CentOS installed, I
tried starting ceph with 'service ceph -a start', which prompted me for a
ton of ssh passwords (I fixed that annoyance). Each daemon displayed some
log messages about failure to bind to address which I ignored since I
didn't want to interrupt the init script since I didn't know everything it
did. Sadly, this seems to have corrupted all of ceph's leveldb databases.
For the mon and mds daemons, I had tarball backups I took before killing
Archlinux. The osds, however, are larger than any storage medium in my
possession.

Once I figured out that leveldb was too old, I was able to compile
leveldb-1.14 from source and install it on my system. After restoring the
mds and mon data directories from backup (keep in mind that no ceph daemon
successfully started after CentOS was installed), those daemones are all
able to start. It is just the osds that fail now (and hindsight being
20-20, I really wish I had backed up the omap directories (which looks to
be where all of the leveldb stuff is held on the osds) before trying to
start them up.

If there isn't any reliable method to bring the ceph osds back to life,
would there be a method to recover the file data from the osd data
directories so that I could rebuild them without losing everything? It
wouldn't be the end of the world to lose my data, as most of the important
documents and pictures are backed up elsewhere, but I really don't want to
rip all my music and movies from disc again. Not to mention that it would
be slightly painful to lose my VM images.

~Adam Walters


[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