(1)进入probing状态,在需要执行mkfs时首先判断是否存在monmap,如果存在,则判断其读取是否会出错;如果不存在,则新建一个monmap。
(2)判断monmap中initial quorum中是否包含自身:
- 如果包含,目前没有对其中绑定的ip进行校验;
- 当monmap中initial quorum中不包含自身时,如果monmap中包含g_conf->public_addr,则将monmap中g_conf->public_addr对应的name,重命名为g_conf->name.get_id();
- 如果monmap中不包含g_conf->public_addr,判断monmap是否存在一个local address ,其对应的name以"noname-"开头,如果是,则将其对应的name重命名为g_conf->name.get_id()。
/*
* the monmap may be in one of three places:
* 'monmap:<latest_version_no>' - the monmap we'd really like to have
* 'mon_sync:latest_monmap' - last monmap backed up for the last sync
* 'mkfs:monmap' - a monmap resulting from mkfs
*/
src\ceph_mon.cc中main函数
如果接收到执行mkfs命令:
if (ceph_argparse_flag(args, i, "--mkfs", (char*)NULL)) {
mkfs = true;
}
if (mkfs) {
..