当我们安装完ceph集群后,集群外的机器想使用Ceph集群内创建的rbd文件。那么,就需要安装Ceph的客户端,也就是rbd客户端,以及一些RBD专用的内核模块。
步骤也相对简单,关于集群搭建,以及ceph原理可以看下面的文章,此处不过多介绍安装和原理部分
Ceph基础知识和基础架构
新闻联播老司机
Ceph-deploy 快速部署Ceph集群
新闻联播老司机
Kubernetes(k8s) 1.24 csi-ceph rbd使用手册
新闻联播老司机
环境信息
Ceph集群信息
[root@ceph-01 ~]# ceph -s cluster: id: c8ae7537-8693-40df-8943-733f82049642 health: HEALTH_OK services: mon: 3 daemons, quorum ceph-01,ceph-02,ceph-03 (age 6h) mgr: ceph-03(active, since 10h), standbys: ceph-01, ceph-02 mds: cephfs-abcdocker:1 cephfs:1 {cephfs-abcdocker:0=ceph-03=up:active,cephfs:0=ceph-02=up:active} 1 up:standby osd: 4 osds: 4 up (since 10h), 4 in (since 6w) rgw: 2 daemons active (ceph-01, ceph-02) task status: data: pools: 13 pools, 656 pgs objects: 7.16k objects, 25 GiB usage: 77 GiB used, 103 GiB / 180 GiB avail pgs: 656 active+clean io: client: 4.0 KiB/s wr, 0 op/s rd, 0 op/s wr
ceph版本
[root@ceph-01 ~]# ceph version ceph version 14.2.22 (ca74598065096e6fcbd8433c8779a2be0c889351) nautilus (stable)
创建Pool池
首先在ceph中我们需要创建一个新的pool池,pool名称为abcdocker_rbd
ceph osd pool create abcdocker_rbd 32 32 # 两个 32 指定的 pg 和 pgp 的数量 ceph osd pool application enable abcdocker_rbd rbd
检查是否创建成功
[root@ceph-01 ~]# ceph osd pool ls|grep rbd abcdocker_rbd
创建块设备
接下来我们需要创建一个rbd文件,这里使用layering
[root@ceph-01 ~]# rbd create abcdocker_rbd/linux_mount.img --size 2G --image-feature=layering #abcdocker_rbd 为pool名称 #linux_mount.img 为rbd文件名称 #--size rbd文件大小
此时我们通过rbd命令就可以看到这个img文件
[root@ceph-01 ~]# rbd ls abcdocker_rbd linux_mount.img
并且使用info参数可以看到这个rbd文件大小
[root@ceph-01 ~]# rbd info abcdocker_rbd/linux_mount.img rbd image 'linux_mount.img': size 2 GiB in 512 objects order 22 (4 MiB objects) snapshot_count: 0 id: 58fa764ce60a block_name_prefix: rbd_data.58fa764ce60a format: 2 features: layering op_features: flags: create_timestamp: Fri Jul 15 18:49:40 2022 access_timestamp: Fri Jul 15 18:49:40 2022 modify_timestamp: Fri Jul 15 18:49:40 2022
创建访问用户
创建一个普通用户,linux使用普通用户访问pool存储池
用户名称为lient.linux_mount授权pool为abcdocker_rbd
[root@ceph-01 ~]# ceph auth get-or-create client.linux_mount mon 'profile rbd' osd 'profile rbd pool=abcdocker_rbd' mgr 'profile rbd pool=abcdocker_rbd' [client.linux_mount] key = AQCHR9FiQIJVNhAATcyfD7+2yu0nJcBitZQwcQ==
导出信息为文件
[root@ceph-01 ~]# ceph auth get-or-create client.linux_mount -o ceph.client.linux_mount.keyring
将用户的ceph.client.linux_mount.keyring文件和ceph.conf文件复制到客户端的/etc/ceph目录,这个步骤可以等客户端安装完ceph-common
客户端配置
配置yum源
#配置centos、epeo、ceph源 curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo wget -O /etc/yum.repos.d/ceph.repo http://down.i4t.com/ceph/ceph.repo yum clean all yum makecache
安装依赖以及ceph-common
[root@abcdocker ~]# yum install -y python-setuptools ceph-common
到ceph节点中拷贝ceph.client.linux_mount.keyring文件和ceph.conf
[root@ceph-01 ~]# scp ceph.client.linux_mount.keyring root@192.168.31.73:/etc/ceph/ [root@ceph-01 ~]# scp /etc/ceph/ceph.conf root@192.168.31.73:/etc/ceph/
拷贝完成后,我们就可以去客户端执行命令,检查是否可以获取到rbd信息
[root@abcdocker ~]# rbd list --id linux_mount -p abcdocker_rbd linux_mount.img
客户端挂载
将远端的RBD文件映射到本地
[root@abcdocker ~]# rbd map abcdocker_rbd/linux_mount.img --id linux_mount /dev/rbd0
查看rbd映射的信息
[root@abcdocker ~]# rbd showmapped id pool namespace image snap device 0 abcdocker_rbd linux_mount.img - /dev/rbd0
格式化并挂载
[root@abcdocker ~]# mkfs.ext4 /dev/rbd0 #这里要看上面映射出来的地址 [root@abcdocker ~]# mkdir /data [root@abcdocker ~]# mount /dev/rbd0 /data/
查看挂载结果
[root@abcdocker ~]# df -h Filesystem Size Used Avail Use% Mounted on /dev/mapper/centos-root 36G 9.4G 27G 27% / devtmpfs 3.9G 0 3.9G 0% /dev tmpfs 3.9G 0 3.9G 0% /dev/shm tmpfs 3.9G 8.7M 3.9G 1% /run tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup /dev/mapper/centos-home 18G 33M 18G 1% /home /dev/sda1 1014M 143M 872M 15% /boot tmpfs 783M 0 783M 0% /run/user/1000 tmpfs 783M 0 783M 0% /run/user/0 /dev/rbd0 2.0G 6.0M 1.8G 1% /data
编辑/etc/ceph/rbdmap文件,设置自动map
方便开机启动自动挂载
echo "abcdocker_rbd/linux_mount.img id=linux_mount,keyring=/etc/ceph/ceph.client.linux_mount.keyring " >>/etc/ceph/rbdmap #abcdocker_rbd 为pool名称 #linux_mount.img 为rbd文件 #keyring 为之前同步的client key #id 为rbd用户
设置rbdmap为开机启动
systemctl enable rbdmap
修改fstab,设置开机挂载
[root@abcdocker ~]# echo "/dev/rbd0 /data ext4 defaults,noatime,_netdev 0 0" >>/etc/fstab [root@abcdocker ~]# cat /etc/fstab #检查
重启主机,测试开机是否自动map并挂载设备成功
启动连接一切OK
扩容
随着我们存储增多,后续可能需要扩容,扩容目前只需要两条简单的命令即可
rbd resize abcdocker_rbd/linux_mount.img --id linux_mount --size 10G resize2fs /dev/rbd0 #如果我们想在客户端扩容,需要添加pool/rbd镜像,以及--id 添加用户,以及需要扩容的空间
扩容后
相关文章:
- [“脏牛(Dirty Cow)”漏洞]CVE-2016-5195:Linux 内核本地提权漏洞 通告及修复
- 使用ReadtheDocs搭建属于自己的博客
- Linux 用户登陆服务器微信告警
- Ceph基础知识和基础架构