共計(jì) 3252 個(gè)字符,預(yù)計(jì)需要花費(fèi) 9 分鐘才能閱讀完成。
這篇文章給大家分享的是有關(guān) mkcephfs 如何創(chuàng)建集群的內(nèi)容。丸趣 TV 小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考,一起跟隨丸趣 TV 小編過(guò)來(lái)看看吧。
$0 指的就是 mkcephfs
1. 校驗(yàn) conf 文件,并創(chuàng)建隨機(jī)的臨時(shí)目錄:
dir = /tmp/mkcephfs.jYWWOaxaTa
2 . 執(zhí)行:$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 中創(chuàng)建 monmap
$BINDIR/monmaptool –create –clobber $args –print $monmap || exit 1
在此之中,生成了 fsid,并將 epoch 0 寫入 /tmp/mkcephfs.jYWWOaxaTa/monmap
3)復(fù)制 ceph.conf 文件:
cp $conf $dir/conf
至此,$0 –prepare-monmap -d $dir -c $conf 命令執(zhí)行結(jié)束。
3. 只取出 osd_list 和 mds_lilst 組成 name_list,遍歷 name_llist 并執(zhí)行:
1)如果為遠(yuǎn)程主機(jī),那么先調(diào)用 scp 推送 conf 和 monmap 到遠(yuǎn)程主機(jī)的臨時(shí)目錄 $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,并創(chuàng)建相應(yīng)的目錄
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 參數(shù),那么同時(shí)格式化分區(qū)
do_root_cmd $0 -d $rdir –prepare-osdfs $name
4)如果為遠(yuǎn)程主機(jī),從遠(yuǎn)程節(jié)點(diǎn)收集 keys
scp -q $host:$rdir/key.$name $dir
4. 準(zhǔn)備 monitors, 執(zhí)行 $0 -d $dir –prepare-mon $moreargs:
此時(shí),moreargs 已經(jīng)包含了更多參數(shù):numosd osdmap crushmapsrc crushmap
1)如果 useosdmap 不為空,那么使用 useosdmap:cp $useosdmap $dir/osdmap,否則根據(jù) conf 文件創(chuàng)建通用的 osdmap:
$BINDIR/osdmaptool –create-from-conf $dir/osdmap -c $conf
2) 得到 crushmapsrc :
get_conf crushmapsrc crush map src mon global
如果 $crushmapsrc 不為空,則根據(jù) crushmapsrc 得到一個(gè) map 文件,保存為 $dir/crushmap:
$BINDIR/crushtool -c $crushmapsrc -o $dir/crushmap
3)得到 crushmap:
get_conf crushmap $usecrushmap crush map mon global
如果 $crushmap 不為空,則將 $crushmap 導(dǎo)入到 $dir/crushmap:
$BINDIR/osdmaptool –import-crush $crushmap $dir/osdmap
4)產(chǎn)生 admin keyring,保存到 $dir/keyring.admin:
$BINDIR/ceph-authtool –create-keyring –gen-key -n client.admin $dir/keyring.admin
5)創(chuàng)建初始的 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,并執(zhí)行:
1) 推送配置文件
如果為遠(yuǎn)程主機(jī),先推送本地的 $dir/* 到 $rdir:
rdir=`mktemp -u /tmp/mkfs.ceph.XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX`
否則如果是本地主機(jī),則 cp $dir/conf /etc/ceph/ceph.conf
2) 開(kāi)始啟動(dòng) mon daemon:
do_root_cmd $0 -d $rdir –init-daemon $name
s1. 檢查 /var/run/ceph/$name.pid 和 /var/run/ceph/$name.asok,并創(chuàng)建相應(yīng)的目錄
s2. 此時(shí) $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
感謝各位的閱讀!關(guān)于“mkcephfs 如何創(chuàng)建集群”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,讓大家可以學(xué)到更多知識(shí),如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!