【问题标题】:failed to start ceph-mon daemon无法启动 ceph-mon 守护进程
【发布时间】:2014-12-18 21:39:57
【问题描述】:

我已经构建了 ceph 源代码并使用以下命令进行安装:

apt-get install a series of dependency packages
./autogen.sh
./configure
make
make install

所有这些过程都很顺利。当我输入时:

which ceph

控制台显示:

/usr/local/bin/ceph

所以我想我已经成功安装了 ceph。 但是当我尝试启动 ceph-mon 守护进程时,控制台告诉我:

start: unknown job: ceph-mon

我已经通过键入以下内容检查了我的服务列表:

initctl list | grep ceph

而且输出是空白的。

谁能告诉我为什么?

【问题讨论】:

标签: cloud storage ceph


【解决方案1】:

你能运行cepn-mon -i <your-mon-id>吗,我通过以下方式解决这个问题:

(我和你的情况一样,我是基于萤火虫的,我从源代码编译和安装。)

#!/bin/bash                                                                     
fsid=`uuidgen`                                                                  
host="your-mon-host"                                                                  
ipaddr="your-mon-ip-addr"                                                              

echo "[global]" > ./ceph.sample.conf                                            
echo "fsid = ${fsid}" >> ./ceph.sample.conf                                     
echo "mon initial members=${host}" >> ./ceph.sample.conf                        
echo "mon host = ${ipaddr}" >> ./ceph.sample.conf                               
cat ./popular_settings.txt >> ./ceph.sample.conf                                
cp ./ceph.sample.conf /etc/ceph/ceph.conf                                       

rm -rf /var/lib/ceph/mon/ceph-${host}/done                                      

sudo ceph-authtool --create-keyring /var/lib/ceph/tmp/ceph-${host}.mon.keyring --gen-key -n mon. --cap mon 'allow *'
sudo ceph-authtool --create-keyring /etc/ceph/ceph.client.admin.keyring --gen-key -n client.admin --set-uid=0 --cap mon 'allow *' --cap osd 'a    llow *' --cap mds 'allow'

sudo chmod +r /var/lib/ceph/tmp/ceph-${host}.mon.keyring                        
sudo chmod +r /etc/ceph/ceph.client.admin.keyring                               

sudo ceph-authtool /var/lib/ceph/tmp/ceph-${host}.mon.keyring --import-keyring /etc/ceph/ceph.client.admin.keyring


monmaptool --create --add ${host} ${ipaddr} --fsid ${fsid} /tmp/monmap --clobber


#rm -rf /var/lib/ceph/mon/ceph-${host}                                          
sudo ceph-mon --mkfs -i ${host} --monmap /tmp/monmap --keyring /var/lib/ceph/tmp/ceph-${host}.mon.keyring 

touch /var/lib/ceph/mon/ceph-${host}/done                                       
touch /var/lib/ceph/mon/ceph-${host}/upstart  
ps aux | grep "ceph-mon"    #there should be no ceph-mon                                  
ceph-mon -i ${host} 
ps aux | grep "ceph-mon"    #there we've got a ceph-mon running                           

ceph osd tree

【讨论】:

  • 在我的例子中,使用 make 手动部署,它创建并运行 mon,但“ceph osd 树”仍然没有返回任何输出!在这一步结束时,我希望硬盘上有 ceph id(“lsblk”的输出会显示)但我没有!有什么想法吗?
【解决方案2】:

您可以尝试触摸文件sysvinit。例如,假设监控节点的主机名为node1,集群名称默认为,在启动监控进程前使用该命令touch /var/lib/ceph/mon/ceph-node1/sysvinit。这解决了我遇到未知错误时的问题。

【讨论】:

    【解决方案3】:

    Ceph 的 ma​​ke install 目标不安装 upstart script。最好的选择是使用 apt-get install ceph 安装软件包。如果您需要从修改过的源运行,您可以使用 ceph-mon -i a,假设监控数据已经存在。

    【讨论】:

      最近更新 更多