0.準備條件:node
三個ceph節點(node1,node2,node3),一個客戶端節點(client)分別安裝NTP和ceph-deploy。docker
node1能夠免密ssh到node2,node3.每一個ceph節點上掛3個空白磁盤。bash
1.啓動三個ceph節點服務器
apt install ceph-deploy -y
2.在node1上執行,建立一個ceph集羣網絡
mkdir /etc/ceph ; cd /etc/ceph ceph-deploy new node1
3.使用ceph-deploy在全部節點上安裝cephssh
ceph-deploy install node1 node2 node3 #保證node1節點能夠ssh免密登陸node1,node2,node3
4.在ceph-node1上建立一個Ceph monitor日誌
ceph-depoly mon create-initial
5.建立Ceph OSD,sdb,sdc,sdd爲節點上掛的空白磁盤:code
#刪除磁盤現有分區表和磁盤內容 ceph-deploy disk zap node1:sdb node1:sdc node1:sdd #準備磁盤,先用XFS文件系統格式化磁盤,而後激活第一第二分區分別做爲數據分區和日誌分區 ceph-deploy osd create node1:sdb node1:sdc node1:sdd #查看osd個數 ceph -s
6.在node1上將公共網絡地址添加到/ect/ceph/ceph.conform
public network = 192.168.xx.xx/24it
7.在node2和node3上建立Monitor:
ceph-deploy mon create node2 ceph-deploy mon create node3
8.在node2和node3上重複第五步
9.調整pg_num和pgp_num
ceph osd pool set rbd pg_num 256 ceph osd pool set rbd pgp_num 256
10.遇到
$ rbd map docker_test --name client.admin rbd: sysfs write failed RBD image feature set mismatch. You can disable features unsupported by the kernel with "rbd feature disable". In some cases useful info is found in syslog - try "dmesg | tail" or so.
緣由:
rbd鏡像的一些特性,OS kernel並不支持,因此映射失敗。咱們查看下該鏡像支持了哪些特性。
$ rbd info docker_test rbd image 'docker_test': size 4096 MB in 1024 objects order 22 (4096 kB objects) block_name_prefix: rbd_data.43702ae8944a format: 2 features: layering, exclusive-lock, object-map, fast-diff, deep-flatten flags:
能夠看到特性feature一欄,因爲我OS的kernel只支持layering,其餘都不支持,因此須要把部分不支持的特性disable掉。
方法一:
直接diable這個rbd鏡像的不支持的特性:
$ rbd feature disable docker_test exclusive-lock object-map fast-diff deep-flatten
方法二:
建立rbd鏡像時就指明須要的特性,如:
$ rbd create --size 4096 docker_test --image-feature layering
方法三:
若是還想一勞永逸,那麼就在執行建立rbd鏡像命令的服務器中,修改Ceph配置文件/etc/ceph/ceph.conf,在global section下,增長
rbd_default_features = 1