共计 3252 个字符,预计需要花费 9 分钟才能阅读完成。
这篇文章给大家分享的是有关 mkcephfs 如何创建集群的内容。丸趣 TV 小编觉得挺实用的,因此分享给大家做个参考,一起跟随丸趣 TV 小编过来看看吧。
$0 指的就是 mkcephfs
1. 校验 conf 文件,并创建随机的临时目录:
dir = /tmp/mkcephfs.jYWWOaxaTa
2 . 执行:$0 –prepare-monmap -d $dir -c $conf
1)得到 mon 列表、mon 的 id 以及 mon 的地址:
mons=`$CCONF -c $conf -l mon | egrep -v ^mon$ | sort`
id=`echo $name | cut -c 4- | sed s/^\\.// `
get_conf addr mon addr
那么 args:args = –add 0 192.168.100.61:6789
2)在 $dir/monmap 中创建 monmap
$BINDIR/monmaptool –create –clobber $args –print $monmap || exit 1
在此之中,生成了 fsid,并将 epoch 0 写入 /tmp/mkcephfs.jYWWOaxaTa/monmap
3)复制 ceph.conf 文件:
cp $conf $dir/conf
至此,$0 –prepare-monmap -d $dir -c $conf 命令执行结束。
3. 只取出 osd_list 和 mds_lilst 组成 name_list,遍历 name_llist 并执行:
1)如果为远程主机,那么先调用 scp 推送 conf 和 monmap 到远程主机的临时目录 $host:$rdir:
rdir=`mktemp -u /tmp/mkfs.ceph.XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX`
2)do_root_cmd $0 -d $rdir –init-daemon $name
s1. 检查 /var/run/ceph/$name.pid 和 /var/run/ceph/$name.asok,并创建相应的目录
s2 . 如果 $name 的 $type 为 osd,则:
$BINDIR/ceph-osd -c $conf –monmap $dir/monmap -i $id –mkfs –mkkey
get_conf osd_data /var/lib/ceph/osd/ceph-$id osd data
get_conf osd_keyring $osd_data/keyring keyring
$BINDIR/ceph-authtool -p -n $name $osd_keyring $dir/key.$name
s3. 如果 $type 为 mds,则:
get_conf mds_data /var/lib/ceph/mds/ceph-$id mds data
get_conf mds_keyring $mds_data/keyring keyring
test -d $mds_data || mkdir -p $mds_data
echo creating private key for $name keyring $mds_keyring
$BINDIR/ceph-authtool –create-keyring –gen-key -n $name $mds_keyring
$BINDIR/ceph-authtool -p -n $name $mds_keyring $dir/key.$name
3) 如果带有 –mkfs 参数,那么同时格式化分区
do_root_cmd $0 -d $rdir –prepare-osdfs $name
4)如果为远程主机,从远程节点收集 keys
scp -q $host:$rdir/key.$name $dir
4. 准备 monitors, 执行 $0 -d $dir –prepare-mon $moreargs:
此时,moreargs 已经包含了更多参数:numosd osdmap crushmapsrc crushmap
1)如果 useosdmap 不为空,那么使用 useosdmap:cp $useosdmap $dir/osdmap,否则根据 conf 文件创建通用的 osdmap:
$BINDIR/osdmaptool –create-from-conf $dir/osdmap -c $conf
2) 得到 crushmapsrc :
get_conf crushmapsrc crush map src mon global
如果 $crushmapsrc 不为空,则根据 crushmapsrc 得到一个 map 文件,保存为 $dir/crushmap:
$BINDIR/crushtool -c $crushmapsrc -o $dir/crushmap
3)得到 crushmap:
get_conf crushmap $usecrushmap crush map mon global
如果 $crushmap 不为空,则将 $crushmap 导入到 $dir/crushmap:
$BINDIR/osdmaptool –import-crush $crushmap $dir/osdmap
4)产生 admin keyring,保存到 $dir/keyring.admin:
$BINDIR/ceph-authtool –create-keyring –gen-key -n client.admin $dir/keyring.admin
5)创建初始的 monitor keyring:
s1. cp $dir/keyring.admin $dir/keyring.mon
s2. $BINDIR/ceph-authtool -n client.admin –set-uid=0 \
–cap mon allow * \
–cap osd allow * \
–cap mds allow \
$dir/keyring.mon
s3. $BINDIR/ceph-authtool –gen-key -n mon. $dir/keyring.mon –cap mon allow *
6) 遍历 $dir/key.*:
如果 ktype 为 osd:
$BINDIR/ceph-authtool -n $kname –add-key $secret $dir/keyring.mon \
–cap mon allow rwx \
–cap osd allow *
如果 type 为 mds:
$BINDIR/ceph-authtool -n $kname –add-key $secret $dir/keyring.mon \
–cap mon allow rwx \
–cap osd allow * \
–cap mds allow
5. 遍历 mon_list,并执行:
1) 推送配置文件
如果为远程主机,先推送本地的 $dir/* 到 $rdir:
rdir=`mktemp -u /tmp/mkfs.ceph.XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX`
否则如果是本地主机,则 cp $dir/conf /etc/ceph/ceph.conf
2) 开始启动 mon daemon:
do_root_cmd $0 -d $rdir –init-daemon $name
s1. 检查 /var/run/ceph/$name.pid 和 /var/run/ceph/$name.asok,并创建相应的目录
s2. 此时 $type 为 mon,则:
get_conf mon_data /var/lib/ceph/mon/ceph-$id mon data
mkdir -p $mon_data
$BINDIR/ceph-mon -c $conf –mkfs -i $id –monmap $dir/monmap –osdmap $dir/osdmap -k $dir/keyring.mon
6 . 得到 adminkerying:
get_conf adminkeyring /etc/ceph/keyring keyring global
cp $dir/keyring.admin $adminkeyring
感谢各位的阅读!关于“mkcephfs 如何创建集群”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!