官方文档
http://docs.ceph.com/docs/master/rados/operations/monitoring/
具体用法
ceph daemon {daemon-name}
ceph daemon {path-to-socket-file}
ceph daemon osd.0 foo
ceph daemon /var/run/ceph/ceph-osd.0.asok foo
很多组件都可以通过命令,本文主要讲解Monitor部分
根据作者的理解这其实是一种UNIX Domain Socket IPC,具体的介绍可参阅《Unix环境高级编程》书籍
主要流程
common_init_finish(g_ceph_context);
void common_init_finish(CephContext *cct)
void common_init_finish(CephContext *cct)
{
cct->init_crypto();
ZTracer::ztrace_init();
int flags = cct->get_init_flags();
if (!(flags & CINIT_FLAG_NO_DAEMON_ACTIONS))
//启动服务线程
cct->start_service_thread();
if ((flags & CINIT_FLAG_DEFER_DROP_PRIVILEGES) &&
(cct->get_set_uid() || cct->get_set_gid())) {
cct->get_admin_socket()->chown(cct->get_set_uid(), cct->get_set_gid());
}
md_config_t *conf = cct->_conf;
if (!conf->admin_socket.empty() && !conf->admin_socket_mode.empty()) {
int ret = 0;
std::string err;
ret <