Ceph OSD dies trying to replay journal

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

 



I have a small cluster of 3 machines/9 OSDs, one OSD per 4TB HDD.
Running Ceph 0.94.2 on CentOS 7. Just upgraded to 0.94.3 on one
machine, didn't help the problem.

My problem is: sometimes OSDs start consuming huge amount of memory
and dies afterwards. `/etc/init.d/ceph start osd.X` starts the OSD
process, but soon it dies again. OSD tries to allocate all available
memory and is sometimes being killed by OOM killer, and sometimes dies
when there is no more memory to allocate. In my case machines have
16GB memory each, normally OSD uses up to 1GB, but faulty OSD's usage
grows to 12-13GB.

I've tried to run `--flush-journal`, didn't work either. Here's the output:

[root@assets-3 ceph]# ceph-osd -i 6 --flush-journal
SG_IO: bad/missing sense data, sb[]:  70 00 05 00 00 00 00 0d 00 00 00
00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
tcmalloc: large alloc 1073741824 bytes == 0x671c8000 @  0x7f220f6b2e6a
0x7f220f6d2d64 0x7f220e2a7c29 0x7f220e2a886b 0x7f220e2a8914
0x7f220e2a8b7f 0x968ddf 0xa57ad3 0xa5ced1 0xa5ff82 0x90255a 0x90302e
0x9127cc 0x915d04 0x92df5b 0x900530 0x6425a9 0x7f220d932af5 0x65d139
(nil)
tcmalloc: large alloc 2147483648 bytes == 0xbfb00000 @  0x7f220f6b2e6a
0x7f220f6d2d64 0x7f220e2a7c29 0x7f220e2a886b 0x7f220e2a8914
0x7f220e2a8b7f 0x968ddf 0xa57ad3 0xa5ced1 0xa5ff82 0x90255a 0x90302e
0x9127cc 0x915d04 0x92df5b 0x900530 0x6425a9 0x7f220d932af5 0x65d139
(nil)
tcmalloc: large alloc 4294967296 bytes == 0x16e068000 @
0x7f220f6b2e6a 0x7f220f6d2d64 0x7f220e2a7c29 0x7f220e2a886b
0x7f220e2a8914 0x7f220e2a8b7f 0x968ddf 0xa57ad3 0xa5ced1 0xa5ff82
0x90255a 0x90302e 0x9127cc 0x915d04 0x92df5b 0x900530 0x6425a9
0x7f220d932af5 0x65d139 (nil)
tcmalloc: large alloc 8589934592 bytes == (nil) @  0x7f220f6b2e6a
0x7f220f6d2d64 0x7f220e2a7c29 0x7f220e2a886b 0x7f220e2a8914
0x7f220e2a8b7f 0x968ddf 0xa57ad3 0xa5ced1 0xa5ff82 0x90255a 0x90302e
0x9127cc 0x915d04 0x92df5b 0x900530 0x6425a9 0x7f220d932af5 0x65d139
(nil)
terminate called after throwing an instance of 'std::bad_alloc'
  what():  std::bad_alloc
*** Caught signal (Aborted) **
 in thread 7f2210598880
 ceph version 0.94.3 (95cefea9fd9ab740263bf8bb4796fd864d9afe2b)
 1: ceph-osd() [0xac5c32]
 2: (()+0xf130) [0x7f220ef2c130]
 3: (gsignal()+0x37) [0x7f220d9465d7]
 4: (abort()+0x148) [0x7f220d947cc8]
 5: (__gnu_cxx::__verbose_terminate_handler()+0x165) [0x7f220e24a9b5]
 6: (()+0x5e926) [0x7f220e248926]
 7: (()+0x5e953) [0x7f220e248953]
 8: (()+0x5eb73) [0x7f220e248b73]
 9: (()+0x15d3e) [0x7f220f6b2d3e]
 10: (tc_new()+0x1e0) [0x7f220f6d2de0]
 11: (std::string::_Rep::_S_create(unsigned long, unsigned long,
std::allocator<char> const&)+0x59) [0x7f220e2a7c29]
 12: (std::string::_Rep::_M_clone(std::allocator<char> const&,
unsigned long)+0x1b) [0x7f220e2a886b]
 13: (std::string::reserve(unsigned long)+0x44) [0x7f220e2a8914]
 14: (std::string::append(char const*, unsigned long)+0x4f) [0x7f220e2a8b7f]
 15: (LevelDBStore::LevelDBTransactionImpl::rmkeys_by_prefix(std::string
const&)+0xdf) [0x968ddf]
 16: (DBObjectMap::clear_header(std::tr1::shared_ptr<DBObjectMap::_Header>,
std::tr1::shared_ptr<KeyValueDB::TransactionImpl>)+0xd3) [0xa57ad3]
 17: (DBObjectMap::_clear(std::tr1::shared_ptr<DBObjectMap::_Header>,
std::tr1::shared_ptr<KeyValueDB::TransactionImpl>)+0xa1) [0xa5ced1]
 18: (DBObjectMap::clear(ghobject_t const&, SequencerPosition
const*)+0x202) [0xa5ff82]
 19: (FileStore::lfn_unlink(coll_t, ghobject_t const&,
SequencerPosition const&, bool)+0x16a) [0x90255a]
 20: (FileStore::_remove(coll_t, ghobject_t const&, SequencerPosition
const&)+0x9e) [0x90302e]
 21: (FileStore::_do_transaction(ObjectStore::Transaction&, unsigned
long, int, ThreadPool::TPHandle*)+0x252c) [0x9127cc]
 22: (FileStore::_do_transactions(std::list<ObjectStore::Transaction*,
std::allocator<ObjectStore::Transaction*> >&, unsigned long,
ThreadPool::TPHandle*)+0x64) [0x915d04]
 23: (JournalingObjectStore::journal_replay(unsigned long)+0x5db) [0x92df5b]
 24: (FileStore::mount()+0x3730) [0x900530]
 25: (main()+0xec9) [0x6425a9]
 26: (__libc_start_main()+0xf5) [0x7f220d932af5]
 27: ceph-osd() [0x65d139]
