我们继续上一小节的配置,进行ceph块存储客户端的安装以及块设备映射

首先在ceph1管理节点上创建ceph块客户端用户名和认证密钥

ceph auth get-or-create client.rbd(用户名称)  mon 'allow r'(对mon组件进行授权) osd 'allow class-read object_prefix rbd_children,allow rwx pool=rbd(默认的存储池)'  |  tee  /etc/ceph/ceph.client.rbd.keyring     //将认证密钥保存到 /etc/ceph目录下的ceph.client.rbd.keyring文件中 
将客户端用户的认证密钥及配置文件拷贝到客户端主机
scp  /etc/ceph/ceph.conf   /etc/ceph/ceph.client.rbd.keyring   root@client:/etc/ceph/
检查客户端主机内核是否支持rbd模块
modprobe rbd    //这里要注意linux内核在3.11版本以后默认才支持rbd模块

安装ceph客户端

在客户端主机上支持以下命令
wget -O /etc/yum.repos.d/ceph.repo https://raw.githubusercontent.com/aishangwei/ceph-demo/master/ceph-deploy/ceph.repo      下载ceph.repo镜像源
yum install -y ceph       //下载ceph需要使用epel源
ceph -s --name client.rbd     //查看集群的整体情况

Ceph块存储客户端的安装及块设备映射_第1张图片

块设备的创建及映射
ceph集群中默认创建的块设备会在rbd池中创建,但是使用deploy的安装方式部署的集群,rbd池默认不创建

在ceph1控制节点上创建存储池跟块设备
ceph  osd  lspools            //查看集群存储池信息
ceph  osd  pool create rbd 512      //512为(pg num值)
确定pg num取值是强制性的,因为不能自动计算。下面是几个常用的值:
    少于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 10240  --name client.rbd
rbd ls -p rbd --name client.rbd                //查看存储池的信息
rbd --image rbd1 info --name client.rbd  //查看存储块的信息

Ceph块存储客户端的安装及块设备映射_第2张图片
映射块设备
rbd map --image rbd1 --name client.rbd
在执行此命令时会出现如下的错误

Ceph块存储客户端的安装及块设备映射
这是因为Linux3.11版本的内核不支持对象映射(object-map)、深平(deep-flatten)和快速diff(fast-diff).为了解决这个问题,这里禁用不支持的特性

有三种方式可以禁用这些功能特性
1)动态禁用
在客户端主机上执行此命令
rbd feature disable rbd1 exclusive-lock object-map deep-flatten fast-diff  --name client.rbd
2)创建RBD镜像时,只启动分层特性
rbd create rbd2 --size 10240 --images-feature layering --name client.rbd
3)ceph配置文件中禁用
rbd_default_features=1
这里我们使用第一种方式进行临时禁用
rbd feature disable rbd1 exclusive-lock object-map deep-flatten fast-diff  --name client.rbd
继续在客户端上进行映射
rbd map --image rbd1 --name client.rbd
显示:/dev/rbd0
rbd showmapped --name client.rbd  //查看客户端rbd信息
fdisk -l /dev/rbd0  //查看块存储设备磁盘
mkfs.xfs /dev/rbd0
mkdir /mnt/ceph-disk1
mount /dev/rbd0  /mnt/ceph-disk1
df -h /mnt/ceph-disk1

Ceph块存储客户端的安装及块设备映射

写入数据测试
dd if=/dev/zero of=/mnt/ceph-disk1/file1 count=100 bs=1M
做成服务,开机自动挂载
wget -O /usr/local/bin/rbd-mount https://raw.githubusercontent.com/aishangwei/ceph-demo/master/client/rbd-mount
chmod +x /usr/local/bin/rbd-mount

更改脚本的配置信息
在下载的脚本中找到如下信息并将/etc/ceph后面的用户认证密钥改成自己的认证密钥
rbd map $rbdimage --id rbd --keyring  /etc/ceph/ceph.client.rbd.krying

Ceph块存储客户端的安装及块设备映射_第3张图片

下载服务自动启动脚本
wget -O /etc/systemd/system/rbd-mount.service https://raw.githubusercontent.com/aishangwei/ceph-demo/master/client/rbd-mount.service

systemctl daemon-reload
systemctl enable rbd-mount

umount /mnt/ceph-disk1  //卸载挂载的块存储
systemctl start rbd-mount    //启动自动挂载服务进行验证
ll /mnt/ceph-disk1   //查看是否挂载成功