Ceph——手动部署(单节点)

启动Monitor

1. 创建配置文件目录

mkdir /etc/ceph		//ceph默认目录

2. 创建配置文件

sudo vim /etc/ceph/ceph.conf		//这是ceph默认目录,也可根据根据集群名称更改

3. 运行命令生成唯一ID

uuidgen		//d02db92c-0111-4b9b-a1a5-fdc9a7a3282a

4. 将唯一ID写入配置文件

fsid = {UUID}

例如:

fsid = d02db92c-0111-4b9b-a1a5-fdc9a7a3282a

5. 将初始监视器写入配置文件

mon initial members = {hostname}[,{hostname}]

例如:

mon initial members = ceph-admin

6. 把初始监视器的 IP 地址写入配置文件

mon host = {ip-address}[,{ip-address}]

例如:

mon host = 192.168.0.1

7. 创建密钥环、并生成监视器密钥。

ceph-authtool --create-keyring /tmp/ceph.mon.keyring --gen-key -n mon. --cap mon 'allow *'

8. 生成管理员密钥环,生成 client.admin 用户并加入密钥环

ceph-authtool --create-keyring /etc/ceph/ceph.client.admin.keyring --gen-key -n client.admin --set-uid=0 --cap mon 'allow *' --cap osd 'allow *' --cap mds 'allow'

9. 把 client.admin 密钥加入 ceph.mon.keyring

ceph-authtool /tmp/ceph.mon.keyring --import-keyring /etc/ceph/ceph.client.admin.keyring

10. 用规划好的主机名、对应 IP 地址、和 FSID 生成一个监视器图,并保存为 /tmp/monmap

monmaptool --create --add {hostname} {ip-address} --fsid {uuid} /tmp/monmap

例如:

monmaptool --create --add ceph-admin 192.168.0.1 --fsid d02db92c-0111-4b9b-a1a5-fdc9a7a3282a /tmp/monmap

11. 在监视器主机上创建数据目录

sudo mkdir /var/lib/ceph/mon/{cluster-name}-{hostname}

例如:

sudo mkdir -p /var/lib/ceph/mon/ceph-ceph-admin

12. 用监视器图和密钥环组装守护进程所需的初始数据

ceph-mon [--cluster {cluster-name}] --mkfs -i {hostname} --monmap /tmp/monmap --keyring /tmp/ceph.mon.keyring

例如:

ceph-mon --mkfs -i ceph-admin --monmap /tmp/monmap --keyring /tmp/ceph.mon.keyring

13. 经过上面配置,配置文件大致如下:

[global]
fsid = d02db92c-0111-4b9b-a1a5-fdc9a7a3282a
mon initial members = ceph-admin
mon host = 192.168.0.1
public network = 192.168.0.0/24
auth cluster required = none
auth service required = none
auth client required = none
osd journal size = 1024
filestore xattr use omap = true
osd pool default size = 2
osd pool default min size = 1
osd pool default pg num = 128
osd pool default pgp num = 128
osd crush chooseleaf type = 0

14. 建一个空文件,表示监视器已创建、可以启动

sudo touch /var/lib/ceph/mon/ceph-ceph-admin/done

15. 启动监视器

ceph-mon --id=ceph-admin

16. 验证下 Ceph 是否正常启动

ceph osd lspools
可能出现的问题:
ImportError: No module named rados

缺少rados的python模块,如下安装:

yum install python-rados
ImportError: No module named ceph_argparse

将源码编译路径ceph-fuse/src/pybind下的py文件移动到运行目录

输入如下:
0 rbd,		//10.2.11版本默认创建了一个pool

17. 确认集群在运行

ceph –s 或者 ceph status

添加OSD

18. 给 OSD 分配 UUID

uuidgen		//5d8e9843-9eba-484b-8cec-54e502f5688e

19. 使用上面生成的UUID创建 OSD

ceph osd create {uuid}

20. 创建默认目录

sudo mkdir /var/lib/ceph/osd/{cluster-name}-{osd-number}

例如:

sudo mkdir -p /var/lib/ceph/osd/ceph-0

21. 初始化 OSD 数据目录

sudo ceph-osd -i {osd-num} --mkfs --mkkey --osd-uuid [{uuid}]

例如:

sudo ceph-osd -i 0 --mkfs --mkkey --osd-uuid 5d8e9843-9eba-484b-8cec-54e502f5688e

22. 注册OSD 的密钥

sudo ceph auth add osd.{osd-num} osd 'allow *' mon 'allow profile osd' -i /var/lib/ceph/osd/{cluster-name}-{osd-num}/keyring

例如:

sudo ceph auth add osd.0 osd 'allow *' mon 'allow profile osd' -i /var/lib/ceph/osd/ceph-0/keyring

23. 把此节点加入 CRUSH map

ceph [--cluster {cluster-name}] osd crush add-bucket {hostname} host

例如:

ceph osd crush add-bucket ceph-admin host

24. 把此 Ceph 节点放入 default 根下

ceph osd crush move ceph-admin root=default

25. 把osd添加到CRUSH map开始接收数据

ceph [--cluster {cluster-name}] osd crush add {id-or-name} {weight} [{bucket-type}={bucket-name} ...]

例如:

ceph osd crush add osd.0 1.0 host=ceph-admin

26. 启动osd

ceph-osd --id=0

27. 查看Ceph集群

ceph osd tree
日志存放在/var/log/ceph下面,系统中如果没有此目录需手动创建

MDS

28. 创建mds工作目录

mkdir -p /var/lib/ceph/mds/ceph-admin

29. 注册mds的密钥

ceph auth get-or-create mds.ceph-admin mds 'allow *' osd 'allow rwx' mon 'allow profile mds' -o /var/lib/ceph/mds/ceph-admin/keyring

30. 启动mds进程

ceph-mds --cluster ceph --id ceph-admin --setuser root --setgroup root

存储池

31. 创建存储池

ceph osd pool create {pool-name} {pg-num} [{pgp-num}] [replicated] \
        [crush-ruleset-name] [expected-num-objects]
ceph osd pool create {pool-name} {pg-num}  {pgp-num}   erasure \
        [erasure-code-profile] [crush-ruleset-name] [expected_num_objects]

例如:

ceph osd pool create fsdata 128 128
ceph osd pool create fsmetadata 128 128

注意可能会报如下错误:

Error EINVAL: crushtool check failed with -22: crushtool: exec failed: (2) No such file or directory

解决方法:将crushtool模块移动到/usr/bin/目录下

32. 创建ceph文件系统

ceph fs new <fs_name> <metadata> <data>

例如:

ceph fs new cephfs fsmetadata fsdata

ok,到这里你就可以挂载文件系统了。。。

posted @ 2020-07-02 16:51  elon_wang  阅读(2273)  评论(0编辑  收藏  举报