2015-09-06 09:53:20.349046 7f2210598880 -1 *** Caught signal (Aborted) **
 in thread 7f2210598880

 ceph version 0.94.3 (95cefea9fd9ab740263bf8bb4796fd864d9afe2b)
 1: ceph-osd() [0xac5c32]
 2: (()+0xf130) [0x7f220ef2c130]
 3: (gsignal()+0x37) [0x7f220d9465d7]
 4: (abort()+0x148) [0x7f220d947cc8]
 5: (__gnu_cxx::__verbose_terminate_handler()+0x165) [0x7f220e24a9b5]
 6: (()+0x5e926) [0x7f220e248926]
 7: (()+0x5e953) [0x7f220e248953]
 8: (()+0x5eb73) [0x7f220e248b73]
 9: (()+0x15d3e) [0x7f220f6b2d3e]
 10: (tc_new()+0x1e0) [0x7f220f6d2de0]
 11: (std::string::_Rep::_S_create(unsigned long, unsigned long,
std::allocator<char> const&)+0x59) [0x7f220e2a7c29]
 12: (std::string::_Rep::_M_clone(std::allocator<char> const&,
unsigned long)+0x1b) [0x7f220e2a886b]
 13: (std::string::reserve(unsigned long)+0x44) [0x7f220e2a8914]
 14: (std::string::append(char const*, unsigned long)+0x4f) [0x7f220e2a8b7f]
 15: (LevelDBStore::LevelDBTransactionImpl::rmkeys_by_prefix(std::string
const&)+0xdf) [0x968ddf]
 16: (DBObjectMap::clear_header(std::tr1::shared_ptr<DBObjectMap::_Header>,
std::tr1::shared_ptr<KeyValueDB::TransactionImpl>)+0xd3) [0xa57ad3]
 17: (DBObjectMap::_clear(std::tr1::shared_ptr<DBObjectMap::_Header>,
std::tr1::shared_ptr<KeyValueDB::TransactionImpl>)+0xa1) [0xa5ced1]
 18: (DBObjectMap::clear(ghobject_t const&, SequencerPosition
const*)+0x202) [0xa5ff82]
 19: (FileStore::lfn_unlink(coll_t, ghobject_t const&,
SequencerPosition const&, bool)+0x16a) [0x90255a]
 20: (FileStore::_remove(coll_t, ghobject_t const&, SequencerPosition
const&)+0x9e) [0x90302e]
 21: (FileStore::_do_transaction(ObjectStore::Transaction&, unsigned
long, int, ThreadPool::TPHandle*)+0x252c) [0x9127cc]
 22: (FileStore::_do_transactions(std::list<ObjectStore::Transaction*,
std::allocator<ObjectStore::Transaction*> >&, unsigned long,
ThreadPool::TPHandle*)+0x64) [0x915d04]
 23: (JournalingObjectStore::journal_replay(unsigned long)+0x5db) [0x92df5b]
 24: (FileStore::mount()+0x3730) [0x900530]
 25: (main()+0xec9) [0x6425a9]
 26: (__libc_start_main()+0xf5) [0x7f220d932af5]
 27: ceph-osd() [0x65d139]
 NOTE: a copy of the executable, or `objdump -rdS <executable>` is
needed to interpret this.

     0> 2015-09-06 09:53:20.349046 7f2210598880 -1 *** Caught signal
