環境:ubuntu-server 16.04,兩臺arm服務器 分別爲node1和node2,node1和node2分別安裝monitor和3個osd,在node1上部署MDS,cephnode
systemctl stop ufw #禁用防火牆bootstrap
systemctl disable ufw #禁止防火牆開機啓動ubuntu
vim /etc/hosts #修改主機名字(每臺服務器都要修改)個人node2節點的文件以下:vim
root@node2:/var/lib/ceph/osd# cat /etc/hosts
127.0.0.1 localhost
10.33.0.37 node2
10.33.0.13 node1服務器
# The following lines are desirable for IPv6 capable hosts
::1 localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allroutersoop
vim /etc/hostname #修改主機名字ui
.......略spa
一、uuidgen #生成惟一的uuid.net
二、vim /etc/ceph/ceph.conf #建立ceph.conf文件,個人配置文件以下:命令行
root@bogon:~# cat /etc/ceph/ceph.conf
[global]
fsid = c37ee56f-e925-4c9b-80ba-c4b0625fde93
mon initial members = node1
mon host = 10.33.0.13
public network = 10.33.0.0/16
cluster network = 192.168.3.0/24
auth cluster required = cephx
auth service required = cephx
auth client required = cephx
osd pool default size = 2 #兩個副本
三、ceph-authtool --create-keyring /tmp/ceph.mon.keyring --gen-key -n mon. --cap mon 'allow *' #爲監控節點建立管理密鑰
四、ceph-authtool --create-keyring /etc/ceph/ceph.client.admin.keyring --gen-key -n client.admin --cap mon 'allow *' --cap osd 'allow *' --cap mds 'allow' #爲ceph amin用戶建立管理集羣的密鑰並賦予訪問權限
五、ceph-authtool /tmp/ceph.mon.keyring --import-keyring /etc/ceph/ceph.client.admin.keyring #添加client.admin key到 ceph.mon.keyring
六、 mkdir -p /var/lib/ceph/mon/ceph-node1 #爲node1節點上的mon建立數據目錄
七、在node1節點上初始化mon節點,執行下面的命令
ceph-mon --mkfs -i node1 --keyring /tmp/ceph.mon.keyring
八、爲了防止從新被安裝建立一個空的done文件
touch /var/lib/ceph/mon/ceph-node1/done
九、建立一個空的初始化文件
touch /var/lib/ceph/mon/ceph-node1/upstart
十、啓動ceph進程
(1)ceph-mon -i node1 #用命令方式啓動,也能夠用腳本方式啓動,目前我還沒實現腳本方式啓動,後續會更新。
(2)腳本方式啓動
systemctl enable ceph-mon.target #使能mon的target
cd /etc/systemd/system/multi-user.target.wants
ln -s /lib/systemd/system/ceph-mon@.service ./ceph-mon@node1.service #創建啓動配置文件
systemctl start ceph-mon@node1.service #啓動node1節點上的mon進程
vim /etc/ceph/ceph.conf #修改ceph的配置文件添加osd_crush_update_on_start = false選項
vim /lib/systemd/system/ceph-mon@.service #修改啓動配置文件把setusr 修改爲想用的用戶名
十一、 mkdir -p /var/lib/ceph/bootstrap-osd/
ceph auth get-or-create client.bootstrap-osd mon 'allow profile bootstrap-osd'
ceph auth get client.bootstrap-osd -o /var/lib/ceph/bootstrap-osd/ceph.keyring # 在node1建立一個boot引導啓動osd的key
一、複製node1節點的/etc/ceph目錄到node2
scp /etc/ceph/* node2:/etc/ceph/
二、在node2節點上新建一個/var/lib/ceph/bootstrap-osd/目錄
mkdir /var/lib/ceph/bootstrap-osd/
三、複製node1節點上的/var/lib/ceph/bootstrap-osd/ceph.keyring文件到node2
scp /var/lib/ceph/bootstrap-osd/ceph.keyring node2:/var/lib/ceph/bootstrap-osd/
四、複製node1節點上的/tmp/ceph.mon.keyring
scp /tmp/ceph.mon.keyring node2:/tmp/
五、在node2節點上創建一個/var/lib/ceph/mon/ceph-node2目錄
mkdir -p /var/lib/ceph/mon/ceph-node2
六、在node2節點上初始化mon節點,執行下面的命令
ceph-mon --mkfs -i node2 --keyring /tmp/ceph.mon.keyring
七、爲了防止從新被安裝建立一個空的done文件
touch /var/lib/ceph/mon/ceph-node2/done
八、建立一個空的初始化文件
touch /var/lib/ceph/mon/ceph-node2/upstart
九、啓動ceph進程
ceph-mon -i node2
十、查看集羣狀態
ceph -s #如今因爲沒有osd集羣狀態是不可用的
在node1節點添加3個osd,在node2節點添加3個osd
一、建立一個OSD,生成一個osd number
ceph osd create
輸出0
二、爲osd節點建立一個osd目錄
mkdir -p /var/lib/ceph/osd/ceph-0
三、格式化已準備好的osd硬盤(格式化爲xfs格式)
mkfs.xfs -f /dev/sdb
四、掛在目錄
mount -o user_xattr /dev/sdb /var/lib/ceph/osd/ceph-0
把掛載信息寫入分區表
五、初始化osd數據目錄
ceph-osd -i 0 --mkfs --mkkey
六、註冊osd的認證密鑰
ceph auth add osd.0 osd 'allow *' mon 'allow profile osd' -i /var/lib/ceph/osd/ceph-0/keyring
七、爲此osd節點建立一個crush map
ceph osd crush add-bucket node1 host
八、把node1 bucket 移到 root bucket下
ceph osd crush move node1 root=default
九、給node1 bucket 增長一個設備
ceph osd crush add osd.0 1.0 host=node1
十、在node1節點中建立啓動文件
touch /var/lib/ceph/osd/ceph-0/upstart
十一、啓動osd進程
(1)命令行方式啓動
ceph-osd -i 0 #命令方式啓動
(2)腳本方式啓動
systemctl enable ceph-osd.target #使能ceph-osd.target
cd /etc/systemd/system/multi-user.target.wants
ln -s /lib/systemd/system/ceph-osd@.service ./ceph-osd@0.service #建立啓動配置文件
systemctl start ceph-osd@0.service #啓動osd.0進程
vim /etc/ceph/ceph.conf #修改ceph的配置文件添加osd_crush_update_on_start = false選項
vim /lib/systemd/system/ceph-mon@.service #修改啓動配置文件把setusr 修改爲想用的用戶名
十一、在node1節點上依次執行上面的啓動另外兩個osd進程
note:因爲在node1節點上建立第一個osd進程的時候,已經在crushmap中建立了node1 bucket 並移到了root bucket下因此在建立另外兩個osd進程的時候不須要執行七、8步驟。
一、在node2節點已經有ceph.conf和ceph.client.admin.keyring 文件因此不須要從node1節點拷貝。
二、建立一個OSD,生成一個osd number
ceph osd create
輸出 1
三、爲osd節點建立一個osd目錄
mkdir -p /var/lib/ceph/osd/ceph-1
四、格式化已準備好的osd硬盤(格式化爲xfs格式 )
mkfs.xfs -f /dev/sdb
五、 掛在目錄
mount -o user_xattr /dev/sdb /var/lib/ceph/osd/ceph-1
把上面的掛載信息寫入分區表
六、 初始化osd數據目錄
ceph-osd -i 1 --mkfs --mkkey
七、 註冊osd的認證密鑰
ceph auth add osd.1 osd 'allow *' mon 'allow profile osd' -i /var/lib/ceph/osd/ceph-1/keyring
八、爲此osd節點建立一個crush map
ceph osd crush add-bucket node2 host
九、把node2 bucket 移到root bucket下
ceph osd crush move node2 root=default
十、在node2 bucket下添加osd設備
ceph osd crush add osd.1 1.0 host=node2
十一、 建立一個初始化目錄
touch /var/lib/ceph/osd/ceph-1/upstart
十二、 啓動osd進程
ceph-osd -i 1
1三、在node2節點按照以上方法啓動其他兩個osd進程。
note:參照node1節點上的操做
目前官網推薦jewel版的ceph集羣中只部署一個active mds進程,如下只部署一個mds進程
一、爲mds元數據服務器建立一個目錄
mkdir -p /var/lib/ceph/mds/ceph-node1
二、 爲bootstrap-mds客戶端建立一個密鑰
mkdir -p /var/lib/ceph/mds/bootstrap-mds
ceph-authtool --create-keyring /var/lib/ceph/bootstrap-mds/ceph.keyring --gen-key -n client.bootstrap-mds
三、 在ceph auth庫中建立bootstrap-mds客戶端,賦予權限添加以前建立的密鑰
ceph auth add client.bootstrap-mds mon 'allow profile bootstrap-mds' -i /var/lib/ceph/bootstrap-mds/ceph.keyring
四、在root家目錄裏建立ceph.bootstrap-mds.keyring文件
touch /root/ceph.bootstrap-mds.keyring
五、把keyring /var/lib/ceph/bootstrap-mds/ceph.keyring裏的密鑰導入家目錄下的ceph.bootstrap-mds.keyring文件裏
ceph-authtool --import-keyring /var/lib/ceph/bootstrap-mds/ceph.keyring /root/ceph.bootstrap-mds.keyring
六、在ceph auth庫中建立mds.node1用戶,並賦予權限和建立密鑰,密鑰保存在/var/lib/ceph/mds/ceph-node1/keyring文件裏
ceph --cluster ceph --name client.bootstrap-mds --keyring /var/lib/ceph/bootstrap-mds/ceph.keyring auth get-or-create mds.node1 osd 'allow rwx' mds 'allow' mon 'allow profile mds' -o /var/lib/ceph/mds/ceph-node1/keyring
七、爲mds建立一個初始化文件用於啓動使用(此文件爲空文件)
touch /var/lib/ceph/mds/ceph-node1/upstart
八、爲了防止從新被安裝建立一個空的done文件
touch /var/lib/ceph/mds/ceph-node1/done
九、啓動mds進程
ceph-mds -i node1 #命令方式啓動mds進程
10.查找cephfs中文件所在的位置
stat -c %i {filepath} #查詢文件的inode
rados -p {data-pool} ls | grep {hex-inode} #查詢屬於該文件的有那些對象
ceph osd map {data-pool} {object-num} #查詢該對象所在的osd
至此ceph一個簡單的ceph集羣部署完成
參考:http://boris05.blog.51cto.com/1073705/1439874