Linux客户端远程挂载Ceph RBD并设置开机启动自动挂载

2023年 5月 4日 38.1k 0

当我们安装完ceph集群后,集群外的机器想使用Ceph集群内创建的rbd文件。那么,就需要安装Ceph的客户端,也就是rbd客户端,以及一些RBD专用的内核模块。
步骤也相对简单,关于集群搭建,以及ceph原理可以看下面的文章,此处不过多介绍安装和原理部分

Ceph基础知识和基础架构

新闻联播老司机

  • 22年2月18日
  • 喜欢:0
  • 浏览:1.1k
  • Ceph-deploy 快速部署Ceph集群

    新闻联播老司机

  • 22年2月18日
  • 喜欢:1
  • 浏览:1.6k
  • Kubernetes(k8s) 1.24 csi-ceph rbd使用手册

    新闻联播老司机

  • 22年6月3日
  • 喜欢:0
  • 浏览:1.6k
  • 环境信息

    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

    1657889926782.png
    查看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用户

    1657961401500.png
    设置rbdmap为开机启动

    systemctl enable rbdmap

    修改fstab,设置开机挂载

    [root@abcdocker ~]# echo "/dev/rbd0  /data               ext4     defaults,noatime,_netdev 0 0" >>/etc/fstab
    
    [root@abcdocker ~]# cat /etc/fstab  #检查

    1657961526145.png
    重启主机,测试开机是否自动map并挂载设备成功1657961590242.png
    启动连接一切OK
    1657961929573.png

    扩容

    随着我们存储增多,后续可能需要扩容,扩容目前只需要两条简单的命令即可

    rbd resize abcdocker_rbd/linux_mount.img --id  linux_mount  --size 10G
    resize2fs /dev/rbd0
    
    #如果我们想在客户端扩容,需要添加pool/rbd镜像,以及--id 添加用户,以及需要扩容的空间

    扩容后1657962110038.png

    相关文章:

    1. [“脏牛(Dirty Cow)”漏洞]CVE-2016-5195:Linux 内核本地提权漏洞 通告及修复
    2. 使用ReadtheDocs搭建属于自己的博客
    3. Linux 用户登陆服务器微信告警
    4. Ceph基础知识和基础架构

    相关文章

    服务器端口转发,带你了解服务器端口转发
    服务器开放端口,服务器开放端口的步骤
    产品推荐:7月受欢迎AI容器镜像来了,有Qwen系列大模型镜像
    如何使用 WinGet 下载 Microsoft Store 应用
    百度搜索:蓝易云 – 熟悉ubuntu apt-get命令详解
    百度搜索:蓝易云 – 域名解析成功但ping不通解决方案

    发布评论