本文主要介绍如何在搭建好的Ceph环境上创建RBD以及如何创建CephFS。
创建RBD并将其挂载到操作系统
1、创建rbd使用的pool
1 | #32 32: PG数和PGP数(PG内包含的对象);PG会随着容量的增加也会动态的扩容;生产上需要提前规划好数量 |
2、创建一个10G的块设备
1 | rbd create --size 10240 image01 |
3、查看块设备
1 | rbd ls |
4、禁用当前系统内核不支持的feature
1 | rbd feature disable image01 exclusive-lock, object-map, fast-diff, deep-flatten |
5、将块设备映射到系统内核
1 | rbd map image01 |
6、格式化块设备镜像
1 | mkfs.xfs /dev/rbd0 |
7、mount到本地
1 | mount /dev/rbd0 /mnt |
8、创建文件并查看
1 | [root@cephnode01 my-cluster]# touch /mnt/{a..g}lcx.txt |
9、取消块设备和内核映射
1 | umount /mnt |
10、删除RBD块设备
1 | rbd rm image01 |
如果想在其他机器上使用ceph块设备需要下载ceph-common客户端
创建CephFS
启动MDS(MDS是CephFS使用的元数据管理服务)
创建CephFS需要MDS,首先介绍MDS的启动:
1. 创建mds存放目录
1 | mkdir -p /var/lib/ceph/mds/{cluster-name}-{id} |
2. 创建keyring
1 | ceph-authtool --create-keyring /var/lib/ceph/mds/{cluster-name}-{id}/keyring --gen-key -n mds.{id} |
3. 导入keyring并设置权限
1 | ceph auth add mds.{id} osd "allow rwx" mds "allow" mon "allow profile mds" -i /var/lib/ceph/mds/{cluster}-{id}/keyring |
4. 添加到ceph.conf
1 | [mds.{id}] |
5. 安装ceph-mds(原文档少了这一步,执行下一步就会启动不成功,因为找不到ceph-mds)
1 | apt-get install ceph-mds |
6. 手动启动进程或者直接用systemctl启动
1 | systemctl start ceph-mds@jchuan-ceph-1 |
创建启用CephFS
Ceph文件系统至少需要两个RADOS池,一个用于数据,一个用于元数据
1. 创建数据pool
1 | ceph osd pool create cephfs_data 256 256 |
2. 创建Metadata池
1 | ceph osd pool create cephfs_metadata 128 128 |
3. 启用pool
1 | ceph fs new cephfs cephfs_metadata cephfs_data |
4. 挂载CephFS
挂载CephFS可以使用FUSE client或者kernel client(挂载cephfs有两种方式,kernel driver和fuse):
FUSE client是最容易访问的,也是最容易升级到存储集群使用的Ceph版本的,而kernel client能够提供更好的性能。
当遇到bug或者性能问题时,尝试使用其他客户端通常是有指导意义的,以便查明bug是否属于特定的客户端(然后让开发人员知道)。
挂载CephFS前的通用先决条件:
在挂载CephFS前,确保client机器(将挂载和使用CephFS的那台机器)有一份Ceph配置文件的复本(即ceph.conf)以及一个CephX用户有权限访问MDS的keyring。这两个文件必须已经存在于Ceph MON所在的主机上。
(1)为客户端主机生成一个最小的conf文件,并将其放在一个标准位置(如果已经存在ceph.conf就忽略该步骤):1
2
3# on client host
mkdir -p -m 755 /etc/ceph
ssh {user}@{mon-host} "sudo ceph config generate-minimal-conf" | sudo tee /etc/ceph/ceph.conf
(2)调整配置文件的权限1
chmod 644 /etc/ceph/ceph.conf
(3) 创建一个CephX用户并获取其密钥1
ssh {user}@{mon-host} "sudo ceph fs authorize cephfs client.foo / rw" | sudo tee /etc/ceph/ceph.client.foo.keyring
在上面的命令中,用你自己的CephFS的名字取代“cephfs”
1 | 创建完成后可以通过ceph auth list 查看keyring跟文件里面是否一致,权限是否正常 |
(4) 用kernel driver挂载CephFS1
2mkdir /mnt/mycephfs
mount -t ceph :/ /mnt/mycephfs -o name=foo
使用ceph-fuse挂载参考文档:https://docs.ceph.com/en/latest/cephfs/mount-using-fuse/
遇到的错误及解决办法
遇到错误“unable to get monitor info from DNS SRV with service name: ceph-mon”
原因:配置文件ceph.conf中没有相关的配置信息
解决办法:去其他正常节点拷贝一份配置文件过来即可遇到错误“[errno 2] error connecting to the cluster”
解决办法:在其他可以执行该命令的节点上找到ceph.client.admin.keyring
find / -name ceph.client.admin.keyring
把该文件拷贝一份到报错节点即可。