次文档是和上一篇ceph-deploy部署ceph文档链接写的,环境都是一个环境
Cat /etc/yum.repos.d/ceph.repo
[ceph]
name=ceph
baseurl=https://mirrors.aliyun.com/ceph/rpm-luminous/el7/x86_64/
gpgcheck=0
priority=0
[ceph-noarch]
name=cephnoarch
baseurl=https://mirrors.aliyun.com/ceph/rpm-luminous/el7/noarch/
gpgcheck=0
priority=0
[ceph-source]
name=Ceph source packages
baseurl=https://mirrors.aliyun.com/ceph/rpm-luminous/el7/SRPMS
enabled=0
gpgcheck=1
type=rpm-md
gpgkey=https://mirrors.aliyun.com/ceph/keys/release.asc
priority=1
[root@k8s-master ~]# yum install -y ceph #装ceph为的是装rbd命令
[cephadmin@ceph-1 my-cluster]$ ceph auth get-or-create client.rbd mon ‘allow r‘ osd ‘allow class-read object_prefix rbd_children,allow rwx pool=rbd‘|tee ./ceph.client.rbd.keyring
[cephadmin@ceph-1 my-cluster]$ scp ceph.client.rbd.keyring /etc/ceph/ceph.conf root@10.0.23.130:/etc/ceph
到客户端10.0.23.130上查看:
在客户端执行ceph –s报错需要执行用户名
[root@k8s-master ~]# ceph -s --name client.rbd
默认创建块设备,会直接创建在rbd 池中,但使用deploy安装后,该rbd池并没有创建。
$ ceph osd lspools //查看集群存储池
$ ceph osd pool create rbd 64 #创建 名为rbd的池 指定pg为64
确定pg_num 取值是强制性的,因为不能自动计算。下面是几个常用的值(总的pg):
? 少于5个OSD 时可把pg_num设置为 128
? OSD 数量在5 到10个时,可把 pg_num 设置为512
? OSD 数量在10到 50个时,可把pg_num 设置为4096
? OSD 数量大于50时,你得理解权衡方法、以及如何自己计算pg_num 取值
可以在服务端创建也可以在客户端创建,已经给客户端权限,我这里在客户端操作
rbd create rbd1 --size 2048 --name client.rbd #创建大小3G的 rbd1块设备
查看创建的块设备
rbd ls --name client.rbd
也可以指定池查看
rbd ls -p rbd -n client.rbd
列表形式查看
rbd list -n client.rbd
查看块设备的详细信息
rbd --image rbd1 info --name client.rbd
映射到客户端,会报错
rbd map --image rbd1 --name client.rbd
使用krbd(内核rbd)的客户端进行快速diff计算(需要对象映射),我们将无法在CentOS内核3.10上 映射块设备映像,因为该内核不支持对象映射(object-map)、深平(deep-flatten)和快速diff(fastdiff)(在内核4.9中引入了支持)。为了解决这个问题,我们将禁用不支持的特性,有几个选项可以 做到这一点
禁用的三种方法:
2 动态禁用
rbd feature disable rbd1 exclusive-lock object-map deep-flatten fast-diff --name client.rbd
2 创建RBD镜像时,之启用分层特性
Rbd create rbd1 –size 2048 –image-feature Layering –name client.rbd
2 Ceph配置文件中禁用
Rbd_default_reatures = 1
因我们已经创建了池 rbd1 所以使用动态禁用
[root@k8s-master ~]# rbd feature disable rbd1 exclusive-lock object-map deep-flatten fast-diff --name client.rbd
再次映射,看到映射的设备
[root@k8s-master ~]# rbd map --image rbd1 --name client.rbd
查看映射关系
[root@k8s-master ~]# rbd showmapped --name client.rbd
1.2.4.3 创建文件系统并挂载
格式化:
[root@k8s-master ~]# mkfs.xfs /dev/rbd0
创建挂载点:
[root@k8s-master ~]# mkdir /ceph-dsik1
Mount挂载:
[root@k8s-master ~]# mkdir /ceph-dsik1
[root@k8s-master ~]# mount /dev/rbd0 /ceph-dsik1
写数据测试
[root@k8s-master ~]# dd if=/dev/zero of=/ceph-dsik1/testfiel count=100 bs=1M
vim /usr/local/bin/rbd-mount
#!/bin/bash
#池名称存储块设备映射的位置
#!/bin/bash
#池名称存储块设备映射的位置
export poolname=rbd
#磁盘映射名称
export rbdimage=rbd1
#mount directory
export mountpoint=/ceph-dsik1
#image mount / umount 和pool作为参数从systemd服务传递
if [ "$1" == "m" ];then
modprobe rbd
rbd feature disable $rbdimage object-map deep-flatten fast-diff
rbd map $rbdimage --id rbd --keyring /etc/ceph/ceph.client.rbd.keyring
mkdir -p $mountpoint
mount /dev/rbd/$poolname/$rbdimage $mountpoint
fi
if [ "$1" == "u" ]; then
umount $mountpoint
rbd unmap /dev/rbd/$poolname/$rbdname
fi
~
[root@k8s-master ceph-dsik1]# chmod +x /usr/local/bin/rbd-mount
配置服务脚本
[root@k8s-master ceph-dsik1]# vim /usr/lib/systemd/system/rbd-mount.service
[Unit]
Description=RADOS block device mapping for $rbdimage in pool $poolname
Conflicts=shutdown.target
Wants=network-online.target
After=NetworkManager-wait-online.service
[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/usr/local/bin/rdb-mount m
ExecStop=/usr/local/bin/rdb-mount u
[Install]
[root@k8s-master ceph-dsik1]# systemctl daemon-reload
[root@k8s-master ceph-dsik1]# systemctl enable rdb-mount.service
注意: 先测试一下服务是否可用,不要冒然的重启主机测试
原文:https://www.cnblogs.com/houchaoying/p/14440762.html