(Aborted) **
 in thread 7f2210598880

 ceph version 0.94.3 (95cefea9fd9ab740263bf8bb4796fd864d9afe2b)
 1: ceph-osd() [0xac5c32]
 2: (()+0xf130) [0x7f220ef2c130]
 3: (gsignal()+0x37) [0x7f220d9465d7]
 4: (abort()+0x148) [0x7f220d947cc8]
 5: (__gnu_cxx::__verbose_terminate_handler()+0x165) [0x7f220e24a9b5]
 6: (()+0x5e926) [0x7f220e248926]
 7: (()+0x5e953) [0x7f220e248953]
 8: (()+0x5eb73) [0x7f220e248b73]
 9: (()+0x15d3e) [0x7f220f6b2d3e]
 10: (tc_new()+0x1e0) [0x7f220f6d2de0]
 11: (std::string::_Rep::_S_create(unsigned long, unsigned long,
std::allocator<char> const&)+0x59) [0x7f220e2a7c29]
 12: (std::string::_Rep::_M_clone(std::allocator<char> const&,
unsigned long)+0x1b) [0x7f220e2a886b]
 13: (std::string::reserve(unsigned long)+0x44) [0x7f220e2a8914]
 14: (std::string::append(char const*, unsigned long)+0x4f) [0x7f220e2a8b7f]
 15: (LevelDBStore::LevelDBTransactionImpl::rmkeys_by_prefix(std::string
const&)+0xdf) [0x968ddf]
 16: (DBObjectMap::clear_header(std::tr1::shared_ptr<DBObjectMap::_Header>,
std::tr1::shared_ptr<KeyValueDB::TransactionImpl>)+0xd3) [0xa57ad3]
 17: (DBObjectMap::_clear(std::tr1::shared_ptr<DBObjectMap::_Header>,
std::tr1::shared_ptr<KeyValueDB::TransactionImpl>)+0xa1) [0xa5ced1]
 18: (DBObjectMap::clear(ghobject_t const&, SequencerPosition
const*)+0x202) [0xa5ff82]
 19: (FileStore::lfn_unlink(coll_t, ghobject_t const&,
SequencerPosition const&, bool)+0x16a) [0x90255a]
 20: (FileStore::_remove(coll_t, ghobject_t const&, SequencerPosition
const&)+0x9e) [0x90302e]
 21: (FileStore::_do_transaction(ObjectStore::Transaction&, unsigned
long, int, ThreadPool::TPHandle*)+0x252c) [0x9127cc]
 22: (FileStore::_do_transactions(std::list<ObjectStore::Transaction*,
std::allocator<ObjectStore::Transaction*> >&, unsigned long,
ThreadPool::TPHandle*)+0x64) [0x915d04]
 23: (JournalingObjectStore::journal_replay(unsigned long)+0x5db) [0x92df5b]
 24: (FileStore::mount()+0x3730) [0x900530]
 25: (main()+0xec9) [0x6425a9]
 26: (__libc_start_main()+0xf5) [0x7f220d932af5]
 27: ceph-osd() [0x65d139]
 NOTE: a copy of the executable, or `objdump -rdS <executable>` is
needed to interpret this.

Aborted




The only way to start faulty OSD is to recreate journal from scratch,
losing all journal's contents.
My Ceph config is very simple:

[global]
fsid = 0af99d4f-2677-4889-9985-456e28e91265
mon_initial_members = assets-1
mon_host = 192.168.0.51
auth_cluster_required = cephx
auth_service_required = cephx
auth_client_required = cephx
filestore_xattr_use_omap = true
public_network = 192.168.0.0/24

[client.admin]
keyring = /etc/ceph/ceph.client.admin.keyring

[client.radosgw.gateway]
host = assets-1
keyring = /etc/ceph/ceph.client.radosgw.keyring
rgw_socket_path = /var/run/ceph/ceph.radosgw.gateway.fastcgi.sock
log_file = /var/log/radosgw/client.radosgw.gateway.log
rgw_print_continue = false

[osd]
osd_max_backfills = 1
osd_recovery_max_active = 1

[osd.0]
osd_journal = /dev/sda4

[osd.1]
osd_journal = /dev/sda5

[osd.2]
osd_journal = /dev/sda6

[osd.3]
osd_journal = /dev/sda4

[osd.4]
osd_journal = /dev/sda5

[osd.5]
osd_journal = /dev/sda6

[osd.6]
osd_journal = /dev/sda4

[osd.7]
osd_journal = /dev/sda5

[osd.8]
osd_journal = /dev/sda6



I haven't looked at the cluster for a week, and after the week only 4
of 9 OSDs survived, all other are dead now.
There's one MON per host (3 in total), no MDS, no block devices. Ceph
is used only with RGW.

Thank you.
--
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